Kloudless Walkthrough: Building with our Open-Source Authenticator JS Library

This post was written by our engineer Chris Prochnow.

In this walkthrough, we’ll use the Kloudless open-source Authenticator JS library that prompts the user to grant access to a cloud service. We will look at the set-up of a basic web server, and explore how to use the Authenticator to set up a client-side form with all the data needed to send to the server-side for API requests.

We’ve written Authenticator.JS documentation that we will reference through the article. You can find it on GitHub here.

Getting started

Here is a form with all the fields needed to create a basic text file, which will eventually be stored in the Google Drive account that the user has been granted permission to access.

html


<form action="/post" method="post">
  <span>
    <input type="text" name="fileName" placeholder="File Name">
  </span>
  <span>
    <textarea name="fileBody&quot; rows="7">File text here.</textarea>
  </span>
  <span>
    <button type="submit">Create and upload file</button>
  </span>
  <input type="hidden" name="access_token" id="access_token" value="">
  <input type="hidden" name="account_id" id="account_id" value="">
</form>

Our web server is based on Node and Express. We will use the submitted form data to create a file, verify the authentication token, construct an API call, and run some cleanup once the action is complete. If you look at the code above, there are two inputs with the type=“hidden” that do not yet contain values. The values account_id and access_token must be supplied to us in order to access the storage service. Here is where the Authenticator JS library comes in.

First, we must obtain the correct values. To do so, we’ll need to embed the Authenticator in the client-side page using this script tag, which is documented in the Authenticator’s README here.

html

form2

This exposes a global Kloudless object, which contains the  Kloudless.authenticator method. This method is what we’ll use to trigger an authentication pop-up for the end-user:

Kloudless.authenticator(element, params, callback)

Before that can happen, we need to set up some logic to handle the end-user’s input: 

  • element is the triggering action. For this example, I’ve used jQuery to set the triggering element.
  • We also need to pass the configuration to the Kloudless.authenticator method to suit our application needs. These are required parameters that the end-user does not need to be aware of, but that do need to be passed in to the authentication.
  • At the minimum, you must pass the Kloudless application ID to identify the Kloudless app. This is provided as the client_id.

In our case, we only need to authenticate one service, Google Drive, so we will also be setting the scope to 'gdrive' in our configuration. The config will look like this:

  const config = {
      'client_id': ‘[YOUR CLIENT ID HERE]’,
      scope: 'gdrive',
  };

This gives a great setup for the authenticator.js!

Let’s see how what we have so far could be laid out:

$(document).ready(() => {
  const config = {
      'client_id': ‘[YOUR CLIENT ID HERE]’,
      ‘scope’: 'gdrive',
  };
  let auth = Kloudless.authenticator(press, config, callback);
});

Pairing data with input sources

The next pieces we need to include will be adding additional JS to set our received data to the correct inputs in our form, and setting a callback function that will determine what we do with the response data. The JS setup is pretty quick and involves defining some variables required using jQuery.

const $press = $('#submitAuth');
const $account_id = $('#account_id');
const $access_token = $('#access_token');
const $uploadButton = $('#uploadButton');

Callback function

Now for the callback function setup. We’ll need to handle errors, as well as decide what we’ll do with our successful data. Using the variables we just set up, we can reset the input values with the returned information:

let callback = function (result) {
   if (result.error) {
     console.log('An error occurred:', result.error);
     return;
   }   

    $account_id.val(result.account.id);
   $access_token.val(result.access_token);
   $uploadButton.prop('disabled',false);
 };

Our authenticator.js should now look something like this:

$(document).ready(() => {

 const config = {
     'client_id': 'NyRVsMqKtYS7g9t40WuSqhJCAxi4ANZ3p6MOsKfCFjXX_xcb',
     'scope': 'gdrive',
 };

 const $press = $('#submitAuth');
 const $account_id = $('#account_id');
 const $access_token = $('#access_token');
 const $uploadButton = $('#uploadButton');

 let callback = function (result) {
    if (result.error) {
      console.log('An error occurred:', result.error);
      return;
    }

    $account_id.val(result.account.id);
    $access_token.val(result.access_token);
    $uploadButton.prop('disabled',false);

  };

  let auth = Kloudless.authenticator($press, config, callback);

});

