Real Open

commercial real estate open sourced

A blog by Chase Pursley

currently building
Appraisal Flow
Powered by Obtvse, Rails and Heroku.

CRE Tech Tools - AOL Alto Mail

AOL Alto
Image credit: The Verge

AOL Alto: A new way to think about email

Yes, you read correctly, that AOL. What was once the most popular email service (You've got mail!) faded into obscurity after loosing market share to first Yahoo! and then later Google's Gmail, which has held it's place as the most popular free email client since launching in 2004. As a long-time Gmail power user, I've learned several techniques and implemented a number of plug-ins to enhance my email work-flow. However, with the rapid advance of web-apps and mobile technology, it always felt like there was a better way to manage this process. Paul Graham seems to agree with point # 2 in his essay Frighteningly Ambitious Startup Idea that email needs an overhaul or an outright replacement. Well, out of the blue, AOL has created a beta project called AOL Alto based around the concept of stacks and it's actually really good.

Stacks are digital manifestations of physical processes

Basically, stacks are similar to how you organize physical mail - bills in one pile, letters from friends and family in another and others for business and receipts. Alto automatically organizes and creates stacks from photo attachments, social notifications (think twitter messages, Linkedin update, etc), daily deals... And you can create your own stacks based on senders, recipients or even key phrases contained in the message. This helps with inbox zero by sorting and moving messages to the appropriate stack for you.

A way to utilize this for commercial real estate is to create a stack for each project so that all emails related to the project is automatically filled into the appropriate stack. It takes about a week or so to get stacks fully set up, but once you do, you'll find it to be a huge time saver. Another big plus is you don't need to create a new email address. You can log in with your current Gmail, AOL, Yahoo, or Apple address plus you can use it with more than one address, much like how mobile mail apps work (sparrow comes to mind).

Key Features:

  • - 'Stacks' concept
  • - Automatically organizes your photos and attachments
  • - Quick compose or standard compose
  • - Works with your existing Gmail, Yahoo, AOL or Apple accounts.

You can read more about AOL Alto over at The Verge. If you'd like to give AOL Alto a test drive, ping me over at twitter and I'll send you one of my six invites that I have left.

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

  • Tweet

CRE Tech Tools - Disable Gmail Compose

Mail!
Image credit: cnet

Gmail Compose Feature: How to Disable

While Gmail is generally a really great cloud email service, sometimes they roll out features that are odd or just plain bad. Gmail Compose is one of them. I'm not sure what what the Gmail folks had for breakfast the day they released compose, but apparently they think writing emails is analogous to sending an IM or text message. It's not. For us Gmail CRE users in the real world who need to write real emails, rejoice! Take the following steps to disable the new compose feature and get your normal Gmail experience back:

  1. In the compose window, select the down button to the right of the trashcan
  2. Select "Switch back to the old compose"

Button

Turn Off
Image credit: dottech

And that's it!

This will be the final post covering Gmail, as I've switched to using AOL's (yes, that AOL) new ALTO mail - which I'll cover next.

Related posts:

  • Tweet

CRE Tech Tools - Pomodoro!

Pomodoro!
Image credit: johnfulwider

Kyle Zaylor, author of the fantastic RealEstate Java blog recently wrote a blog post about the Pomodoro time management technique. The post hit home with me since I've been using the technique for the past year or so. I can say without a doubt that I've been able to increase my focus based on the Pomodoro (Italian for 'tomato') technique, which is especially useful as a commercial appraiser where I need large blocks of uninterrupted time to concentrate. I'd recommend reading his blog post and finding a way to incorporate the Italian Tomato it into your commercial real estate practice.

Since I'm on a computer most of the day, I've found the tomatoi.st web app to be particularly useful. It's free, so go try it out now to streamline your productivity.

  • Tweet

CRE Tech Tools - Reach Gmail Zen

This is the second post in a series covering free, low cost and easy-to-use technology tools for CRE professionals.

Mail!
Image credit: thesurfbum

Inbox Zero

Now that you have that shinny new Google Apps Gmail inbox set up for your corporate address, it's now time to learn how to manage it properly. I doubt any of you leave unread (snail)mail in your mailbox because it would fill quickly and your post office couldn't deliver any new mail. What you actually do is quickly sort through your mail - you toss the junk mail right away, immediately open what seems to be important and put less important letters into bins or designated piles to be reviewed later (like taxes...).

This analogy is pretty good - but falls a bit short because modern email products like Gmail basically have unlimited email storage. I think this is a problem. With a little self-discipline we can apply a similar technique to our digital counterpart with a technique coined "Inbox Zero" by Merlin Mann. In essence, Inbox Zero is:

a basic filing system where you treat your inbox like a to-do list, with each email representing a specific task resulting in an organized, empty inbox

The way Mann describes it is delete, delegate, respond, defer and do. I'm sure there's different ways to interpret this, but my take is this:

  1. Read through new email subject lines and quickly determine what's important.
  2. Address important messages immediately and then move them from the inbox to a specific folder you've created for that client/project/subject matter.
  3. Move all other less-important email to specific folder for reading later
  4. Toss junk mail or anything with a less than 60% chance of you revisiting.
  5. Keep only unread messages in your inbox - and only temporarily.

And what if you already have an inbox full of months, even years of emails - read and un-read? Parse through the weeks most important emails, create folders for their specific topics as mentioned above and move them there now. You can create a new folder from the 'labels' dropdown or do a quick search to find an existing folder when you're inside an email. Make sure to use good naming conventions so you can easily find the folders later. You can find these folders on the left-hand side of your Gmail inbox. Once you are no longer actively using / moving emails to a folder, you can 'hide' the folder in the label list by clicking the dropdown upon hovering your mouse above the folder name.

For all the rest of the messages that you want to store but aren't important enough to categorize, Gmail has a checkbox just below the search bar. Click that with the 'select-all' option and the select 'Archive.' Isn't that refreshing? Now don't worry - you've archived your emails - they are just a few clicks/searches away. You can really narrow your search with the dropdown within the search bar. And this Lifehacker article shows you how to automatically archive or delete old emails based on a schedule you set.

And that's the basic overview on how to reach Inbox Zero (and this applies to any email service, although the exact steps will be different). Now to reach Gmail Zen, consider the following techniques:

For Your Sanity

  1. Check your inbox once per hour, or less if possible.
  2. Turn off all phone, device and computer email notifications.
  3. Keep your email closed - open only when needed.
  4. Religiously unsubscribe from email lists that you never read or that provide no value (The CRE App Review and Real Open are valuable ones, of course!).

For Recipient's Sanity

  1. Properly label subject lines.
  2. Keep your message short and concise.
  3. Use proper paragraphs and avoid run on sentences (you know who you are).
  4. Never use ALL CAPS. This is shouting. Don't shout.

Final Thoughts

Email is just a tool - but if you let it - it can be a tool for procrastination and prevent the real work from getting done. I can personally say that I'm guilty of not following all of the steps all the time, but the methods above certainly helps me decrease stress and free up loads of time. Opening up your email and not seeing a barrage of unread and half-read emails from the last few weeks is a huge relief.

I hope you found this post helpful and find a way to incorporate Inbox Zero into your CRE work flow. The next segment of the series will cover how to Unleash your inbox and become a Gmail super-user with advanced techniques and plug-ins.

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

Related posts:

Stay Tuned

Touch base: click the say hi link to the left to send me any feedback or suggestions.

  • Tweet

Dynamic Select / Dropdown menus with Rails

I'm in the process of building a web application in Ruby on Rails to help me manage my appraisal work flow. Part of what I need to implement is a dropdown menu for selecting a property type and then a property sub-type where the second menu is automatically populated with the correct data on the client-side via javascript. In my case, I will utilize the information gathered from the property type crowdsourcing experiment.

After spending several days spinning my wheels, I finally found a method that works relatively well for creating a dynamic select / dropdown menu / also known as a cascading drop down in Rails. It look me a while to figure this out despite the wealth of RoR posts and stackoverflow questions out there. These types of menus are fairly common in web apps, so I thought it warrants a post for others looking for a solution.

Set up the App

Already have an app set up? Skip to to Generations.

1. rails new appraisals
2. cd appraisals

Generations

You can generate a full scaffold for the type and sub-type or just models depending on your method of adding data. I mention a resource on how to seed your database from a csv file at the end of this post. If you already have an app you're working in, you will likely need to add the type_id's to your primary model. Learn how to do that in the Rails Guides - 2.2 Creating a Standalone Migration. Make sure to add the ID integer columns!

1. rails generate scaffold appraisal name:string prop_type_id:integer prop_sub_type_id:integer
2. rails generate scaffold prop_type name:string
3. rails generate scaffold prop_sub_type name:string prop_type_id:integer
4. rake db:migrate

Routes

If you like, go ahead and delete the index.html from the public folder change your routes in the config/routes.rb file to the following:

Appraisals::Application.routes.draw do
  resources :prop_sub_types
  resources :prop_types
  resources :appraisals
  root :to => 'appraisals#index'
end

Models & Relations

So in our app, we have Appraisals. And each Appraisal has many property sub-types through property types. Now's a good time to review the Rails Guides on Active Record Associations. We need to set up these relations in for our models.

#appraisals/app/models/appraisal.rb
class Appraisal < ActiveRecord::Base
  attr_accessible :name, :prop_sub_type_id, :prop_type_id

  belongs_to :prop_type
  belongs_to :prop_sub_type
end

#appraisals/app/models/prop_type.rb
class PropType < ActiveRecord::Base
  attr_accessible :name

  has_many :prop_sub_types
  has_many :appraisals
end

#appraisals/app/models/prop_type.rb
class PropSubType < ActiveRecord::Base
  attr_accessible :name, :prop_type_id

  belongs_to :prop_type
  has_many :appraisals
end

Controllers

Add the following under the def new and def edit blocks in the appraisals_controller.rb and prop_types.rb controller. Make sure not to delete any of the existing code in the controllers created by the generate scaffold command. You don't need to make any changes to the prop_types.rb controller. The "..." line denotes existing scaffold code.

#appraisals/app/controllers/appraisals_controller.rb
def new
    ...
    @prop_types = PropType.all
    @prop_sub_types = PropSubType.all
    ...
end

def edit
    ...
    @prop_types = PropType.all
    @prop_sub_types = PropSubType.all
    ...
end

#appraisals/app/controllers/prop_sub_types_controller.rb
def new
    ...
    @prop_types = PropType.all
    ...
end

def edit
    ...
    @prop_types = PropType.all
    ...
end

Views

You will have to make several changes to views that will allow you to create a new property type parent , a sub-property type child and then a new Appraisal utilizing collection_select and grouped_collection_select. Slight modifications need to made to the _form partial as well as the index and show pages in views.

Property Types

#appraisals/app/views/appraisals/prop_types/index.html.erb
...
<% @prop_types.each do |prop_type| %>
  <tr>
    <td><%= prop_type.name %></td>
    ...
  </tr>
<% end %>
...

#appraisals/app/views/appraisals/prop_types/show.html.erb
...
<p>
  <b>Name:</b>
  <%= @prop_type.name %>
</p>
...

Property Subtypes

#appraisals/app/views/appraisals/prop_sub_types/_form.html.erb
...
  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </div>
  <div class="field">
    <%= f.label :name %><br />
    <%= f.collection_select :prop_type_id, @prop_types, :id, :name %>
  </div>
 ...

#appraisals/app/views/appraisals/prop_sub_types/index.html.erb
...
<% @prop_sub_types.each do |prop_sub_type| %>
  <tr>
    <td><%= prop_sub_type.name %></td>
    <td><%= prop_sub_type.prop_type.name %></td>
    ...
  </tr>
<% end %>
...

#appraisals/app/views/appraisals/prop_sub_types/show.html.erb
...
<p>
  <b>Prop Subtype:</b>
  <%= @prop_sub_type.name %>
</p>

<p>
  <b>Prop Type:</b>
  <%= @prop_sub_type.prop_type.name %>
</p>
...

Appraisals

#appraisals/app/views/appraisals/appraisals/_form.html.erb
...
  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </div>
  <div class="field">
    <%= f.collection_select :prop_type_id, PropType.order(:name), :id, :name, :prompt => "--  Select Property Type --" %>
  </div>
  <div class="field">
    <%= f.grouped_collection_select :prop_sub_type_id, PropType.order(:name), :prop_sub_types, :name, :id, :name, :prompt => "-- Select Property Subtype --"  %>
  </div>
  ...

#appraisals/app/views/appraisals/appraisals/index.html.erb
...
<table>
  <tr>
    <th>Name</th>
    <th>Property Type</th>
    <th>Property Subtype</th>
    ...
</tr>

<% @appraisals.each do |appraisal| %>
  <tr>
    <td><%= appraisal.name %></td>
    <td><%= appraisal.prop_type.name %></td>
    <td><%= appraisal.prop_sub_type.name %></td>
    ...
  </tr>
<% end %>
</table>
...

#appraisals/app/views/appraisals/appraisals/show.html.erb
...
<p>
  <b>Name:</b>
  <%= @appraisal.name %>
</p>

<p>
  <b>Property Type:</b>
  <%= @appraisal.prop_type.name %>
</p>

<p>
  <b>Prop Subtype:</b>
  <%= @appraisal.prop_sub_type.name %>
</p>
...

Client-Side CoffeeScript / jQuery

And now for a little jQuery or "Coffee Coffee" as a friend likes to say for some client-side magic. This will filter the second dropdown to just the property subtype children that belong to the property type parent. This code is basically the same as Ryan Bates used in Episode #88 (revised), but I took out the auto-hide for the sub-property type. If you want the second dropdown to be hidden until the first drop is selected, take a look here.

#appraisals/app/assets/javascripts/appraisals.js.coffee
jQuery ->
  prop_sub_types = $('#appraisal_prop_sub_type_id').html()
  $('#appraisal_prop_type_id').change ->
    prop_type = $('#appraisal_prop_type_id :selected').text()
    escaped_prop_type = prop_type.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g, '\\$1')
    options = $(prop_sub_types).filter("optgroup[label='#{escaped_prop_type}']").html()
    if options
      $('#appraisal_prop_sub_type_id').html(options)
    else
      $('#appraisal_prop_sub_type_id').empty()

