Real Open

real estate open sourced

A blog by

things I made ----------------
Appraisal Flow
Powered by Obtvse and Rails

Ruby after Rails: Building a RESTful API with Grape & Napa - Pt. 1 (Introduction)

train crash

Out of the box, Ruby on Rails allows you to be very productive aided by great documentation and a significant library of Ruby & Rails gems maintained by a very active and open community. Since Rail's groundbreaking release in 2005, the framework's popularity has continued to grow in addition to it's underlying language, Ruby. However, a lot has changed since 2005 with mobile devices in everyone's pockets and increasingly powerful web browsers, leading to the rise of client side applications.

For some time, I've watched developers attempt to shoehorn single page applications like Backbone, Angular and Ember into a Rails app's app / assets / javascripts directory to be mangled by the (slow) asset pipeline as if it were a second-class citizen. This never felt natural and made the front end more difficult to work with as well as comprehend. In addition, if you just needed an API database application for say, an iPhone app - Rails seemed a bit bloated when all that was required is a database and RESTful endpoints.

the front-end has no business living in a Rails app at all - Michael Bleigh

On a recent client project, I used Angularjs to build a client-side application hosted statically on divshot.io. Not ready to give up on Ruby, I investigated several solutions like Sinatra, Padrino and rails-api for the server-side application. But these were either to small, to big, or included view-related logic that was simply not necessary. What I needed was a Ruby based web framework for building performant API database apps.

Grape is a REST-like API micro-framework based on Ruby. While it's been around since 2010 or so, it's is more of a library (think Sinatra) than a framework (Rails) meaning you have to build everything up folder-by-folder. Recently, a project came along called Napa by Bellycard that takes Grape and brings it together with things we all love from Rails like ActiveRecord, Rake and generators that make for a productive framework.

In this series, were going to build a RESTful API database application with Ruby & Napa loosely based on the Twitter clone ("microposts") application from the very popular Ruby on Rails Tutorial. If you'd like to follow-along, subscribe here and stay tuned for Pt. 2 where we're going to learn how to setup and bootstrap your first Napa application.

  • Tweet

Appraisal Flow Reliability Report (And why the Cloud is safer)

tl;dr: skip to bottom to see the Appraisal Flow reliability report.

One of the most common questions asked by appraisers interested in integrating Appraisal Flow into their practice is, “what is the cloud and is my data safe there.” This is a valid concern as we are all in the business of data. Appraisers in particular are most familiar with software that is installed on their computer opposed to in the cloud.

What is the “Cloud”?

The Cloud just means ultra-modern servers in an ultra-secure building built specifically for high-reliability and multi-redundancy (frequent backups). These secure computers serve up applications and data over the web. The Cloud is the technology behind most of the modern web like netflix.com and amazon.com.

What is a “Web App”

A web application is software that runs in a web browser over the internet. The software is served up by a remote server (the Cloud). With web apps, nothing never needs to be installed on your computer and upgrades are automatic. Examples of popular web apps are Gmail, Facebook and Yahoo.com.

Advantages of Web Apps and the Cloud

  • Much safer than software installed on your computer which can easily be stolen, broken, infected with a virus or hacked remotely.

  • Log in to web applications like Appraisal Flow from any computer anywhere in the world with an internet connection.

  • Never a need to install software on your computer or upgrade your software. Just log right in to being using it.

  • Easier collaboration. Better for multiple users and teams.

  • Forward thinking. The modern web and most well known brands like Quickbooks are all moving to the cloud.

Our “Cloud Infrastructure”

For our cloud infrastructure we use a service called Heroku which runs on top of Amazon.com's cloud service - the most reliable, secure, compliant and certified server infrastructure in the world. Here's some details on that:

Appraisal Flow Reliability (past month)

  • Application Uptime: 99.93%
  • Sever Errors: 0%
  • Response Time: 413 milliseconds
  • Page Load Time: 1.52 seconds

Still concerned about the Cloud? I'm happy to answer any other concerns or questions: --> touch base.

  • Tweet

Free (and low-cost) Mobile Internet with Freedom-Pop

As appraisers and real estate consultants many of us are on the road a good bit of the work week. As our tools are becoming increasingly digital, having a connection to the web in the field is very helpful, if not a necessity to remain efficient. While many of us have mobile data plans for our phones, our laptops and tablets capabilities are limited when out of Wi-Fi range. While there are mobile internet hotspots offered by the major mobile phone providers, they require long-term contracts and come with hefty monthly price tags (aka - trading your first-born). No thanks...