With that, we now have all the data needed to send to our server-side code to make an API call. This initial set-up uses an OAuth Kloudless key, which will be sufficient for basic development needs, but will be subject to rate-limit restrictions.


Setting up your own OAuth credentials

The next part of this blog will discuss how you can set up your own OAuth credentials. We’ll continue to use Google Drive as our example. 

Setting up these credentials provides several benefits: it allows you to manage your own tokens, implement a better branding experience, and exempt you from sharing the rate limits/quotas that Kloudless default keys are subject to. So let’s dive in!

To start off, navigate to the OAuth Credentials page in the developer portal for your app. You can find this page under Security -> Credentials in the developer portal. Be sure to select the correct app from the dropdown menu in the top left corner of the page.

You should see a list of cloud storage services that looks something like this:

credentials1.png

In our example, we are looking for the listing for Google Drive. When you find that entry, you will see that Google Drive is by default set to the Default Kloudless keys.

If you have existing accounts connected to the Default key, you will see a message denoting the number of accounts using that key, and an option to delete these accounts bordered in red, with some additional information.

credentials2.png

We do not need these accounts to continue to have access, and would like to have them re-authenticate through our app in the future. In this case I will check the box to have the existing accounts deleted.

Please note: this deletion does not affect the contents of your account or delete the account, but they do remove access to the account the keys are associated with.

Once you click ‘Save’, the first thing you’ll see is several new fields with instructions and helpful information specific to OAuth tokens and Google.

credential3.png

Keep this browser tab open—we’ll be coming back to it in a bit.

We’re now ready to head over to the Google Developers Console!

If you haven’t yet, create a new Google project. This is where you’ll manage apps and services that request access to your users’ Google accounts, and generate a Client ID/Consumer Key and our Client Secret/Consumer Secret.

Once that is done, there are a few steps to follow to get the information from the Google project. It should look something like the image below once you have created the project, with your project name in place of ‘kloudless test auth’:

credentials4.png

Our next step is to create the credentials needed for the Kloudless app. Click on the ‘Credentials’ tab to look at our options for creating credentials. In this case, we’re creating an OAuth Client ID, so select that option and then select the correct application type. In this case, I selected ‘Web application’.

All right! We now have a Client ID/Consumer Key and our Client Secret/Consumer Secret.

We’ve got something else to edit in the Google Developers Console: the callback URL or Redirect URL. Refer back to the Kloudless Credentials page and grab the link supplied there. Copy and paste that into the field under ‘authorized redirect URIs’, and click save.

credentials5.png

Note: keep in mind that the Client secret is just that—a SECRET. Be mindful of where you save it, and do not leave it exposed in your documentation.

Finally, head back to the Kloudless Credentials page. Enter the Client ID and Client secret into their respective fields, and save the app.

That’s it—you’ve successfully moved your app from using the default Kloudless OAuth keys to your own OAuth keys! 😀🎉


Conclusion

We hope that you found our introduction to the Kloudless Authenticator JS library useful. As we grow, we’ll be expanding our open-source initiatives—and the accompanying guides, walkthroughs, and other materials—so stay tuned for more posts like this one.

Want to build on these initiatives? Come join us—we’re hiring across a ton of different functions in our Berkeley, CA and Taipei, TW offices!

Securing enterprise data across cloud services

We’re right around the corner from this year’s RSA Conference, held in San Francisco from April 16-20! As the conference approaches, it’s the perfect time for enterprises to evaluate their security priorities for the coming year.

What’s new in cyber security?