And that should get the dynamic dropdown's up and running!

Seed

You can also seed the property database with a csv file. See #88 Dynamic Select Menus (revised) for details. This is a good option if you already have a large data-set.

I'm considering taking the Property Types Open Sourced doc and creating a csv version as well as possibly building a simple "property types" web app / open API for the CRE tech community. Let me know if any of this is of interest to you.

FInal Note

Find any errors? Is there better way to create these types of select menus? Did you find this helpful? Any questions? I'll try to keep this post up-to-date with the current version of Rails. Don't hesitate to contact me with the say hi link to the left for feedback.

  • Tweet

Marketplace Fairness Act = Retail Protectionism / Cry-Babyness

Cry Baby!

Image credit: http://www.dailymail.co.uk

One of the debates going on in commercial real estate circles, especially retail is:

"should online retail customers pay a sales tax?"

Political pundits and now CRE trade organizations like ICSC along with the National Retail Federation, Retail Industry Leaders Association, National Association of Wholesaler-Distributors and the National Association of Real Estate Investment Trusts are arguing that online retailers are not paying their fair share of the sales tax that states "deserve" by introducing the Marketplace Fairness Act. This bill has been introduced to both the U.S. Senate and House which "will grant states the authority to compel sales tax collection on online purchases made by in-state consumers."

