Demo App Contest

Calling all developers - It’s time for a contest!

That’s right, a contest.  In order to really show off what SproutCore can do, and to help foster the growth of great SproutCore developers, we are looking for you to create the best demo app possible.  Rules?  Simple.  To enter:

  1. Must be built using SproutCore (of course)
  2. Must feel like a desktop app (you’ll find that easy to do when you follow rule #1)
  3. Just create a cool demo doing anything you like and host it somewhere online.
  4. Must be submitted to the wiki - (http://github.com/sproutit/sproutcore/wikis/sproutcore-demo-awards-1)
  5. Send an email to sproutcore@sproutitmail.com with your email address and the name of your entry
  6. OH, and must be completed by midnight on July 21.

Only 3 weeks!? That’s right.  3 weeks.  But, I think you will be surprised how fast you can put something together using SproutCore.  But, to win, your app must have that “wow” factor.  We will choose the top 4 apps and winners will be announced at the first SproutCore Founder’s Meetup on July 23.

So, what’s in it for me?  Glad you asked.

  • link from the SproutCore demos page to your app
  • a special badge to place on your website (hey, even chuck norris wore a badge)
  • free t-shirt …. you know you want it
  • chance to present your award winning app at the Founder’s Meetup
  • never ending glory and bragging rights!

Time to get to it.  We look forward to some great apps!

Another Great Mention - Sitepoint

Andrew Tetlaw, a Technical Editor at Sitepoint, decides to look at SporutCore to see just what it can do.

As a JavaScript fan I’m impressed; the interface performance is excellent. SproutCore raises the bar for what JavaScript can do in the browser.  Read More…

Model & Server Tutorials

By far the most requested addition for the SproutCore site over the last few days has been a tutorial describing how to interface with the server.  There is a lot to cover in this area, but you can already start to see some great material developing thanks to the hard work of several people including onitunes, stefanfoulis, methote and others.  Check these out to get some more info on how the backend works:

Check out these great tutorials, and chip in by improving them or adding more detail.  Just check out the Wiki Editing Guidelines to get started.  It’s very easy.

 

SproutCore 0.9.11 - “This one goes to 11″ release

Just a week after releasing the 0.9.10 release, we have a new gem for you called 0.9.11 or “This one goes to 11″.  This release includes a number of important bug fixes that have kept some of you from using SproutCore as well a few useful new features for integrating with a backend.  The bug fixes include:

  • Windows Support.  0.9.10 supported building SC apps for production on Windows machines but you couldn’t use it in dev mode.  Images and other static resources would be missing because the sc-server tool depended on a Unix-only symlink.  This is now fixed in 0.9.11 so no symlink is required.  0.9.11 should allow you to work completely in Windows now.  Please let us know if you run into more trouble.
  • Spaces in Volume Names.  If your install path (including the Volume Name) included spaces, this would break the build tools, especially the documentation engine.  Paths are now properly escaped so you can put the spaces back in your paths.  

Those are the fixes, now for the features.  

Introducing Proxy, by SproutCore

One of the most challenging parts of working with SproutCore in the past has been interacting with your backend server.  SproutCore apps are loaded using sc-server in dev mode an then communicate with your backend server using Ajax.  This architecture is one of the best things about SproutCore because you can use it with any backend technology.  However because of the same origin policy of web browsers, testing has always been a bit difficult because you had to setup a reverse proxy on your dev machine to proxy both SproutCore and backend traffic to the same domain.  If that sounds complicated, it is.

Now with 0.9.11 you can avoid all this because reverse proxy support is handled directly by sc-server.  Just add one line to your sc-config and you’re good to go.  Let’s say for example, you were working on a SproutCore application with a Rails backend.  You load your SproutCore app by visiting http://localhost:4020/myapp, but your Rails server is running on port 3000.  How does your application talk to the Rails server?

Simple, just add the following line to your sc-config.rb file and restart sc-server:

proxy '/rails', :to => 'localhost:3000'

Now any request your SproutCore app makes via XHR to /rails will be proxied by sc-server to your Rails app so you can talk to the backend.

This new feature is important because it makes the process of hooking your dev servers together into a format that resembles your production environment a one step process instead of dozens of steps involving apache like it did before.  

To put a cap on this new feature, we’ve added the beginnings of a new demo app to the samples project.  It’s a twitter client that right now will fetch the public feed of any user.  How does the client talk to twitter?  Well, if you look at the sc-config.rb file for the samples, you will see this line:

proxy '/', :to => 'twitter.com'

Done.

The forthcoming tutorials we are writing for tying a SproutCore app to a backend will explain how to use this feature in more detail but until then, for an example of tying your app to a backend, please see the Twitter client under development. 

Other Features/Fixes

There are some other great feature improvements in 0.9.11 including:

 

  • sc-server is now much faster thanks to some config changes to Merb.
  • The sc-server is now much more sane about how it handles sc-config.  You can now simply drop the latest sproutcore or prototype into your frameworks directory without having to edit the sc-config file and sc-server will pick up the latest version after you restart it.
  • Improved documentation for various classes.
  • Improved CSS appearance in FireFox 3 thanks to mde
  • Removed debugger statements that could cause problems on some platforms thanks to August.

Below is the full set of release notes for this new release, but it is recommended that everyone upgrade.  To upgrade your sproutcore just do:

sudo gem update sproutcore

In your shell.

Thanks to everyone who contributed tickets and patches for this release.  You make a growing community of developers’ lives a little easier.

SproutCore 0.9.11 Release Notes

 

Framework

 

  • [FIX] innerFrame tests were failing.  Now working.
  • Progress bar now shows 100% fill when set to indeterminate.  This should make it easier to style an indeterminate appearance.
  • Changed all references for window.location= to window.location.href=.  Improves IE compatibility.
  • Cleaned JSLint warnings from animator.js
  • Removed stray debugger statements (thanks august!)
  • Fixed CSS issues with SC-theme that made buttons appear offset.  Now appears correctly in FF3 & Safari (thanks mde!)
  • Added detect-browser script which can be included at the top of your page to detect the current browser and platform.  Also includes an  SC.setupBodyClassNames method that you can call after the body tag has been declared that will add class names for the current browser and platform. 
  • Added documentation for Function.property(), SC.Error, and SC.SegmentedView

 

Build Tools

 

  • Build tools are now much smarter about how the they process configs.  Before if you imported a framework (such as sproutcore) into your project you would need to import any dependent frameworks as well AND create configs for all of them.  Now you do not need to do that.  The build tools will load the most recent base environment (defined in config :all), along with the most recent bundle-specific config (defined in config :bundle_name) and the bundle-location details from whatever library holds the bundle.  This will avoid a whole class of head-scratching config probs that people encountered when trying to setup their system.
  • Removed unused controllers array from core.js template in client generator
  • sc-server now supports the new proxy option in sc-config.  You can use this to proxy your backend services through to your front-end SproutCore clients without having to setup a separate service.
  • Changed some launch options for sc-server that will improve performance.
  • JSDoc can now handle paths spaces in them.
  • Build tools no longer rely on symlink in dev mode.  This should improve compatibility with Windows systems.

 

 

 

 

 

 

Sproutcore Interview on TechcrunchIT

Techcrunch launched a new blog yesterday discussing the technologies that drive the enterprise tech space.   SproutCore is honored to be one of the of the lead stories they will be following this year.

Check out the interview giving the some history and future plans of SC!

http://www.techcrunchit.com/

Looking for JavaScript Book Recommendations?

One of the fundamental principles of SproutCore is “embrace JavaScript”.  Most web developers spend a lot of time trying to find ways to avoid learning JavaScript when in fact JavaScript is one of the most powerful, widely distributed languages in the world.  It is worth learning how to use it right!

Anteaya created a new page on the wiki today for JavaScript book recommendations and we’ve added a good one so far.  If you are interested in JavaScript, take a look at the wiki page and check them out.  If you have read some good books on JavaScript that you’d like to recommend, please take a moment to add a review + link here.  You’ll be helping other developers attain a greater level of happiness on the web.

 

SproutCore Meetup Group

Howdy SproutCore-ers.  We have just created a meetup group on Meetup.com specifically for SproutCore.  We are calling it the Founder’s Club, since it is based in Sunnyvale, and the fact that Charles will be there.

And, for the first meetup, we plan on having some giveaways.

Introducing the SproutCore Wiki

One of the things we haven’t spent nearly enough time on yet is documentation.  How do you get started with the build tools?  How do you talk to a back-end server?  These many other questions could be answered by members of the SproutCore community if only there were a centralized place to keep it.

Well now there is with the SproutCore Wiki.  The wiki is editable by anyone with a Github account and I have posted some editorial guidelines to help everyone make sure they use the wiki in a consistent way.

And there’s one other thing…a lot of times users of an open source project like SproutCore would like a way to propose a new feature.  We need a good way to keep track of these proposals and to allow the community to update them as a group.  Wiki’s are well suited for this, so the wiki includes a special section where you can post proposals.

If you have an idea for a new feature or change to the framework you would like to float to the community, here is a great way to get it incorporated:

  1. Write up your proposal for a new feature and add it as a page to the wiki.  Describe the motivation for your proposal, describe the API’s etc.
  2. Post a message to the Google Group requesting feedback from the community and open a ticket at lighthouse requesting it be added.
  3. From here a couple of things could happen.  People might help to improve the idea, or we might all love it so much that we decide to do it.  At this point, the ticket in lighthouse will be used to track its progress as people work on the concept and it eventually gets adopted into the mainline source.

The new wiki is up right now.  If you have been working on a tutorial to share, please add it here.  I’ll link to new tutorials when they are posted from this blog to keep everyone informed.  Thanks everyone for participating, you make SproutCore a great platform to work with.

 

MacBreak the SproutCore Edition

MacBreak weekly presented a in-depth analysis of SproutCore and what it means to the internet community.

http://thisweekintech.com/mbw94

Many of the conclusions are very insightful and right on and the rest make for a terrific story.

SproutCore TextMate Bundle

I just published the very beginnings of a new TextMate bundle for SproutCore written by our very own Joshua Dickens.  Way to go Josh!

Right now the bundle has only a few helper commands but its open source, so add more and we’ll take em.  I’d LOVE to see some inline help hookups here. :-)

Here is what you get right now:

  1. .ob [tab] => [currentText]Observer: function() { }.observes(’currentText’,’
  2. .prop [tab] =>  text: function () { }.property(’text’,'optional2′),
  3. super [tab] => arguments.callee.base.apply(this, arguments)

The last one is particularly helpful since SproutCore implements calling your superclass in the way you can in other languages.  The only catch is you have to use this long, magical incantation above  (arguments.callee.base.apply(this, arguments)).  If you don’t like to remember that, just install the tmbundle, type super[tab], and TextMate will remember for you.

How to Install

Just do the following on the command line in your terminal:

cd ~/Library/Application\ Support/TextMate/Bundles
curl http://github.com/sproutit/sproutcore-tmbundle/tarball/master -o sproutcore-tmbundle.tar
tar -x sproutcore-tmbundle.tar
mv sproutcore-tmbundle SproutCore.tmbundle
rm sproutcore-tmbundle.tar

If you are on Git, there is an even better way.  Do this from your terminal:
w
cd ~/Library/Application\ Support/TextMate/Bundles
git clone git://github.com/sproutit/sproutcore-tmbundle.git SproutCore.tmbundle

Now, when you want to update the bundle to get new features, just do:

cd ~/Library/Application\ Support/TextMate/Bundles/SproutCore.tmbundle
git pull

After you install the bundle (using either method), you will need to restart TextMate…

UPDATE:  August suggests that you can also just choose Bundles -> Bundle Editor -> Reload Bundles so you don’t need to restart TextMate.