Interest in cyber security solutions has risen dramatically this decade. We know that the average enterprise is increasingly adopting online cloud-based SaaS tools for use in a variety of situations, from workflows and productivity to software development. But as data moves from traditional on-premise content repositories to the cloud, data becomes fragmented across a multitude of ecosystems. As a result, new technologies are emerging to protect data outside the safety of a corporate firewall.

Source: Stacy Jones from Fortune graphs Wade Baker’s analysis of RSA data.

Given the sensitive nature of security in the enterprise, it’s imperative for an enterprise’s security initiatives to align and adapt to a continuously evolving threat landscape. Yet it’s no ordinary feat to uniformly and reliably monitor activity on every disparate cloud service used by an organization.

Announcing new Kloudless Security APIs

When we launched the first Kloudless unified API a few years ago, we didn’t expect the variety of data security solutions that we would enable. Several of our users, customers, and partners are RSAC sponsors, where they showcase security solutions connecting to business applications like Office 365 and G Suite via Kloudless.

As it turns out, our unified APIs offer strong benefits designed for apps offering security solutions for cloud services, including, but not limited to:

  • Capturing information on all organization data in the cloud service, and who can access it;
  • Monitoring any and all activity occurring organization-wide;
  • Remediating threats using the Kloudless unified APIs for Storage, CRM, ITSM, and more;
  • Running Kloudless Docker containers on-premises to meet and exceed custom security and compliance requirements.

We’re dedicating more time this quarter to improve our security solutions with robust and relevant features that our users have been asking for. Today, we’re excited to announce two new versions of API endpoints targeted specifically for security integrations:

  • Unified Audit Events
    • Kloudless makes a stream of event data available in a consistent format. This includes information on any data being modified as well as behavioral events like logins, sharing, user/group creation, etc.  

  • Unified Permissions
    • Access controls are vital to any security company, and these controls can be extremely complex. The Kloudless v2 Permissions API provides granular information on the various access levels available on objects.

See you at RSA!

We’re looking to launch additional data security solutions in the upcoming months to complement the suite of v2 endpoints we released today. At the RSA Conference, we’ll be learning more about current trends, so we can include the most relevant features in our solutions.

Interested in meeting up at RSA? Drop us a line at hello@kloudless.com!   

Kloudless raises $6M to ease the software integration process

Website graphic

We’re thrilled to announce that we’ve raised $6M in Series A funding in a round led by Aspect Ventures, with participation by Bow Capital, Alibaba Taiwan Entrepreneur Fund, Heavybit, and Ajay Shah of Silver Lake Capital!

With its one-to-many approach, Kloudless Unified APIs free developers and product teams from building tedious and expensive one-off integrations. Try it out here.

At Kloudless, we have a firsthand understanding of how frustrating it can be to build the integrations we need. In our increasingly interconnected world, new SaaS services launch daily, and each one offers a unique API with its own documentation and features. It’s little wonder that API usage has exploded in the last few years.

In 2015, our team set out to change the way integrations were built by creating a developer-first solution to the problem—and in the process, became the first integrations platform to offer a solution tailored to the unique needs of developer and product teams. Our Unified APIs eliminate the redundancies of building integrations and now free thousands of developers to focus on their core product.

Since then, we’ve:

  • Grown from our small Berkeley-based team of 5 to 20 (and launched our first-ever international office in Taipei, Taiwan);
  • Welcomed Blackboard Inc., PlanGrid, ShieldX, OneIdentity, and other great companies to our platform;
  • Built up a strong community of over 15,000 developers from 4,000 different organizations.

We’re immensely proud of how far we’ve come and are equally excited to start the next chapter of the Kloudless journey!

What’s next?

Our new round of funding will help Kloudless to continually grow the success of our users, our platform, and our team.

Some of the technical improvements we’ve already planned include:

  • Boilerplate API integrations for any SaaS service’s HTTP API, with the help of automation
  • A new framework for workflow automation built on top of Kloudless’ extensive API platform
  • Expanding API unification and cross-connector capabilities like KQL
  • Additional production-ready UI tools to solve workflow use cases for companies in any industry