All legalities aside, are states really 'owed' sales taxes by out-of-state web-based retailers? Or is this simply a desperate grasp for revenue by states with declining fiscal health - and on the retail side - a last ditch effort to force their online competitors onto an even playing field? But is the playing field really rendered uneven due to the lack of an online sales tax? I'd say no. The reason retail is having such a difficult time is yes, partially the national economic recession - but primarily it's consumer preference. The truth is folks,

The retail experience sucks.

Retailers have really gotten desperate. I can't remember the last time I wasn't hounded for a store credit card. I've had cases where I'd have to say no at least three times firmly so I could just pay and get the hell out of there. Some retailers even have quotas for their cashiers - sell x amount of store credit cards or you lose the job. And Girl Scouts now camp out in front of my local grocer like a bunch of beggars. Unbelievable! During my childhood, I remember my sister had to work hard to sell those cookies! Maybe retailers could learn a few things from the Girl Scouts of old.

In addition, driving to one of these ugly strip shopping centers and then fighting for a parking space does not sound like my idea of time well spent. And once you're in the door, you have to see if they even have what you want in stock - and don't bother asking the sales person - they have no clue. Plus, even if they do carry what you're looking for, it's priced above that of online retailers - and not because of the sales tax. And you know because you just did a price check with redlaser on your smartphone. Which is another interesting development - Retailers Fear Becoming Amazon's 'Showroom'.

