Sproutcore documentation sucks ... doesn't it?

One of the complaints I hear most often about Sproutcore is that the documentation sucks. We've been evaluating it recently, and one of the major points against Sproutcore is that we found it quite difficult to find any decent documentation beyond the auto-generated JsDoc.

 

Feeling a bit lost, I jumped on IRC and headed to #sproutcore at Freenode. The IRC channel is fantastic. Two good Samaritans walked us through some of our questions, and provided two fantastic links to some much nicer, introductory documentation (links below). One of the gems I found during my visit to the chatroom was that a guy called Erich Ocean runs an app developer training course. This guy has an impressive track record with Sproutcore. Needless to say we signed up for it, so stay tuned to see how it goes!

TL;DR

Sproutcore VS jQuery + backbone.js

Hey guys, need some serious input, didn't want to write a blog post but /r/programming doesn't allow text posts.  

We have a team of two and building web based software for business environments.

What would you choose and why?

a) Latest version of Sproutcore ( or any recommended version )
b) jQuery + backbone.js ( throw in jQuery UI and a templating engine like Mustache and other external widgets )

My thoughts so far

I am leaning towards the later at the moment my most prominent reasons being.

- backbone.js is able to match most of the MVC benefits of SC whilst remaining super lightweight and no baggage
- jQuery UI and third party widgets are much more flexible e.g.

dataTables - http://www.datatables.net/styling/themes/smoothness
vs
SC Tableview - http://demo.sproutcore.com/table_view/

- the sheer community of jQuery vs SC, don't get me started on the documentation comparison

I will write more reasons why later but I would love to see if anyone has any input

Conclusion

Waiting on some valued feedback still.  All other suggestions would be great! Post them here, ycombinator or reddit.

Update 1

Just woke up to find all this awesome feedback.   KnockoutJs has got quite recommendations here and it would be great if somebody could summarize why.   Sproutcore has been getting quite bad reviews for its lack of documentation so my business partner who was researching Sproutcore just wrote an article summarizing his findings on the documentation(http://ryth.posterous.com/sproutcore-documentation-sucks-doesnt-it).   Backbone.js has also received mad reviews but i would like to know more about which current libraries it communicates well with.

Update 2

Back at hacker news(http://news.ycombinator.com/item?id=2119704) a lead developer of backbone.js has posted his thoughts on the question which followed in valuable debate with strong thoughts on both sides of the fence.

 

Kohana - Tips and Tricks

We chose to build our latest web application on a PHP framework called Kohana.   Kohana released a new version(v3) in 2009 that was actually built from the ground up which made the majority of the existing documentation redundant.    So the community and fan boys have been slowly been putting together new documentation for version 3.

The best documentation

To start with I will list some quick links to the best documentation I have found.

Kohana V3 - Official Userguide
Kohana V3 - API
Kohana V3 - Unofficial Userguide <- Better

Auth for Kohana V3

To access properties of an authenticated user simply

 Auth::instance()->get_user()->email;

ORM for Kohana V3

To join models(tables) on the fly use the with('model') statement e.g.

If you wanted to iterate through all students in your table plus join the schools table in at the same time use something like

$students = ORM::factory('students')->with('school')->find_all();
foreach($students as $student) {
   echo $student->school->name; //St Marys Private School

Routing Tutorial

 

Small Tips and Tricks

When editing views and templates, to make sure you always link to your media regardless of the page use the code below.

<img src="<?php echo URL::base(); ?>/media/image/stay_safe_yo.jpg" />

Create a new controller called base.php in the classes folder and paste the following code.  After you have done that extend any new controllers you create with Controller_Base instead of Controller.   This will now let you set code that can execute before and after all of your controller calls which is highly useful for authentication.

class Controller_Base extends Controller {

public function before() {

    }

public function after() {

}

To access the name of the current controller, request or any custom defined route parameter. Use 

$this->request->controller
$this->request->action
$this->request->route_parameter 

If you use a lot of ajax calls, Kohana can automatically detect if the current XHR is an ajax call by using is_ajax().  Implementing this method in a conditional statement can let you return different content for the same controller/action.

Thats its for now!

Will be adding more tips soon.  Keep it up Kohana!

Why I Don't Like Direct (Face-to-Face) Selling for Business Web Applications

Background

We are an Australian startup with two developers working on a B2B web application suite for small to medium businesses.

Why don't you agree with face to face selling?

  1. We are taking away time from product development, as we will have to stop developing and start selling (face-to-face). That means we can't iterate as quickly. We lose our momentum, and our ability to out-pace our competitors.
  2. We are essentially restricting ourselves to a consulting business model, where our revenue is simply a multiple of the salespeople we have.
  3. If we had invested that time in developing our automated customer acquisition methods rather than trying to sell directly, could we not lay the foundation for significantly higher rates of customer acquisition than selling "manually"?

Why do you think you have to take the automated selling approach? What is wrong with a more traditional sales model?

This is essentially a question of, do you want to take the perceived safe route or attempt to go for something bigger (which may not necessarily be riskier)?

The first option, "manual" selling, takes you down a path of salespeople. We only have two people available to work on our product. We have extremely limited resources. If we start selling face-to-face, we stop developing, we stop iterating and our product stagnates.

The second option, "automated" selling, gives you the opportunity to approach sales with a developmental frame of mind. What are our metrics? What can we improve? How can we improve these things? Plus, if follow an automated selling path, we essentially get instant feedback on what we are doing. This can be integrated into the product development process, rather than being a separate business function.

What if I'm not comfortable with a purely online customer acquisition model?

The only advantage we have is that we can move more quickly than anyone else. We can iterate faster, develop more quickly and that's about it.

We can't sell better face to face. We are far less funded. If we remove the only two developers from the project, we lose the only edge we have. We lose our only differentiating factor and our only chance at success. We can't beat them at their own game. We have to play our own game, where we set the rules. It's the only shot we have.

Glossary

Manual selling: Offline customer acquisition. Face to face selling. Arrange a meeting with a potential customer and physically demonstrate the product.

Automatic selling: Purely online customer acquisition.

Building a fully Ajaxian web application

Inspired by apps such as Gmail and GetClicky we decided to build the web application using pure ajax.   So far this has been quite easy using a jQuery plugin called BBQ created by Ben Alman.

jQuery BBQ - http://benalman.com/projects/jquery-bbq-plugin/

Once upon a time it was hard to build a website with history, bookmarking/linking and back button functionality and it was a con that far outweighed the pros of an ajax application.   But plugins such as jQuery BBQ came along and fried the cons of an ajax app.

Our application now enjoys the benefits of pure ajax

  • Less HTTP request
  • Minimized the size of requested pages
  • Very responsive and fast user interface
  • Requests are predominately JSON driven which allows us to build API calls easier
  • !Flash

Another jQuery library which deserves an honorable mention is DataTables

jQuery DataTables - http://www.datatables.net/

A must have for tabular data!

 

 

Clicky