Of course, there’s more to come—so stay tuned!

Built by developers, for developers

Our new round of funding also makes it possible for us to make a concerted investment in initiatives that ensure the vibrancy and connectivity of the developer community.

As our users grow, we’ll create high-quality documentation, strengthen our SDK offerings, and cultivate responsive community forums to ensure that the experience of building with Kloudless continues to be efficient (and, dare we say, enjoyable!). Our efforts will focus on the most common use cases that our users encounter when integrating with other services.

Conclusion

We’re excited to tackle our road map and delight our users with new Kloudless platform expansions and features. To our existing Kloudless users, thank you for your support all these years – we wouldn’t have gotten here without you.

Haven’t tried Kloudless before? Sign up for a free account here to get started today!

We’re also hiring for a bunch of different functions, from Marketing to Sales to Engineering, in our Berkeley and our Taiwan offices. Check out our listings here!

About Kloudless

Kloudless’s unified APIs enable developers to code once to connect their applications to several software services instead of integrating with each API individually. Businesses use Kloudless’s unified API products to connect to many kinds of enterprise applications like Salesforce, SharePoint, Box, Dropbox, G Suite, Slack, ServiceNow and more.

Kloudless is trusted by more than 15,000 developers in over 4,000 organizations. To learn more, visit https://kloudless.com.

Kloudless Treehouse Adventure

Eight weeks previous, the Kloudless HQ team found themselves in a literal treehouse in Guerneville, California, for their annual retreat.

Image uploaded from iOS

The treehouse in question…

Image uploaded from iOS copy

…and the accompanying view!

The following is a vivified recount of the trip’s exciting festivities—and, for all of our readers, a fascinating peek behind the scenes into Kloud culture.

Day 1

Upon entering the treehouse, VP Engineering Tim, Kloudless’s resident man of culture, was greeted with one of his favorite things as a surprise birthday present from the entire team!

IMG_6848

Tim and his beloved Johnnie Walker Blue Label Scotch Whisky

As soon as the whisky was safely delivered into Tim’s outstretched hands, beds were claimed, and the house was settled into, the team prepared to launch themselves into a bold exploration of the wild naturescapes and mysterious shorelines of Northern California…

First, our engineering team went to the beach to immerse themselves in the salty sea breeze and trademark chilly temperature characteristic of beaches of the area:

IMG_6830

The elusive “outside,” the likes of which engineers are rarely able to witness.

20170815_152259

Some of our engineering team looking fresh! I mean, just check out those shades on David “dthorman” Thorman, our Head of DevOps.

IMG_6841

CTO Vinod, walking softly while also carrying a big stick.

Once the team satisfied themselves with their amount of exposure to the outside world, they settled back into their lodgings for the night, ending the day with food, drinks, and – naturally – a couple of intense games of Catan.

The centerpiece of the night? A delicious homemade paella cooked by Dthorman and Tim:

Image uploaded from iOS (1)

Fun fact: Tim is allergic to eggs, which is probably why he made paella instead of fried rice.

Soon enough, the Kloudless team found themselves falling into a groggy paella-and-whisky-induced slumber…  


Day 2

The next day of the retreat began with the team scarfing down a plentiful breakfast of fresh blueberries, croissants, pastries, scrambled and fried eggs (which Tim was unable to consume), bacon, and orange juice.

DCIM100GOPROGOPR2143.JPG

We have no shame in admitting that we got that box of croissants in the corner from Safeway.

The goal for this carboload-fest: absorb enough energy to sustain the body for the 4-hour-long kayaking trip down the Russian River that was scheduled in the itinerary for the day.

DCIM100GOPROGOPR2145.JPG

We weren’t sure why the water was green.

DCIM100GOPROGOPR2148.JPG

CEO Eliot (in center) with the rest of the team! Fun fact: when Eliot was in college, he was a star athlete on the Cal Dragonboat Team…which of course meant that everybody wanted to be paddled around in Eliot’s kayak.

 

