Reachably's "Countdown to New Years" Contest is here!
Our countdown to New Year's contest is live!
Here's how it works:
Each daily contest will run from 12pm EST, when we'll announce the theme, to 10am EST the following day.
For your entry to count, you have to add #contest to your post along with the @tag of the day.
You can add up to 5 photos for each daily contest. However, adding one quality photo will get you farther.
Use the site to add photos from your computer, or the web. If you're on the go, use our app to snap a photo or add one from your library. From reachably, you can easily send your post to friends by text and email, or post it to Facebook, Twitter, Tumblr and Pinterest. Encourage them to vote for you!'
They'll be a daily winner based on the day's points and an overall winner chosen raffle-style on New Year's Day. It's an easy way to win fun prizes and up to $500 in cash!
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
✓ Live Streaming✓ Interactive Chat✓ Private Shows✓ HD Quality
Anya is LIVE right now
FREE
Free to watch • No registration required • HD streaming
Reachably wasn't always Reachably - we used to be called "dtime". This was back when we were building our initial prototype with a focus on making decisions. We learned quite a few lessons there - some business (people didn't like the formality of making a decision publicly online) and some technical (we had a mess of a code base from all of the changes we were making).
Our most important lesson was that it's really hard to evolve an app rapidly without making a mess of the code. One of the messiest parts of the code base was where we started building in JSON api components so that we could start building Backbone components to make our site more dynamic. Building the JSON API parts as needed led to a very haphazard style that wasn't useful at all to external apps. We also ended up taking some shortcuts with our views, allowing too much logic to creep in.
When we started working on the new iteration of Reachably, we decided we were going to throw away our prototype and start from scratch, which gave us the ability make things better the second time around. We started knowing that with our new version we would want to build both mobile and web applications, which meant a solid API would be necessary. Planning wise, we also wanted to prevent ourselves from abusing Rails a second time, if possible, by maintaining a clear separation of concerns. With those thoughts in mind, the decision was made to break our app in half, starting a new project with an API and our web app, which would simply be our first API client, to be followed in time with our mobile client.
Building your own application on top of your non-existent API does require a bit of effort, especially when you're not exactly sure what you want your app to do yet. To help hit the ground running, we started by building out the Rails app with a standard ActiveRecord backend. This helped us work out kinks in the data model and have our frontend developer be able to focus on building and testing the client without waiting for the API to be functional.
To keep the implementation details of persistence away from the client, we used something like the Repository Pattern. We put an interface between the actual models and the controllers this way - rather than directly calling #find on the model, we would call ModelRepository#find, which would then call #find on the ActiveRecord model for us. We also decorated all of our models with Draper, rather than using them directly in the views.
This level of indirection seemed a little contrived while working with just straight ActiveRecord models, but when we started to connect the API, the indirection really paid off - we were able to get the client working with actual API calls in the space of a day. The repository just started making remote calls instead of local calls to the database, then we'd wrap the response in a model that looked very similar to what we'd had with ActiveRecord. With Draper, we were able to patch over differences that had cropped up in the ActiveRecord models that hadn't been migrated over to the API.
We've been working on the app separated this way for a while now and we've found it to be a very effective way to keep a separation of concerns and avoid duplicating work between the mobile and web clients. It's a lot easier to think about new features in terms of the bare minimum of JSON api call + response, rather than worrying about how it will be presented, which can be worked on independently by our front-end developer. There are still a few pain points, the main one being that it's still a little hard to do full stack integration tests, since you have to run a test version of the API and connect to it with the web client.
Lessons Learned
If you're building a new app and you know you're going to need an API along with the app, I'd highly recommend considering building it the way we did - as two separate, loosely coupled components. Building on your own API calls from the beginning keeps you from taking shortcuts that will make life more difficult when you eventually need to support the same features via your API and forces you to think about how the API will work from the beginning.
If you build both apps simultaneously - build with enough abstraction to eventually pull out the persistence layer of the client application. (Repositories, Decorators, etc)
Have an easy way to run your test API server as part of your standard testing framework, it gets painful having to remember to boot up the test server all the time.
Forced separation of concerns between client and API is a very useful way to help keep your code clean.
Here at Reachably, we are always sending emails! Invites, Mailers, and Transactional emails are being sent out constantly. That means that there's a lot of coding like it's 1999 going on... it also means we have to test our emails, a lot. Here are some great tools that I use when the task arises!
Email on Acid
This site has a free tool that allows you to test Gmail, AOL, and Outlook. It tests for spam and disabled images for all three. Useful for preliminary testing. There are expanded paid plans as well.
MailChimp
We have a premium account at MailChimp, so we have access to their nifty tool called Inbox Inspection. I think it runs on Litmus and offers a wide range of options for email tests. We use this one the most, it's pretty great.
Premailer
Not necessarily a testing tool, but a huge time saver. Instead of writing all of the inline styles yourself (like I was doing before!), you can just write it in a style tag in your <head> and this tool will inline the CSS for you! Had great results with this.
Thunderbird
When testing my emails early on, I like to use Thunderird to send out emails to my own accounts. They have this easy "insert HTML" button that lets me pop in my code and send it on it's merry way.
Campaign Monitor
The only paid testing we did as at Campaign Monitor, for $5 per test. They also use the Litmus API, which is great because this is pay per use and I don't think Litmus offers that themselves.
Over the course of the last year at Reachably, we've developed a number of JavaScript functions that we've found handy. From hover tags to autoexpanding textareas, they can help speed things up when making a user-facing website.
They're written in CoffeeScript, the JavaScript pre-processor language that we've written our app in.
Before we go any further, you should check out the demo page!
Included in Coffee Filter, you'll find:
hover tags for showing notes on an element (e.g., a username when hovering over an avatar)
placeholder text for browsers that don't support the html5 spec
textarea autoexpand when typing large blocks of text
fill a square with an image of arbitrary dimensions
position an image of arbitrary dimensions in a square
saving and default states for buttons/links when using ajax
autolink urls in a block of text (great for comments!)
set a custom tabindex on an array of items
outerHTML()
a check to see if keyboard shortcuts should be enabled (if not ie8 or typing in a field)
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
✓ Live Streaming✓ Interactive Chat✓ Private Shows✓ HD Quality
Anya is LIVE right now
FREE
Free to watch • No registration required • HD streaming
Hi! We're Reachably, a new NYC social tech startup, and we're hiring brand ambassadors!
We're seeking energetic and entrepreneurial-minded individuals that can become social advocates for Reachably. You'll be working alongside a talented marketing / PR and tech team to spread the word and grow an incredible community of users. You must be an active social network user that creates quality content and has a large following.Â
To apply:
Check out our recently launched site (http://www.reachably.com) and download our iPhone app (http://www.itunes.com/apps/reachably) before applying
Email us ([email protected]) with a short blurb on why you're interested in being a social media brand ambassador for reachably and any creative ideas you have to get new users
Along with the blurb, share links to your social media profiles (facebook, twitter, instagram, tumblr, pinterest) to help us gauge how active you are and what type of following you currently have  Â
Job description:
Quality content creation
Attract and retain new users
Community management
Commitment:
No minimum time commitment. Pay is based on performance. Don't have to be based in NYC. Co-location in our Hell's Kitchen loft is optional.
--
More about Us:
Reachably is the best way to reach the right people for relevant, real-time sharing. Consider us the evolution of the hashtag, offering you new and smarter ways to reach people based on their tastes, interests, backgrounds and passions- anything that's meaningful to you. Share and hear from @foodies, @fashionistas, @budget-travelers, @twenty-somethings, @urbanites as easily as you reach family and friends. We're advancing how you connect to your world and are excited to have you be part of it!
Like us on facebook:Â http://www.facebook.com/reachably
Follow us on twitter:Â https://twitter.com/reachablyinc
Learn more about our CEO:Â http://www.linkedin.com/in/rickvidal