Freedom Pop

photon
Photo credit: http://www.mobilemag.com/

Enter Freedom Pop, the unique wireless internet provider that runs on top of the Sprint cell phone network to provide 4G Wimax and 4G LTE wireless data to laptops, tablets and other internet connected devices via a little device like the Photon. The best thing is, costs range from free to paid depending on your data needs. Free? What's the catch? Well, first you have to purchase the device which ranges from $59 for a refurbished to $99 for a brand new Photon. The Photon has a range of up to 100 feet and can connect with up to eight Wi-Fi devices simultaneously. You can purchase directly from Freedom Pop or Amazon like I did.

After purchasing the device, you pick a plan. The free plan provides 500MB of data per month for free and charges 2¢ per megabyte for anything over. This is how they make their money - they hope you go over the 500MB limit. However, if you see yourself using less than the 500MB per month, after purchasing the device, you essentially have free mobile internet. This is a great deal considering the same 500MB mobile internet plan through Verizon is $40 per month and requires a 2-year contact. The next level up is the "premium plan" (which is what I have) that provides 2GB of data for $19.99 per month, with 1.5¢ per megabyte (MB) for extra data. This is plenty for most of our needs.

plans
Photo credit: http://arstechnica.com

In conclusion, if you are on the road a lot and need access to internet on your laptop and tablet devices, consider Freedom Pop for low-cost and contract free data. Another option is cell-phone tethering which warrants a separate post.

Did you enjoy this post? Find out when the next one is ready: keep me in the loop

  • Tweet

Appraisal Flow - Open for Business and New Home Page

"Using a spreadsheet to manage our appraisal business just wasn't cutting it" - This quote is something we often hear from customers

Hopefully everyone had a great holiday season and is excited about what 2014 has in store. I know you haven't heard from me for a while as I was heads-down over the last quarter of 2013 putting the final touches on Appraisal Flow as well as getting early access customers set up and running.

Today I'm glad to announce that Appraisal Flow is now open for business to all appraisers! In addition, I've put up a new home page which covers Appraisal Flow benefits, features and pricing. Take a look, let me know what you think and feel free to send me an email at chase@appraisalflow.com with any questions you still have.

Also, the early access list was pretty large so we're still sending out invitations. If you'd like to go ahead and start your free trial, just let me know.

  • Tweet

2014 New Years Resolution: Upgrade Your Browser

old-tablet
Photo credit: www.math.ubc.ca

Ancient Technology

Since the time of the Babylonians people have welcomed the new year by setting goals and making resolutions. While this tradition might be ancient, your web browser shouldn't be. Older browsers like Internet Explorer 9 and below are less stable and more susceptible to security issues like viruses, malware and spyware. Modern websites and webapps often don't run properly or won't work at all on outdated browsers. Additionally, tech giants like Microsoft and Google are dropping support for older versions of Internet Explorer in 2014.

old-tablet
Photo credit: www.apple.com

Upgrade your Resolution

Over the past several years (and even over the last year) web browsers have made huge improvements in stability, speed and usability. The world of web technology moves quickly and you need a browser than can handle everything thrown at it. Thankfully there are several great options to choose from in 2014, all of which are free. Even the newer versions (10+) of Internet Explorer, the browser that everyone likes to give a hard time, are a huge improvement.

Using an older browser is both a security and a business liability. Do yourself a favor and upgrade your web browser in 2014. It'll be the easiest resolution you can make going into the new year. While my personal favorite is Google Chrome, go take a look at BrowseHappy.com to see which modern browser works best for you.

Happy New Year!

fireworks
Photo credit: chicquero.com

  • Tweet

Padrino Asset Pipeline the Easy Way

pipeline

While most of my experience has been with Rails, I keep finding myself coming back to Sinatra due to its simplicity and concise DSL. I especially like how Sinatra handles routing. But being a minimalistic Ruby web framework, there are some things missing which help web-app developers work efficiently like helpers, generators and database rake tasks.

godfather

The Godfather

Padrino ("Godfather" in Italian) is an elegant compromise between the ungainly thing that Rails has become and the simplicity of Sinatra. It retains the DSL and beauty of Sinatra while adding Rails-like helpers and tools. There's a pretty good book aptly titled "Padrino Book" (PDF here) that walks you though creating a "Job Posting" app. A fair word of warning: this book is a work-in-progress and is only about 75% complete.

Drawing

Sprockets