20170816_140622

Our lovely and chipper office manager Sophie and the effortlessly cool (though distinctly less chipper) Dthorman take a short break from rowing.

20170816_140630.png

Vinod takes a break (and a selfie) while the rest of the team continues to row the kayak along the river. Fret not – no enmity arose in response to his break, even if his lack of help did make the boat harder to row.

For dinner, Sophie played head chef as she barked out orders to Tim (acting sous chef) to mince garlic and clean chicken legs. The finished result? An incredibly scrumptious and authentic dinner of fragrant Hainan chicken rice, with a comforting yet satisfying side of fishball and Napa cabbage soup:

20170816_183405

If you can’t tell by now, food is a huge part of Kloud culture. You won’t find any Soylent bottles here.

Many thanks to Sophie’s dad for the recipe – the Kloudless team had a lot of fun making (and eating it)!

After dinner festivities included classic video games (Mario Kart and Super Smash Bros. Brawl), more board games (Codenames and more Catan), more drinks (Tim’s birthday present, as well as varieties of beer), and to top the night off, several rounds of poker.

20170816_204649

Our software engineering intern Ellen “smashed” everyone at Smash, but Eliot cruised effortlessly into first place every single time at Mario Kart.

20170817_010850

Software Engineering Intern Matthew Soh showing off his winnings for the night. (He cashed out at $8.50 with a high-roller buy in of $1 – at Kloudless, we endorse responsible gambling habits.)

All in all, a great retreat in the books for the Kloudless team! 


Join us!

Are you a board game or whiskey aficionado? Think you can beat Eliot at MarioKart, and Matthew at heads up poker?

Or do you simply want to enjoy some delicious paella, Hainan chicken rice, and ice cream with us? 

We’re hiring for engineering, marketing, and sales in our Berkeley and Taiwan offices! Find our job openings here.

An Eventful Update

Kloudless developers can now manage their events even more efficiently using the new Events Endpoint updates. Check out what our engineers have been tinkering with below!

Kloudless Enterprise Events

Connect your Admin account and get access to organization-wide events. Enterprise Events can obtained through the normal events endpoint. The user responsible for the event is specified where applicable. 

Events Endpoint Pagination

The Events endpoint now supports requests of a specific page size and also returns the number of remaining events. It also supports only the retrieval events created after the cloud account has been connected to the Kloudless application. Additionally, a more granular list of event types is also now available, instead of + and -.

S3 Event Notifications

Event data and webhook notifications are now available for changes to data in S3 accounts. Any S3 accounts requiring this feature must be reconnected.

Whether you’re using the cloud, private installs, or Enterprise version of Kloudless, this new update enables your application to respond to activity in cloud storage more effectively.

Not a Kloudless developer yet? Click here to get started. Questions or feedback? Feel free to drop a line at hello@kloudless.com

Where in the World is Kloudless?

It’s been a whirlwind that’s keeping Team Kloudless BUSY! Here’s what’s coming up soon — we hope you can join us for some (or all!) of these activities, because you are awesome and they’re just plain fun!

Kloud Kantina

Kloud Kantina
Every other Wednesday, Kloudless hosts a free Happy (work) Hour for open co-working. Stop by with your projects and share what you’re working on. Get feedback from other smart people over pizza and beer.

The next Kloud Kantina is this Wed., 5/21, at Kloudless HQ. Click to register on Eventbrite today! Registration closed? Just tweet @KloudlessAPI with the #KloudKantina and we’ll let you in!

kloud-kantina

Egnyte logo
Egnyte Webinar Series, Egnyte API: Develop New Integrations
On Thurs., 5/22, our very own CEO Eliot Sun will be hosting a webinar with Egnyte’s principal product manager, Sean Puttergill. They’ll discuss what to do if you need to integrate 3rd party storage (such as Egnyte!) with your current internal applications and workflows. You’ll learn how to:

  • Access the API and start developing today
  • Easily develop new enterprise applications
  • Streamline your email workflow with Kloudless and Egnyte

