We're Happier Together! NYC Devshop has joined the HappyFunCorp family! Learn more!


Devshop Blog

30 results returned for "Education"

Wednesday, Dec 21st, 2016

Lizzie Healy

8 Reasons Your Business Should Be Going Live On Instagram

Instagram, continuing their march to meticulously rip off the best elements of their competitor's social media platforms, has been rapidly rolling out "new" features that look and feel eerily familiar. As if following a social media recipe for success, they've added a pinch of Snapchat here, a dash of Pinterest there, and a heaping spoonful of Periscope to top it off. The resulting Frankenstein social media platform is actually pretty incredible, and users are eating it up. Last week, Instagram announced that it had crossed over the milestone 600 million users, acquiring 100 million new users in the past month. With new users flocking to the app, and the introduction of features like Instagram Live, businesses have an amazing opportunity to build a closer, more authentic relationship with their followers.

  1. It's Easy to Use

  2. To start using Instagram Live, simply swipe right from your feed to open the camera and tap "Start Live Video" to begin sharing. Instagram sends notifications to specific followers, based on their algorithm for who would be most interested, to alert them that you are going Live. The word LIVE will also appear below your image in stories.

  3. It's Scarce

  4. Because FOMO is real (and effective for marketing), the Live video will only be viewable while streaming is in progress and disappear immediately after. Do. Not. Forget. To. Promote. Drop hints and reminders to followers to let them know when you will be Live, with incentives for them to follow. Think: giveaways, special announcements, relevant and interesting content. Ask users to turn on notifications, which will ensure they are alerted when you go Live, so they Don't Miss Out! Because once the cast is over, it's gone forever. FOMO is a marketer's best friend.

  5. It's Responsive

  6. Have you ever been on a dance floor when a bad song comes on, and everyone decides it's a good time to leave and refill their drinks? This is the same concept as the number on the top right of your screen, which shows how many people are tuning in or tuning out of the broadcast. You can immediately judge which content works and which sends people running for another drink by the number going up or down. This makes catering content to your audience even simpler because you can judge it in real time.

  7. It's Direct Access to Consumers

  8. Your Live broadcast can last for up to an hour, during which viewers can heart or comment on the video in real time. Instagram let's you report any internet trolls with just a click, or turn off comments all together (though this would ruin much of the marketing benefits of the broadcast). During the broadcast, businesses can provide details about pricing, availability, special features, and respond to questions as viewers ask them. Live allows businesses to get direct feedback from viewers on products and services, just by swiping and asking.

  9. It's Authentic

  10. You've heard it over and over again. Consumers respond to marketing that is authentic, real, and personable. They can spot a fake from a mile away. With Instagram live being filmed on the fly, it's your opportunity to say f%$k it, do it live! As much as you can and should plan your cast ahead of time, the value in going Live is that it's a genuine, unedited look behind the scenes. Be real, share personal stories, burn food. That's why people tune in to watch.

  11. It's Branded

  12. Going Live on Instagram is an incredible opportunity to showcase your brand. Your brand reflects the core values of your company, and what better way to convey these than through behind the scenes looks at how products are made, introducing team members, and showing off the culture that makes your company so unique. There's a reason research is predicting that 75 percent of all data will be video by 2020. It allows you to go beyond a flat image and convey your message through visual and audio content all at once. Dance to your own jingle, drink from a mug branded with your logo, show off all the benefits of your product or service in real life situations. The possibilities are endless.

  13. It's Engaging

  14. Engage with customers through an interactive Q & A, where you can receive and respond to viewer's questions in real time. Ask questions directly to viewers about what they like, don't like, and want to see more or less of. The ability to pin comments is an amazing hack by Instagram that can be used in a few different ways. Pin questions you ask, questions and comments being posed by viewers, or just add a brief description about what you're doing so viewers just tuning in can be quickly caught up to speed.

  15. It's Fun

  16. The best part about Instagram Live is that it's fun. So your business should be having fun with your Live stream. Show a cooking class. Mix up your favorite drink. Do a cosmetics tutorial. Demo a new product. Teach a fitness class. Preview a new track. Make you video content something that is appealing to your demographics, with tips that benefit viewers and incentivize them to keep tuning in. Rule of thumb: if you're having fun, your viewers will too.

Wednesday, Dec 7th, 2016

Paul D'Angelo

