Profile cover photo
Profile photo
Grow
81 followers -
Bringing joy to building and launching high-quality web sites.
Bringing joy to building and launching high-quality web sites.

81 followers
About
Posts

In honor of #gcdc  and #gcdcwisdom  and all the contestants and submissions to the Google Cloud Developer Challenge, here are nine things I learned about Google APIs, platforms, and app development while building Grow (http://grow.io), a professional, social CMS that runs on App Engine and publishes high-quality static web sites to the +Google Cloud Platform right from your browser.

1) If you’re building a single-page web application, +Angular Js can shave off (literally) weeks of development time and hundreds of lines of code. Angular JS is an open source project from Google. Thanks to Angular, I was able to use dead-simple two-way data binding, and leverage a powerful and easy to use HTML template system. If you’re making a complicated front end web application with a lot of data-based views, you should check out Angular.

2) You can use Google Cloud Storage as your own super-cheap, super-reliable, super-fast static web host (https://developers.google.com/storage/docs/website-configuration). If your web site is composed entirely of static files, you can publish your whole site to GCS without worrying about running your own web host, or paying a bunch of money for reliability. (By the way, GCS’s web site serving mode can be a bit complicated for people who might just be used to FTPing files, but that’s where Grow comes in!)

3) Google Cloud Endpoints (https://developers.google.com/appengine/docs/python/endpoints/) gives you a framework for defining and exposing API services that your own application provides. In addition to encouraging you to code your API services within the framework, Cloud Endpoints also provides you with auto-generated clients and helps with authentication. Many developers (myself included) abide by the “API first” development philosophy: that is, architect and build your APIs first, and then design your web application as a consumer of those APIs. If you use Angular JS, using Cloud Endpoints services to populate HTML template-based views is a snap!

4) If you integrate your app with Google+ Sign In (https://developers.google.com/+/features/sign-in) you can gather a lot of information about your users very easily, and auto-populate your apps user profile fields. For example, Grow automatically grabs a user’s email address, profile picture, name, and gives them a suggestion for their nickname thanks to the data G+ Sign In provides. Integrating with G+ also prevents you from needing to create your own login system!

5) Need to come up with a way to serialize datastore entities and transmit them between client and server? My recommendation is to use Protocol Buffers (https://developers.google.com/protocol-buffers/docs/overview) via the ProtoRPC library (https://developers.google.com/appengine/docs/python/tools/protorpc/). Create serialization and accessor methods on your database model classes that use the serialized protobuf messages as inputs and outputs. Be consistent and always transmit protobuf messages, and never anything but them – you will thank yourself later when you have many API services, many datastore models, and you’ll be able to leverage the validation and consistency of protobuf messages.

6) Thanks to App Engine, you can deploy multiple versions of your application and serve them all at the same time. This allows you to serve a “stable” version of your app to your users, while deploying multiple “test” versions of your app to test out for yourself. If you deploy a version named “foo”, you can access it at: http://foo.<appid>.appspot.com (or, for secure connections: https://foo-dot-<appid>.appspot.com). When you’ve tested your app and confirm it works well, visit the admin console and switch “foo” to the default version!

7) You should always optimize your production web applications by doing things like minifying JavaScript and compressing images (https://developers.google.com/speed/) but if you’re in a huge time-crunch (like I was for #gcdc!), you may not be able to take the time to properly do all these optimizations in your project. That’s where the App Engine PageSpeed service comes in! (https://developers.google.com/appengine/docs/adminconsole/performancesettings#pagespeed) You can enable the PageSpeed service and it will automatically perform a bunch of optimizations for you related to minification, inlining, caching, and others.

8) Is your project an open source project? Grow is! This tip is less about Google APIs, but more about development philosophies. If you’re creating a platform (like Grow), it’s probably a good idea to make your project open source. Open source allows other developers to study and improve upon the platform for their own needs. You can learn the basics of open source licensing from this popular article: http://www.codinghorror.com/blog/2007/04/pick-a-license-any-license.html. Pick a license* (Grow is unlicensed right now, but will be either Apache2 or BSD), write good documentation, write testable code, and encourage discussion and contributions from the community. *I am not a lawyer!

9) In addition to coming up with a good idea and developing a nice application, marketing and studying user engagement are important. Go the extra mile to install Google Analytics to see where your users are coming from. Add Event Tracking (https://developers.google.com/analytics/devguides/collection/gajs/eventTrackerGuide) to understand how your users are interacting with your application. If your app is a new concept, you’ll probably want to shoot a screencast and upload it to YouTube. Your screencasts should recorded and uploaded in high-quality (so your viewers can read the UI) and you should use your application in a slow, but deliberate  way – so your users can follow along to understand how it works. Also, don’t forget you can use your app’s landing page to briefly explain to first-time users what your app does, and even include your screencast right there.

If you enjoyed reading all this, post a comment here or reshare and tell me what you’ve learned from the contest, or from any other development work you’ve done recently!
Add a comment...

Post has attachment
Hello to everyone who's discovering this project from the  #gcdc  contest! I'm very pleased to say that Grow has won its division! Congratulations to both all the other winners and everyone who participated in the contest. Thanks so much for your interest and support. I'm doing some work to move it to its permanent URL at http://grow.io, so it's not quite ready to open its doors to the general public just yet!

That said, I can't wait to get it into your hands, and we're really close to a "friends and family" beta test. In the meantime, feel free to ask any questions right here, check out the overview video that walks you through the app, or sign up for updates at http://growapp.org.

There's a ton of work to do on this massive project, and I'm just one person, so I appreciate your patience and support as I get closer and closer to releasing the beta version. Thanks again!
Add a comment...

Post has shared content
Grow's HTML notification emails. Responsive and sent by the App Engine Email Service API. #gcdc2013  
Grow's notification emails are now pretty. (And responsive!)  #cardui  #comingsoon
Photo
Photo
2014-01-17
2 Photos - View album
Add a comment...

Post has attachment
Nextbit's microsite at http://nextbit.com is one of the first web sites built using Grow and the Grow SDK! And, congratulations to Nextbit on their funding! (http://techcrunch.com/2014/01/14/nextbit/)

Can you find the easter egg on the web site?
Nextbit
Nextbit
nextbit.com
Add a comment...

Post has shared content
Read more about the mission behind Grow before the beta, which is coming very soon now that #gcdc is over!
Say hello to my new project, Grow! Grow is almost certainly the best way for teams to build, launch, and organize web sites, together. Read the introduction I put together here: http://about.grow.io/blog/all-i-want-to-do-is-build-a-web-site/

I'm planning to submit this into
#GCDC  (the Google Cloud Developer Challenge). Check it out and let me know what you think. What do you want to see in your web site production tools?
Add a comment...

Grow has been submitted to #gcdc2013. Here's the roadmap for Grow's next month:

- Pre-release of the Grow Open Source Project (code, documentation, and community) at http://growapp.org
- Introductory walkthrough with early pre-release testers
- Applying polish and adding more themes to Grow for App Engine for #gcdc2013

Our mission is to bring joy to building and launching web sites. What would you like to see in a modern web site production system?
Add a comment...

Welcome to the Google+ page for Grow, the content management and web site launching platform for the modern web! We'll be using this page to post and repost about the Grow open source project, static site generation, modern content management, and web site production and optimization.

Stay tuned for more information about the pre-release of the Grow open source project!
Add a comment...
Wait while more posts are being loaded