In the book, the author Matthias Guenther, uses the padrino-sprockets gem to create an asset pipeline similar to Rails that is not available out of the box with Padrino. Unfortunately I was not able to get this working despite trying several methods. However, I came across a better solution that requires even less setup called padrino-pipeline that works well. The following steps explain how to set up padrino-pipeline:

Install padrino-pipeline in your gem file and bundle install. Create an assets folder under the app folder (i.e., appname/app/assets) with the following sub-folders:

appname/app/assets/javascripts
appname/app/assets/stylesheets
appname/app/assets/images
appname/app/assets/fonts

In the javascripts folder, create an application.js file with just the following which brings all other javascripts under javascripts.

//= require_tree .

Similar for stylesheets (application.css)

/*
 *= require_self
 *= require_tree .
*/

In the app/app.rb file, add:

module Example
  class App < Padrino::Application
    ...
    ...
    register Padrino::Pipeline
    configure_assets do |config|
      config.pipeline = Padrino::Pipeline::Sprockets
      config.prefix = '/public'
    end
  end
end

And there you have a Rails-like asset pipeline using rack-based Sprockets for Padrino using with padrino-pipeline. This actually installs and configures Sprockets for you! You can alternatively use sinatra-assetpack, which I might try on my next Padrino app.

Did you enjoy this post? Find out when the next one is ready: keep me in the loop

  • Tweet

Why your Landing Page should be a Static Site

macbook appraisal flow

The new AppraisalFlow.com

A Twitter Conversation

@appraisalflow is faster than 95% of all websites according to Pingdom with a 614 ms load time http://www.appraisalflow.com

@appraisalflow dang it is fast! That thing on PEDs??? ~ @TheCapRate

@TheCapRate It's an old-school drug called nginx mixed with the new stuff all the kids are doing these days called CDN

I recently updated the www.appraisalflow.com landing page from it's "coming soon" status to an "open for business" page with details about the app's features, benefits, pricing etc. One of the decisions I made was to change the landing page over from Rails & Heroku app to a static site with NGINX and a CDN for assets for the landing page. There are several reasons I did this:

  • - No database is required for the landing page
  • - NGINX is fast and can handle heavy traffic
  • - Management is simpler and costs are lower
  • - CDNs distribute assets via multiple servers

Proof

Before Conversion to Static Site (Rails App: 19.57 second load time)

before

After Conversion to Static Site (NGINX Site: 1.09 second load time)

after

According to pingdom, not only has the new Appraisal Flow site load time decreased dramatically (faster than 88% of all sites on the web!), it is doing so despite having a much larger page size (due to addition of screenshots). While this is not exactly an apples-to-apples comparison (coming soon site had a email signup form backed by a database), I suspect a direct comparison would even have better results since images would be removed. The increase in page load speed and ability to handle heavy traffic at a reasonable cost is a pretty compelling reason to use a static site for landing pages.

Special Note: Page speeds have since slowed down a bit as I have added several tools like analytics and a help bar. However, the meat of the site still loads up just as quickly while the tools load basically behind the scenes.

Tools

To accomplish a build-to-production process that was familiar to me as a web app developer, I utilized several tools and a particular work-flow.

A fan of Brunch.io, I build a version optimized for static apps (Brunch is typically used for JavaScript "web apps") which I will likely open-source and write up a separate post about. Basically, the way I have Brunch-Static set up, it automatically combines resources (CSS & JavaScripts) into single files as well as minifys and lints them. Plus, it also optimizes images. To prepare for production, Brunch creates a public folder with the index.html and other assets.

The next part of the process is to host the site and get the assets to a CDN. After spending way to much time trying to find ways to do this, I landed on a neat tool called getforge. This tool allows you to upload a zipped folder containing your static site with their dead-simple interface. Then, it automatically sets up an NGINX site and send the assets to a CDN. It also injects the site with a thing called TurboJS which I'm not exactly sure how it works but it does (and it can be turned off). Plus, it has "versioning" so you can see previous versions of the site and even roll-back. I hope to see a command-line interface down the road so I can "git push forge master" or similar.

Did you enjoy this post? Find out when the next one is ready: keep me in the loop

  • Tweet

Use the App Namespace for Rails-Ember Projects

Perhaps one of the largest real world uses cases for Ember apps are their integration with Ruby on Rails. This make sense as some of the core contributors come from the Rails community. Several high-profile apps like Discourse are using Rails and Ember together typically via the ember-rails gem. This official gem was created by the Ember team and adds Ember to the Rails asset pipeline as well as useful tool like generators.