Do You Even Blog?

Blogging. Why on earth do we do it? Do we really have THAT much interesting information to share? Is it really necessary to constantly bombard the internet with more hot takes, insights, and opinions from "experts"? Why does our marketing BOSS Lizzie constantly harass us for new posts, even though I literally just wrote one like, 4 months ago? Does it actually help our business?

While the quality of the content and the resulting noise from so many people oversharing every thought and opinion is a topic for a much lengthier discussion that we can tackle in another post, the act of consistently posting new content is extremely beneficial, and you should all be so lucky to have a star like Lizzie on your team! (I swear she didn't pay me to say any of this.) Posting new content improves your search rankings when bots crawl and index your site, and keywords in your posts can help drive traffic as well.

In addition to the direct benefits, content plays an important role in giving your brand a voice, and can help solidify yourself as a thought leader in your industry, assuming you are on the right side of the above comment regarding quality content and not just noise. So how do you manage to put out consistent insights without recycling the same ideas, wrapping them in different buzz words and adding to the noise? First, create a realistic schedule, and then put a system in place such that you will have a backlog for when people miss their deadlines (it's inevitable). Next, have people write about things they are NOT familiar with, but want to learn about. Sharing your own learning experiences is a great way to reinforce your own knowledge and ensures the content will be easily digestible for most readers.

Finally, embrace the process! Writing content can be a tedious, stressful experience that is to be avoided whenever possible, but it doesn't have to be. Too often the day to day grind of our jobs (and lives) make it difficult for us to continue pursuing knowledge and learning, and I personally think that the role technology has had in putting virtually unlimited information at our fingertips has actually made us less knowledgeable, but we can save that for another discussion. Use the chore of writing for your company as an opportunity to explore new ideas. Who knows, you may learn something! At the very least you will make Lizzie happy, and that's definitely worth it.

Thursday, Sep 1st, 2016

Lauren Basil

Now Arriving: An Upgraded Commute

I've always enjoyed driving. Getting into my car and being able to go wherever I wanted, whenever I wanted was a luxury I hadn't realized. That luxury was a far off memory when I turned in the convenience of driving for the overcrowded, always delayed New York subway system. Lucky me. I would shove my way towards the front of the crowd each morning in hopes of getting onto the first train to arrive, but rarely did that happen. After weaseling my way onto the train, I would stand there surrounded by hot, sweaty bodies and I would stare at my phone in hopes of avoiding any human interaction. I would even preload Snapchat stories or my Instagram feed knowing I would lose service and have no other option but to take my eyes off of the screen. Nothing about my commute added value to my life.

I realized my commute to and from work was going to be 400 minutes a week I would never get back. It was time wasted. I needed to take a different approach. Instead of allowing myself to mindlessly stroll through my Instagram feed, I had to figure out what I could to add value to my life or my career.

I was on a mission to find a few different approaches on how I could spend my time. Was it something that would prepare me better for my work day? Was it something to help my personal life and put my mind at ease? Or was is just simply reading the news? Honestly I didn't know. It might just depend on what mood I'm in.

I started off by considering work related things I could do or read to fill the time. I figured this was a win win for me. I would be occupied during the ride and it would benefit my career in one way or another. I found an app called Any.do that served as a task manager. The quick and dirty: I was able to keep track of my to-do list, prioritize tasks, schedule a time for each task and set long term goals and milestones relative to each task. This was something I previously would do every morning as soon as I sat down at my desk. Adding it to my morning commute cut that time out of my work day and got my brain moving before I walked into the office. Not only did I enjoy the fact that it cut an aspect out of my work-day, it also made me feel more prepared walking into the office. Of course, somedays I may not have been able to plan my whole day out while on the train, but most days I could and it made me more aware of what was critical that day.

Sure, somedays I didn't want to think about work at all before I got to the office. When I was feeling this way I would use an app called Headspace that allowed me to meditate anytime, anyplace, anywhere (even offline). The idea of meditating was completely foreign to me. I had never done it, felt the need to do it, or thought about doing it. It was a game changer, but it wasn't easy. It took practice to ignore the distractions of people talking, children crying and the constant voice saying "stand clear of the closing doors.

If I got the option to sit, I would take it (unless someone else was in need, of course) because this was the easiest way for me to meditate and drown out all other distractions. If not, I would try and go towards the back or the front of the car to avoid people going in and out of the doors at each stop. I would have to carefully plan how long my meditation would be based on when I was able to start it. This was important. If I was completely zoned in and the meditation took too long, that meant I was probably going to miss my stop. All in all, by doing this I got a moment of peace during a very hectic time. It allowed me to clear my head and refocus for the day ahead.

Mediation isn't for everyone. Some days it was not for me and these were the days that I turned to reading while on the train. During work I would come across articles that really peaked my interest, but most of the time I was in the middle of something else and didn't have the time to read it right then and there. It was inconvenient to copy and paste the link to the article and then email it to myself to I could then read it later on the train.

An app called Pocket came to my rescue. I downloaded it to my phone and computer immediately. When I was on my computer, it allowed me to simply click a button on my browser and save whatever article I was looking at to the app on my phone. I could do the same thing on my phone and then later access the article later on my computer. The best part about this app, it accounted for people not having service while on the subway. Every article is saved locally on the app so there is no need for service when wanting to go back and read. Sometimes I used this as entertainment reading and sometimes I used this to learn more about what was going on in my industry and what I could be doing better.

I found every method added value in a different way. I no longer felt as if I was wasting time, and hiding from any human interaction. I am not set in a routine of having to fill out my to do-list on Mondays or meditate on Thursdays, I figure out what I am in the mood for and what is the best use of my time that day. I never thought that apps on my phone would turn the worst 80 minutes a day into an extremely useful time for me to accomplish something. Even though we often hear that we should turn off our screens and be in the present, being present in the subway just leads to unhappiness, irritation, and sometimes seeing things we wish we could unsee. Figure out how you can best use your time commuting and I would bet money that "there's an app for that."

Tuesday, Aug 30th, 2016

Jesse Nagelberg

A Few Words On Wordpress

In the role of a web developer who's worked on numerous projects involving Wordpress, and as someone whose friends and colleagues are seeking advice on the best web framework to choose, I often express the same opinion to them. I'm not a fan of WordPress. I believe that in several cases there are options that people overlook because WordPress is such a household name, and they assume that it's their only option.

I've been spending quite a bit of time lately wrestling around with WordPress. With an ever-growing competitive landscape in the web framework market, the options for your site are endless, making it difficult to choose the right one. As this isn't my first rodeo, I'm here to help guide you into making the right decision for you and your business.

I'm going to lay out the pros and cons of WordPress, my experience with it as a developer, and broadly cover some alternative services.

Everyone Has Heard of WordPress, But What Is It?

Built back in 2003, WordPress is currently the most popular framework with around 15,886,000 websites on the web and boasting an impressive 17 posts published every second on WordPress sites worldwide. WordPress.com gets more unique visitors than Amazon (126 million per month vs. 96 million per month) and WordPress.org powers some well known, highly trafficked sites such as CNN, Spotify, and TechCrunch.

It's important that I state that there is a big difference between WordPress.com and WordPress.org, here's a great resource on explaining this further. Simply put, the .com is the fully hosted version of the framework where there is no coding required whatsoever and you can pick from a range of themes and customize the designs yourself, much like SquareSpace which I'll mention later. You pick a theme and they handle the technical aspects for you. The .org version is the self-hosted version where you can install custom themes and plugins to get a more customized and feature rich website. In this article I'm mainly going to be talking about my experience with the .org version.

Wordpress is a Content Management System (CMS) that allows you to create, edit, and publish web content through their web interface. Out of the box, one would consider it a very useful product, offering inexhaustible numbers of themes, plugins, and options for integrations with 3rd party services such as MailChimp and contact forms. You would have everything you would need to build a basic website and the ability to create a far more advanced one if you so choose. These numerous features available to you are designed to take the whole development (i.e. coding) aspect out of your way by allowing you to create and edit content and utilize other tools on both the front end (visual aspect) and backend (data) portion of the site. An example of this could be dragging and dropping rows of text and images via tools like Visual Composer or creating, editing, and deleting blog posts that are created through your backend web interface.

Most importantly, WordPress has a huge developer community. In fact, it's an open source platform, meaning that the core code used to power the CMS is open to anybody to use and develop. Many developers can create their own themes and plugins to share and sell with the community making it an opportune choice for people to hop on the bandwagon and contribute.

This Sounds Great, But There's A Few Problems:

Despite its vast popularity and widespread use, someone simply uttering the word "WordPress" aloud stirs up several emotions and groans amongst developers and non-developers alike. WordPress is essentially the Regina George of CMS's in that it's really popular as the statistics have proven, but relies heavily on the work of the open source community, so can you really trust her? Would you reference stats from Wikipedia in a PhD thesis? You probably wouldn't, so why develop your site on the same foundation with WordPress?

Due to the nature of having this large open source community, there is a serious saturation of themes and plugins, inevitably meaning some bad apples in the group that lack in quality. "At this point in time there are over 44,000+ WordPress plugins which are downloaded more than 1.2 billion times." With these kinds of numbers it's unrealistic to be able to police the creation and sale of said tools because of the size and scale of the community. What this means for users is that they really can't feel comfortable choosing the right tool for their site, and usually have to resort to purchasing a "premium" plugin which will end up costing them extra money. Decisions... decisions... decision fatigue.

In my own recent experience working on WordPress sites for clients, I came across several speed bumps that made my development experience unpleasant. This includes, but is not limited to: broken tools, intrusive workarounds to get small customizations to work, visual bugs, and web interface bugs. WordPress is highly customizable, but has a steep learning curve and doesn't play nice when you want to make customizations.

Ultimately I feel that WordPress would be cumbersome for those that want to launch a new business quickly and without any setbacks, but may be appropriate for those with more time on their hands and who really want to gain a better understanding of CMS's and coding in general.

What About The Competition?

SquareSpace, Shopify, Weebly, Wix, Drupal, Joomla. No, I'm not just making noises with my mouth, these are some alternative services and web frameworks to WordPress.

These alternative services are similar to WordPress in a few ways, namely offering out of the box solutions for generating quick websites with a front end template and a database. These services don't require any development experience and are also customizable through their web interfaces. Take SquareSpace for example, with the main difference lying in the fact that where WordPress is an open source community, SquareSpace is not, meaning that their in-house development team produces all of it's tools specifically for it's users. SquareSpace would be a direct competitor of the .com version of WordPress.

These services both new and old are gaining traction, especially amongst millennials that want cool looking sites with minimal time and assistance required in building. In my next post I'll be talking more in depth about SquareSpace and my thoughts and experience using it.

Is A WordPress Site Right For Me?

The .com version would be the better choice if you're looking for something quick and easy that you can start building right away. I think there are so many other great services nowadays that it can't hurt to try a different one if you're looking to build a more advanced, customized site.

Thanks for reading and be sure to look for my next post taking a closer look at the pros and cons of SquareSpace.

Tuesday, Aug 2nd, 2016

Lizzie Healy

Homepage, Sweet, Homepage

10 seconds. That's all the time you have to make a great first impression when a user visits your website. 10 seconds to let them know who you are, what you're about, how you can make their life better, and why they should keep clicking. It's a tall order for just a few seconds, but is a crucial element to the success of your website and your business. This time is a brief chance for you to connect emotionally with visitors and show them, through a combination of a few critical elements, what you can do for them (without overwhelming them).

Relevant Images

Using images or videos on the homepage of a website is the standard for web design, but as with anything else, the quality of these images is ultimately the most important. When choosing an image or video, make sure that it is high quality and up to date. It's 2016, so don't choose a large image of someone holding a landline phone to represent your company (unless you sell landline phones). Avoid cheesy stock photos. Visitors pick up on it immediately if the images don't feel authentic and genuine. They should instead highlight what you offer, and reflect your businesses branding. This image or video is a terrific opportunity for you to convey what you offer without overwhelming your user with text. Take advantage of it.


In 6-12 words, your headline should let the visitor know exactly what your website or business has to offer. The headline is probably the trickiest element of your home page, because it needs to clearly and concisely convey why your business is unique, and why visitors can benefit from being there. It's important to remember that this headline should be about your visitor, not about you. They want to know what you can do for them, not the other way around. This is an easy element to change and update. You don't have to be married to it, so don't hesitate to keep working to make it better and more compelling.


The subheadline, which appears just below your headline but above the fold on your homepage, should compel users to dig deeper. In 1-2 sentences, your subheadline should spark the interest of a reader, showing clear value, and showcasing what you do. They don't have to be there, so don't waste their time. Keep the copy for your subheadline lightweight and easy to read, while positioning yourself as an authority on the topic that they can trust. It's a fine line to walk, and will also require a few tweaks before you hit a home(page) run.

Call to Action
Along with the subheadline, your homepage should include a call to action. When a visitor first clicks on to your homepage, it should be immediately clear what action they should take next. Should they find out more? Should they sign up now? Make their journey through your website as simple as possible, providing an obvious route to the next step they should take. This call to action should be clear, leaving no question as to where it would lead. It should also be compelling. Again, they don't have to be there. Make it worth their while.

Contact Information

Drake said it best, "you know when that hotline bling, that can only mean one thing: more qualified business leads generated." Pretty sure that's how the song goes. In order to connect with these qualified business leads, you need to provide easily accessible and up to date contact information on your home page. If you have a brick and mortar business, make sure you not only provide the address, but include a map so that patrons can easily find your business. In addition to being able to easily find your business, providing contact information adds credibility. People want to work with real people, in a real office, who they can really speak to! Don't make it hard for them to find you.

Social Media
Your marketing team spent 2 hours' yesterday lining up a keyboard with a notepad and pencil for the perfect flatlay picture (or wait, was that me?). Don't let those hours of effort go to waste. Get social by promoting your social media pages on your homepage. Use icons, and make sure that your links are all working properly. Just like providing accurate contact information, including social media posts and links helps to build trust with potential customers. It's no longer a value added, its an essential.

Keep it short, keep it simple.

Your website's homepage is your first chance to capture a potential customer and show them how you can make their life better with your product or service. With every element, its important to remember that a little can go a long way. Don't overwhelm your visitors with an overload of information and pictures. Every item that you do choose to include, remember: Branding, Branding, Branding. You have worked hard to carefully craft a voice, don't miss the opportunity to show visitors who you are and what you represent.

Tuesday, Jun 28th, 2016

Lizzie Healy

Shark Infested App Store: A Step by Step Guide to Analyzing your Mobile App Competition

My idea is killer. Why do I need this?

With over 2 million apps available in the Apple App Store, every week is Shark Week for mobile apps. A high level of competition in the app industry makes testing the waters before you jump in a requirement. Your idea for an app is probably great, amazing in fact! So amazing, that it may already exist. Or a variation of it exists. The only way to determine if your app is a unique, innovative idea in a saturated industry is to evaluate the available apps out there today. Completing a competitive analysis in the idea validation stage of building your mobile app accomplishes two things: it identifies a gap or need in the marketplace, and it serves as a chance to learn from those 2 billion other apps. Competitors are a resource, offering you a chance to learn from their wins and losses, and provide you with information to build an even more successful product. Determining your competitor's strengths and weaknesses can help your app compete on a larger scale. In this blog post, we will walk through the steps of completing a competitive analysis to help you determine whether your app idea will sink or swim in the mobile app market.

Step 1: Analyze Your Market

What category does your idea for a mobile app fall into? Begin your competitive analysis with some broad research about your app's category to determine if there is a need there. Is this an idea that people will find invaluable and not be able to live without? A key factor to look at during this step is the growth of the category or industry you are seeking to enter. A growing industry presents opportunities, but often comes with a higher level of competition. For example, say I was interested in creating a dating app. More and more people are using dating apps, but with this comes a greater number of apps popping up to provide this service. While not all apps will fall into a specific industry (some of the most successful mobile apps are creating their own industry), knowing whether it is a red ocean or a blue ocean will aid in determining your strategies for success. A red ocean means that your app is competing in an existing market space, with a high level of completion (bloody red market, appropriate given that it's Shark Week this week). A blue ocean means you are creating a product in an uncontested market space. You are not competing for users, but you also have to prove value in your concept. Knowing the market space that you will be competing in will shape the rest of our competitive analysis.

Step 2: Identify Your Competitors

Step 2 consists of identifying your direct competitors so that you can review what they are doing well and what they are doing poorly. This means taking a closer look at the current landscape of the marketplace to find anyone who provides a similar service or product to what you are creating. This will be an ever evolving list, as you should constantly be updating it with new competitors and monitoring features they are offering. Like most other things in life, identifying key competitors begins with a quick Google search. For our example of a dating app, I would search terms like "dating apps" and "most popular dating apps 2016." Make sure that results returned from your search are current so that you have an accurate representation of the current players in your field. My searches result in a quick return of articles summarizing and reviewing the best apps in this category. Success! Browsing through the search results, I can quickly narrow down the ones that world serve as a direct competitor to my app idea. You should also search the Apple App Store and the Google Play Store for your search terms to find what apps appear. When you find a similar app, it may also benefit to look at the related field in the app store to find additional competitors.

Step 3: Track Competitors

Now that you know who your competitors are, you can begin to evaluate them. Because I am a data nerd of Liz Lemon levels, I prefer to organize and track this information using using an Excel Spreadsheet. You may find that the best way to track your information is through a simple Word Doc. The important thing is to create a comprehensive overview of the features and elements that make your competitors apps successful (or not successful). Below is just one example of how to organize this data, listing all competitors across the top and our elements for analysis on the left.

Step 4: Analyze Competitors

Once you've determined which mobile apps you will be competing with and how best to track this information, you can begin to break down the elements of your competitor's apps that will be relevant for your analysis. These elements may vary from case to case, but specific data such as downloads, ranking, and average session length should always be included in reviewing a mobile app. These factors give us a greater level of insight into how people are using the current mobile apps so that we can draw conclusions.

For our hypothetical dating app, I would begin by taking a broad overview of each competitor's concept. This includes how it works, what makes it unique, the costs associated with it, and the locations that it is offered in. This step helps formulate the concept of my mobile app, and ensure that there is something offered by my app that differentiates it from what is already out there.

Second, I review the technical elements of the app including which operating systems each app works on and what integrations it uses. While I may not adjust my version one based on these factors, it will help me shape the future of the app and determine estimated growth.

Digging deeper into the data behind each app, I can also look at the number of downloads, the average length of each session, the number of daily users and the number of installs. This will provide information on how people are using apps currently and what trends we can expect out of potential users. This information may be harder to track down, and take a little more of a search effort to discover.

When you are testing your competitor's apps, take special note of the design elements that you like and don't like. Taking note of this will be useful when designing your own app, because you will already know what colors, text, and designs you want to use.

What are users saying about these apps? You have an incredible resource within the app store with user reviews. Reading reviews that users have left about your competitor's app gives you insight into what users want and don't want within an app. Pay special attention to trends, and don't get too bogged down in the details of this. You can easily get lost reading thousands of contradicting reviews, but seeking out obvious trends that appear in multiple reviews will be the best indication of what they have done successfully.

How did your competitor market their app? This is another category that may take some digging to unearth information on, but can prove invaluable when determining your marketing strategy. The best way to go about finding this information is to simply Google and read articles about their efforts.

Lastly, your competitive analysis should track what features your competitors offer. If every app that you look at has a message feature, you probably will require a message feature within your own app. Make note of what each competitor chose to include and what they did not choose to include.

Step 5: Draw Conclusions and Pivot

At this point, you have a wealth of knowledge about the other apps in your category. You know what features they include, what they look like, what makes them unique, and what users like and dislike about them. Now it's time to look at how you stack up. Does your app have growth potential? Does your app have profit potential? Based on your analysis, you can determine whether to pivot or move forward with the app the way it is. You can learn from your analysis, and continue to update it as you build your app and after launch. After completing your competitive analysis, you are now better equipped to navigate the shark infested waters of the app store. Good luck!

Thursday, Jun 2nd, 2016

Mike Trumpf

A Lesson In APIs

Disclaimer - This article is meant to provide a high level perspective of what an API is, and what it can do for your app. If you are a developer with API experience, this blog post probably isn't for you. If you are new to programming, an entrepreneur developing app ideas for the first time, or a non-tech person dealing with developers, this will serve as a handy cheat sheet reviewing the basics of APIs.

What Are APIs?
API stands for Application Programming Interface. An API is a set of requests and responses that you can ask and receive from another program. Applications create APIs that allow others to access their information or use their services. When you see the option to "Login with Facebook" on an app, this would be an example of an app using Facebook's API. When you receive a message alerting you that your Uber is on it's way to you, the messaging API Twilio is at work. Though you may not have realized it, you deal with APIs on a daily basis.

Why Use Them?
APIs can be a great way to "quickly" add new features to your app and gather information about your users. Having this information can also lead to a more personalized experience for them as well. When a user signs up for your app using their Facebook login, you can instantly gather a wide range of information on them, such as their name, age, location, gender, hobbies, friend list, etc. You can then use that information to perform a variety of actions in your app, such as filling in their user profile, tailoring custom content to them, connecting them with their friends already on the app, and much more. However, not all APIs fall under content gathering. Others, such as the aforementioned Twilio messaging API, can add tools to your application's workbelt. Actions like sending a text to a user that their cab is on its way, or texting a password reset code, would be a lot harder if it wasn't for the Twilio API. These service APIs open up a realm of new ideas and possibilities. Many times the "Ah ha!" moment for a new app idea comes from the release of a new API!

Are APIs Free?
There are many free-to-use APIs. In return they ask that somewhere within your app, you state that you are using them. They want that advertising! Other APIs are not free, but come with a free trial period. The purpose of this free trial period is for you to make sure that this API fits into your app the way you hoped it would. When the trial period concludes, you are generally presented with a subscription based plan.

All APIs are not created equally...
You may have noticed that when describing why to use an API, I have the word "quickly" in quotes. This is because not all APIs and their documentation are built equally. There isn't a standardized template for how to build an API, so it is completely up to each service how they allow users to make requests and receive information. It also may not be a priority for them to have extensive documentation on how to use their API. Integrating an API that has great documentation as well as a support staff at your disposal can be an amazing experience, as was mine with the Eligible API. On the other end of the spectrum, an API with terrible documentation can lead to hours searching for answers on stack overflow, and other features of the app having to be pushed back.

Places to find APIs
Interested in what kind of APIs are out there? There are services that can help you discover what is out there such as Programmable Web and Mashape. Sometimes the best thing to do is just a good old-fashioned Google Search. Who knows, there may be an API out there you've never heard of that makes one of your latent app ideas possible now!

APIs are a great way to add features to your application and make a more personalized experience for your users. Hopefully, with this knowledge you can see the power of APIs, as well as some of the challenges they can bring developers. It can be tempting to want a bunch of APIs integrated with an application. Who doesn't want more information about their users and more tools in their app? Just know that trying to integrate an API with weak documentation can have you spending hours on something that might be nice to have, when those hours can instead be used on perfecting what you already do have.

Friday, Aug 1st, 2014

Shawn Broukhim

To Code or Not to Code?

In a recent YouTube video produced by Code.org, President Obama, encourages young people to spend some time this week learning how to code. He remarks, "Don't just download the latest app, help design it." With these words, Obama joins the ranks of a number of other entrepreneurs and celebrities encouraging computer science to play a bigger role in our nation's education system. The idea seems to be that by learning how to write code, we will become masters over our technologies, rather than simply consumers of it.

As someone who recently learned how to build web applications in an intensive twelve-week long boot-camp, I agree that gaining computer literacy beyond basic use has changed my life. When I graduated college with a liberal arts degree, I felt frustrated by my lack of practical skills and found it difficult to secure a fulfilling job that paid the bills. Taking a bootcamp reversed my trajectory - I enjoy the variety of challenges in writing code and work at a place with people like myself.

However, the notion that coding is a new form of literacy, that we wouldn't be able to function as citizens if we don't know how to code, is a tentative one.

Having a solid background in the liberal arts has helped me to more easily grasp the ideas that drive programming, such as object orientation and behavior inheritance. So much of programming is not just math and science, but also rhetorical in nature - we are constructing systems, driven by conditional logic, being creative, visually and dynamically, and pushing the boundaries of our knowledge. In some ways, I didn't learn the true value of my liberal arts education, years of reading old books and writing essays, until I learned to code.

Steve Klabnik, a prominent coder and Ruby educator, gives a really interesting talk on Object Oriented Programming and its relationship to Philosophy. He begins by tracing a connection between classes and instances to Plato's notion of forms as abstract from real objects. The relation is helpful when designing objects and modeling behaviors - something we spend a lot of time dong while building web applications. He also identifies a direct relationship between RESTful practices and semiotics - that routes point to database entities in the same way a signifier and signified join together to form a sign. There is also a Google group about the relationship between Philosophy and Programming.

Even though coding is important, it is worthless as a skill if one learns it in a vacuum. The true merit of coding only becomes apparent if we experience it through the lens of whatever else we are interested in or passionate about. Overly stressing the importance of learning to code ignores the importance of a well-rounded and multifaceted education in developing individuals who are thinking and feeling beings. We must learn how to program, but only if it makes us better human beings.

Friday, Jul 25th, 2014

Jared Rader

A Shopping Cart For Your Web App

If you're looking to build an e-commerce web application, there is no shortage of tools you can use, from Spree to Shopify. However, it's not too difficult to build your own - which is something we were tasked with over the past week.

In this post, I'll cover creating a shopping cart that will keep track of products and their quantity and allow users to remove items.

Having read Agile Web Development with Rails 4, I decided to use that book's shopping cart implementation. I'd encourage you to go through the book, especially if you're new to Ruby on Rails, but I'll give you an outline of everything required to make a robust shopping cart for your web application.

At least four models are necessary for an e-commerce site: Products, Carts, Orders and Ordered Items (which is a join table between products and orders and products and carts).

Creating and retrieving our cart

Because setting a cart is functionality we'll need to access among different controllers, a great place to put it is inside the concerns folder provided by default in Rails 4. In here, you can create a module where you retrieve the right cart object based on the cart ID stored in the session, or you create the cart if it doesn't yet exist.

module CurrentCart

extend ActiveSupport::Concern
def set_cart
@cart = Cart.find(session[:cart_id])
rescue ActiveRecord::RecordNotFound
@cart = Cart.create
session[:cart_id] = @cart.id

The astute reader may look at this and say, wait, what happens when a customer creates a cart but then abandons it? That's a great question, and there are a number of things you could do to handle this scenario. You could create a cron job that checks how old the cart is and determine an expiration date, upon which the job destroys those cart records. On the other hand, you may not want to destroy the carts, especially if you add users later on and associate carts with users. Abandoned carts will help you determine which users aren't checking out, which can be useful information.

Adding products to our cart

A good time to call our `set_cart` method would be at the moment a customer decides to add an item to their cart, or in terms of our web application's functionality, right before creating an Ordered Item record:

class OrderedItemsController < ApplicationController

include CurrentCart
before_action :set_cart, only: [:create, :update, :destroy]

def create
if @cart.save
render partial: 'carts/shopping_bag', locals: { order: @cart }
flash[:error] = 'There was a problem adding this item to your shopping bag.'
redirect :back

To include the current cart functionality, all you need to do is `include CurrentCart` in the controller. Then you can use a `before_action` filter to specify which actions need to retrieve or create a cart.

You probably also noticed the `add_product` method on cart. This is a special method we create on the cart model that allows us to create initial Ordered Items records, as well as keep track of the quantity of the same product. If we simply used `@cart.ordered_items.build`, we'd be creating individual records of the same product each time.

Let's take a look at the `add_product()` method:

class Cart < ActiveRecord::Base

def add_product(product_args)
current_item = ordered_items.find_by(product_id: product_args[:product_id])
if current_item
current_item.quantity += product_args[:quantity].to_i
current_item = ordered_items.build(product_args)

This method differed a bit from the one in Agile Web Development. In our application, users could choose the quantity of items they wanted to add, rather than adding them one at a time. So a quantity parameter was always being passed to the controller action inside of `product_args`.

`add_product()` checks for the existence of the Ordered Item record in the cart. If we have the same product in our cart, it simply updates the quantity and saves the record. Otherwise, we build the relationship and return the item.

Adding and removing products

Like most e-commerce sites, we built a page where customers can look at their cart and update the quantity of items or remove them entirely. This calls for two more actions in our Ordered Items controller: update and destroy:

class OrderedItemsController < ApplicationController

include CurrentOrder
before_action :set_cart, only: [:create, :update, :destroy]
before_action :set_ordered_item, only: [:update, :destroy]

# ...

def update
@ordered_item.update(quantity: params[:quantity]) if @ordered_item
if @ordered_item.save
render json: { itemPrice: @ordered_item.quantity * @ordered_item.product.price, subtotal: @cart.total_price }
flash.now[:error] = 'There was a problem updating your shopping bag.'

def destroy
render json: { order_total: "$%.2f" % @cart.total_price }

def set_ordered_item
@ordered_item = @cart.ordered_items.find_by(id: params[:item_id])

Now we have everything we need to keep track of items in a customer's cart.

In my next post, I'll cover how we handled check out and processing orders with ActiveMerchant and Authorize.net.