Specifically from Eliot, you’ll learn:

  • What problem is Kloudless solving?
  • Evaluating Egnyte for fit and features
  • Implementation and experience
  • Outcome and learning

Register for the Egnyte API: Develop New Integrations webinar here.

Looking for fun Memorial Day Weekend plans? Kloudless will be at Hack UCI in Orange County. Eliot and the Kloudless team will be on hand to help you with whatever you need. While our expertise is in integrating cloud storage services, we’re pretty good at getting the network back up, helping out with GitHub set up, or just being around for a Settlers of Catan break. Stop by, say hi and grab some swag!

Screenshot 2014-05-19 14.23.08

AutoDevBot API Conference and Hackathon in SF is where co-founder Brian Tang and the rest of the team will be! We’ll be speaking on API design and development, drawing from our experience creating the Kloudless API. Want free or 50% off conference tickets? know in the comments below, or tweet @KloudlessAPI!

autodevbotnewlogo

We hope you can join us at any or all of the above events. Any cool developer community events you’re excited about? Let us know in the comments below, or tweet @KloudlessAPI to let us know about them!

Eat, Drink, and Talk Tech: Kloud Kantina is coming to YOU!

The inaugural Kloud Kantina saw 25 technologists and entrepreneurs gather in Berkeley for a midweek happy hour with work and networking in a relaxed, casual environment.

Lise and Jackson preparing for Kloud Kantina

These events are held so that developers of all levels can meet up, brainstorm, get feedback from peers and experts while indulging in some great food and drinks.

Attendees from the first Kloud Kantina, hosted April 23 at Kloudless’ Berkeley headquarters said it was a great opportunity to get help on current projects and were excited to learn about and connect with community resources they were unaware of.

Kloud Kantina

The Next Kloud Kantina

This Wed., May 7th Egnyte is opening up their new Mountain View headquarters for the next Kloud Kantina. Join us and Egnyte from 6-8 PM for fun, food and drinks. Space is limited, so reserve your ticket here.

Kloud Kantinas will continue every other Wednesday throughout the Bay Area — keep an eye on our Facebook or Twitter to learn more about the next Kantinas. Not Bay Area based? No problem! Let us know where you’d like to see a Kloud Kantina! We’ll host them throughout the U.S. in select cities and let us know if you want your city to be on the list.

Want to get involved in Kloud Kantina? I’d love to chat with anyone who is interested in connecting developers to resources, fostering innovation and growing the community. Tweet at @KloudlessAPI with the #KloudKantina or just drop me an email.
Hope to see you at Kloud Kantina!

Kloud Kantina Banner

Migrating Google Docs to Google Drive

Google’s Data Standardization

Google has been known as the king of (big) data, and Kloudless integrates with Gmail to move data from email to cloud storage. Google’s push for organizing the world’s information and making it universally accessible and useful was ahead of its time. This clearly shows in Google’s design of a data protocol for developers to develop products on Google’s platform. When Kloudless integrated Google Docs, it was part of a larger list of “GData” APIs.

The Documents List API was part of a greater set of APIs following the Google Data Protocol. Besides docs, there were:

  • analytics
  • apps
  • blogger
  • books
  • calendar
  • contacts
  • exif
  • finance
  • geo
  • health
  • marketplace
  • photos
  • sites
  • youtube

When Google Drive was introduced in 2012, Kloudless had an opportunity to retool its functionality. Recently, the rise of JSON has led to APIs moving to a different data standard.

Migrating from Documents List to Drive SDK

The Google Drive SDK uses the same infrastructure as the Documents List API; however, there are a few key differences beyond the inherent syntactical changes.

Authorization Mechanisms and Scopes