The real reason the Marketplace Fairness Act has been introduced by the retail lobby is frankly industry protectionism. You can always count on the old guard to either sue the new guard or lobby congress to have laws written specifically to hurt the new market entrants in response to their own failure to innovate. Instead off focusing their efforts on creating a better retail experience for customers, the old guard is taking the place of the schoolyard bully. I would expect better from the well-respected ICSC.

Is anybody going to actually miss these places?

Dead Mall

Image credit: www.deathandtaxesmag.com

But all is not lost for retailers

This is a huge opportunity for forward-thinking retailers

This is not the end of the line for all retailers. Just the crappy ones. In fact, what we're seeing now is a great cleansing of mediocre retailers through technological and business model innovation. We'll be seeing more and more vacant retail centers. Good riddance - maybe they'll all be bulldozed and turned back into farms. This is where the quality developers, investors and retailers can step-it-up. Those that can provide an all-around superior retail experience that is well designed with a low environmental impact and properly integrated into the surrounding neighborhood will enjoy nice returns.

And as Diana Sonis, founder of BuzzTarget, mentioned, there is a reverse trend: online first --> physical stores after. Apple, Makerbot and Fab started selling online first and then opened retail stores. This is a great way to validate a business before going through the hassle of opening a retail store. And that brings up another important point. Retailers, shopping center owners and ICSC should be careful for what they wish for. What happens when Amazon opens a retail store? Talk about an even playing field.