In a previous post I introduced Ember Wings, a Brunch.io based app structure and build process for client-side Ember apps. Ember Wings, Ember App Kit and many other Ember app structures are using the "App" namespace convention. This is helpful in several ways, especially when looking at other's code examples and copy pasting snippets to other portions of your app. However, the way the ember-rails gem works is it inherits the name of the Rails app from when you first generate the Rails app structure and bootstrap Ember. So if you generate 'rails new my-blog' and then bootstrap Ember, your Ember namespace will be 'my-blog' as well. But I prefer the App namespace convention.

There's an easy way to use App as your Ember namespace within your Rails app. Just generate your Rails app with the name 'app' from the start, install the ember-rails gem and bootstrap Ember. Then after that, you can just rename your Rails app like follows:

$ rails new app
$ cd app
add the 'ember-rails' gem to your gem file
$ bundle install
$ rails generate ember:bootstrap
$ cd ..
$ mv app my-blog

Did you enjoy this post? Find out when the next one is ready: keep me in the loop

  • Tweet

Introducing Ember Wings

flying hamster of doom
Image credit: flying-hamster-of-doom tshirt

A starting place for building ambitious Ember applications with Brunch.io

While I've been getting into Ember for building client-side web applications, most of the time it's been in the context of a Ruby on Rails app using the ember-rails gem. But in many cases, I just need to build a stand-alone Ember app. While Ember is an opinionated framework, the team behind it leaves it to the user on how to structure the app. One popular structure for creating Ember apps is Stefan Penner's Ember App Kit which uses Grunt, a flexible JavaScript task runner. While I like this structure, I prefer Brunch.io for the build process due to it's simplicity and lightning-fast development performance.

So, naturally I built my own Brunch-based Ember app framework called Ember Wings which is conceptually similar to Ember App Kit. Ember Wings utilizes the code and assets from on the official Ember Starter Kit v1.0.0 but in CoffeeScript (plain JavaScript is supported). In the future, other languages, styles and templates will be supported like EmberScript and Emblem. I may even combine it with the generators from Ember Tools.

Github Repository: Ember Wings

Getting started

Before using Ember Wings, make sure you have Node, npm and Brunch installed.

$ brunch new gh:cpursley/ember-wings <appname>
$ cd <appname>
$ brunch watch -s

Then open http://localhost:3333 in your browser. Couldn't be simpler than that! If you've used Grunt before, you'll notice the significant speed increase Brunch provides.

Kudos

Did you enjoy this post? Find out when the next one is ready: keep me in the loop

  • Tweet

A low cost 1-800 Number for your Real Estate Business

Old PBX Phone System
Photo credit: netcelerate

I'm currently in the process of launching a product to help real estate appraisers manage their work flow and needed a phone system. While email and collaboration tools have really taken over much of communication, people still like to have a human-level conversation. In addition, clients and prospects gain more confidence when they can reach somebody in the company if they have a question or just need to go into detail.

I Can't Hear You

It became quite obvious that I needed a quality phone system (as do all businesses) so clients could easily touch base. In the age of iPhones, Androids and VoIP (Voice over Internet Protocol), installing a complex PBX (a.ka. Business Telephone System) is a little overwhelming, if not overkill. Plus, many of us in the real estate industry, especially appraisers, are on the road a lot of the time. Having an expensive physical phone system that keeps you glued to the desk makes little sense.

Don't hang-up just yet.

Talk To Me

Thankfully, the solution came in a non-hardware cloud of locusts. Grasshopper is a Cloud-Based business phone system. What this means is you can pick a phone number, set up a business menu (i.e., press 3 to order an appraisal) and have it go to voice mail or forwarded to the phones of your choice, including your cell phone. Grasshopper will even send you an email each time you get a voice mail. This is pretty useful in so many situations including for those who work out of a home office or have remote colleagues.

1-800

1-800 YOUR-BUSINESS

At the time of writing, pricing is as low as $12 per month + 6¢ per minute for a local or 1-888, 1-877, or 1-855 number. If you want to pull out all the stops, Grasshopper includes an optional 1-800 number ($40 one time setup). Since I use a VoIP number (Skype) for unlimited business calls, a cheap mobile phone plan and a Grasshopper 1-800 number, my typical monthly voice communication bill runs around $35 per month. That price includes three phone numbers and a professional business phone system. Not bad at all considering people are paying $90+ per month for their limited iPhones plans alone.

You can learn more about Grasshopper here: http://grasshopper.com

Did you enjoy this post? Find out when the next one is ready: keep me in the loop

This post can also be found over at the CRE App Review

  • Tweet