At Kloudless, we wanted to facilitate users’ account creation and management. Part of this process was to help users keep track of their identity with OpenID, OAuth 1.0 and OAuth 2.0. Switching from Docs to Drive meant that beyond just switching scopes, we would be moving to a pure OAuth 2.0 implementation to authorize users. Google overhauled their entire authentication system beyond just Google Docs to promote Google+ sign in. The OAuth protocol is an open standard for authorization and many services moved away from the OAuth 1.0 RFC specification to the OAuth 2.0 RFC. OAuth 2.0 focuses on client developer simplicity while providing specific authorization flows for web applications, desktop applications, mobile phones, and living room devices.

Design and Data types and Atom Pub XML to JSON

While Kloudless predominantly uses JSON in most of its API, Google’s Data protocol allows for differentiating data types more succinctly and creating resources with both JSON and Atom Pub XML.  The underlying file store of GDrive allows for more robust querying based on the numerous metadata attributes in the XML (now also in JSON).  Furthermore, Google Drive allows you to have multiple files with the same name and to have multiple parent folders.  The structure of Google Drive is extremely flexible although Collections are now deprecated.

File uploads and secure file storage!

Google Drive allows for 10GB uploads to their service.  While other services allow for unlimited file size like Dropbox (through chunked uploads / desktop client) and Bitcasa, Google Drive’s free tier has a 15GB limit with the cheapest options to upgrade for storage.

You also have the most comprehensive access controls for a consumer application of files with Google Drive.

ss1

ss2

Advantage: Kloudless

Kloudless works hard to have the most current API, so developers can work on user focused applications without worrying about features that no longer exist.  With every major revision to an underlying cloud storage API, Kloudless will update its back-end infrastructure to account for changes with seamless integration.  So for example, any user of the Kloudless product would not have noticed any change when moving from Google Docs to Google Drive.  We aim to provide the same seamless upgrade for all of our cloud storage services in our API.

Let us know if you’ve migrated from Google Docs to Google Drive and what you think!

A LAUNCH Recap

Hello Everyone!

I’m Vivian, and I’m the current marketing intern at Kloudless. I’ve been working here since January and so far it’s been an awesome experience. For the last month, I’ve been supporting our marketing team in creating awareness around Kloudless and our partner platforms. If you haven’t already heard, we’ve just welcomed Copy.com users to the family with our newest integration.

I’m here today to introduce our newest series… Frontback Fridays! Frontback takes a photo using both the front and back camera on your phone. Think of it as an enhanced selfie.

While cliche, the work hard play hard mentality gets us through every day. And in the spirit of sharing, here’s a glimpse of what that actually looks like.


If you like it then you better #PutASunOnIt

This week I was sent to the LAUNCH Festival. I hung out in the demo pit and checked out a lot of cool new companies.


Me holding back tears of jealousy.

The Omni booth was definitely the first thing that caught my eye! Someone told me this particular employee has been “demonstrating” the product for about an hour now. I guess this guy is just really dedicated to his job.


Guy in the back is in complete awe in his presence.

What’s in the middle of a small crowd forming on the demo floor?  Hey! It’s Mark Cuban being interviewed by Swell Radio.

Thanks Poppin for the chic notebook swag!

Lise and I observe as CEO Eliot makes friends with the guys at Lob.  They’re working on a simple API to integrate print & mail solutions into applications. Seems like something that would work really well with our new platform for developers.

6A1o_frL0a6r8KbkQjAFRithHMe42Zih3QJfCJkbvLQ

Won an hour of cleaning services, woo!  Handybook makes finding a maid or handyman as easy as booking a hotel room.

POP Poll! Who do you think is more fun?! Lise or Eliot? We’re trying to figure it out via Bedloo!

r2d2
Does this remind anyone else of EVE from WALL-E?

Last but not least, looks like someone re-invented R2D2. The Knightscope robot uses numerous sensors and predictive analytics to predict and prevent crime. It’s designed for large spaces, like campuses, vacant buildings, and warehouses.

Clear skies or not, it’s a Kloudless day! Thanks for reading! What other new companies should we be excited about? Let us know in the comments.