Then what should online retailers pay?

Back to the sales tax thing. It's reasonably justifiable for customers of web-based retailers who's corporate offices or distribution facilities are located in their state of purchase to pay sales taxes (in addition to corporate and property taxes that they already pay). After-all, their physical presence enjoys the legal protection, infrastructure and human resources located in the particular state.

Final Thoughts

I know this is not politically correct to say for someone who's livelihood dependes on a healthy commercial real estate market. But I quite like the demise of the ugly farmland eating mega-malls and ugly strip retail centers as a less land-intensive, time-consuming and expensive alternative has appeared online - and I can shop in my underwear.

Good-by crappy retail, it was a good run. Long-Live Amazon Prime and Netflix.

This post can also be found as a guest post over at Duke Long's blog.


P.S. - It dosen't matter: 3D Printing Changes Everything

Anyways, all of this retail talk is redundant. What retailers and manufactures really need to fear is 3D printing. At the moment, 3D printing is in an infancy stage similar the home-brew computer movement that gave birth to Steve Jobs and Apple. Home replication devices may have even bigger implications than the personal computer: post-scarcity hyper-abundance...

  • Yes, Cry-Babyness is not a word - but it should be.
  • Tweet

CRE Tech Tools - Gmail in the Office

This is the first post in a series covering free, low cost and easy-to-use technology tools for CRE professionals.

Mail!
Image credit: thesurfbum

Life Before Gmail

Remember life before Gmail? Exchange servers, outlook, thunderbird, IT departments, IMAP, POP3, SMTP... ugh. Then don't be evil Google came along with a beta project called Gmail in 2004 which changed the way we did email. Its ease of use and powerful features won most of us over for our personal accounts. But what about our work email?

What many don't know is that you can set up your corporate CRE email with Google Apps Gmail so you can ditch that rusty old email software.

Check out this step-by-step guide for setting up your email address with Google Apps: CoffeeCup: Set Up Gmail with your own Domain or this instructional youtube video:

Setting up Google Apps for Small Business

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

In upcoming segments, I'll show you how to become a Gmail Ninja with powerful plug-ins for commercial real estate and how to reach Gmail Zen with Inbox Zero.

Related posts:

Stay Tuned

Touch base: click the say hi link to the left to send me any feedback or suggestions.

  • Tweet

CRE Crowdsourced - Property Types

Property Types
Image credit: deniselevans

A week ago or so I started a crowdsourcing experiment in an attempt to capture the collective intelligence of the real estate community. The feedback and contributions so far have been great - the Property Types Crowdsourced spreadsheet has filled quickly.

In a nutshell, crowdsourcing is "distributed problem solving."

Professional organizations, management companies, brokers, appraisers, MLS’s etc all have their own ideas on what constitutes the various property types. But how do you categorize the different property types / sub-types in your practice? What happens when the real estate community comes together and contributes to the same list?

Do you agree or disagree with any of the categories or property types that have been added so far? Can we all agree on the basics? Is this a step towards data standards?

You're welcome to view, contribue to, modify and share “Property Types Open Sourced” with this link: http://bit.ly/WYCzWQ

  • Tweet

CRE Tech Tools - An Introduction

This is the introductory post to a series covering free, low cost and easy-to-use technology tools for CRE professionals.

Alt text

Image credit: CNN Tech: Which smartphone system is right for you?

Apps, Taps and Caps

With the fast pace of change in technology - mobile apps, social media, crms, etc - it's difficult to keep up - especially in the slow-moving commercial real estate industry. This series seeks to cut through the noise by going in-depth with the best tech including:

  • Web apps
  • Mobile apps
  • Gmail plug-ins
  • Chrome browser extensions

Stay Tuned

Touch base: click the say hi link to the left to send me any feedback or suggestions.

  • Tweet

puts "Hello, #{CRE} World!"

Prepare yourselves for periodic and opinionated rants including but not limited to posts covering appraisal/valuation concepts, senior housing, data transparency, technology (mobile, web & beyond), future trends, etc. in the context of commercial real estate.

  • Tweet