Mist.io for DigitalOcean, and Every Other Cloud Provider, Is Awesome

Control all the things!

I love mist.io. However, I’ll stick with DigitalOcean Swimmer (Android only) for now. There’s even a few good looking iOS apps, but I haven’t tested them, Droplets for DigitalOcean and DigitalOcean Manager. Hopefully, paying for monitoring as well is something I can justify in a few months, when I have a steady job or am getting along with freelancing, which is really what I’d like.

But anyway, mist.io is a really nice service, but the website could use an update. It almost has a standard jQuery mobile feel to it. However, I do know they’re working on some UI changes that should be a vast improvement. But aside from that, the functionality is itself great. You can do the usual, like create new droplets, edit droplets, and you can add multiple backends.

Backends in mist.io are just connections to hosts, like DigitalOcean or Linode. They support a lot of backends, like RackSpace, OpenStack, AWS, HP Cloud, NephoScale, and even bare metal.

The DigitalOcean Swimmer Android app has a great interface, too. It seems to mostly abide by the Android style guide, which is freaking awesome. There’s a little gallery at the end with some screenshots of it as well as the mist.io website.

I love all the apps that support DigitalOcean (referral link), it’s partly why it’s so appealing to me. I really like mist.io because it supports sooo many providers though. The mist.io site looks good on a mobile device, but could still use some updating, which I’d be surprised if they weren’t already working on.

When I do add another different hosting provider (probably Linode), I’ll happily pay for the mist.io service. A real, native Android and even iOS client would be killer, please mist.io? :)

Photos below are of the mist.io site and a couple screenshots from the DigitalOcean Swimmer Android app. For iOS screenshots, see here and here.

Have you used mist.io prior to reading this post?

View Results

Loading ... Loading ...

At the very least you should give mist.io a try. All of the management features are free, like SSH key management, spinning up machines, and image managemenet. Monitoring is the only thing that is paid. So, you can get some really good use out of mist.io totally free!

Host a Personal Data API on Heroku

Josh Beckman makes some pretty cool stuff. One of my favorite creations of his is Stark Lines. He’s also got a pretty neat API on his site that allows others to query it to get information about him. It’s at http://www.bckmn.com/api. Some of Josh’s JSON is generated on the fly with data from other API’s, and is built with Node.js.

You can make a similar API for your website really easily with a little PHP and Heroku. I put the whole thing up on GitHub so you can contribute (programming language examples especially) or totally make it your own.

I wanted to make it really easy for anyone to setup. You could get it setup with nothing but a text editor. Hosting your Personal API on heroku is quite nice as it provides great speeds and relatively good uptimes. Plus, if you’re a git fan, git push heroku master feels really good, lol.

Do you use Heroku for anything?

View Results

Loading ... Loading ...

Of course, there’s always some concerns.

1. A Standard

Ideally, every “personal site” with an /api URL or api.* subdomain should contain the same info, or MOST of the info, probably just the basics like name, age, langues, and location (maybe). If their was a standard it’d be very easy to grab info about LOTS of people, which may or may not be such a good idea. And that leads nicely to my next point

2. Privacy

There’s obviously some things you don’t want public, like your address and probably phone number. If you do implement a personal API like this, I suggest you modify the array to suit your needs. It’s extremely easy to edit, all it requires is a text editor, like Sublime Text. If there was a “Standard” personal API like mentioned above, it’s be very easy for attackers to just hit every website at /api or /api.php and pull down all the data.

Enough with concerns, gimme more

The benefits are pretty endless, especially depending on what kind of info your API provides. For example, people can fetch my name, employer, age, blogs, sites I run, generic family information and various other things. Authentication would be a good idea, too. You could provide relatively harmless info, like name and age, to the general public, but could require an API key to get even more JSON. That way, you could give friends and family access to more information.

Run It!

This is built to run on Heroku. Here’s a pretty basic way of deploying to Heroku.

  1. Fork tlongren/personal-api on GitHub and make a local clone.
  2. Install the Heroku Toolbelt and login to Heroku with the command “heroku login“. Enter your username and password to login with the Heroku Toolbelt.
  3. Create a new app on Heroku either through the web interface, or with the command “heroku create“. If you do it with the command line the app name will be shown to you, see here.
  4. Open a terminal and go into the folder that you cloned your fork into and run the command “heroku git:remote -a heroku-app-name“. That will add a remote named “heroku” to your local clone.
  5. Now, while still in your local clone folder, run “git push heroku master” to push your app to Heroku. If your app is named “heroku-app-name”, you can access your app at http://heroku-app-name.herokuapp.com.

And that’s all there is to getting setup with Heroku, a total of 5 steps, with just 4 simple commands.

See the GitHub repository for more info.

See any issues or have any concerns? Leave a comment below or at Hacker News.

Introducing Kegplan.io

I recently made a post over at the VPSstat.us blog just letting folks know what’s going on and why there’s bee such a delay in getting our product out there for everyone to use. Rather than go into that again, just checkout the post at the VPSstat.us Blog.

The gist of it is, a friend and I have been working on a new startup idea. Kegplan.io, a SaaS business that helps liquor stores to better manage their kegs, with many additional features in the pipeline. Ace (the friend), who runs I-35 Spirits in Ankeny, IA, was the inspiration for the idea. Managing kegs, such as pick up dates, return dates, weather or not the customer needs a tapper, etc, can be a real time drain. Most liquor store owners have much, much better things they could be doing.

We’re almost ready to release a private beta and invite some local liquor stores to try it out. “Local” being in Iowa, Central Iowa preferably, but that doesn’t mean we won’t leave Iowa if we can get a few potential customers lined up out of state.

There’s a very, very basic homepage up now at http://kegplan.io. Please forgive me for it’s ugliness, most of my time so far has been spent developing the software that’s installed on customer sites. I’ll be hitting kegplan.io pretty hard in the next few weeks, including incorporating Pure CSS to make development a bit faster, and also provide full responsiveness.

Below is an overview of how to integrate kegplan.io into your website:

  1. Signup for a kegplan.io account
  2. Choose a plan (beta will be totally free, no cc details required)
  3. Choose the keg beers that your store has available from our admin interface, or send us a spreadsheet and we’ll import it just for you
  4. Install our script on the page on your site you’d like to have the keg request form
  5. That’s it! Direct customers to the page you installed the script on and they’ll be able to submit keg requests. Requests are sent to your email and also stored in a database so you can have all sorts of neat reports and graphs.

Since this is a service that can immediately have a positive impact on businesses, and a friends business specifically, I’m focusing on getting kegplan.io launched before putting more work into VPSstat.us. Kegplan is a relatively simple piece of software so getting it production ready shouldn’t take more than a couple of weeks.

All the scripts that are installed on customer websites are hosted on Heroku for maximum availability. The customer control panel is hosted on a pretty beefy VPS from DigitalOcean. We may eventually switch to using DigitalOcean’s private networking with a few different VPS’s in different locations, but I have a feeling Heroku will be plenty sufficient.

Shortly before the private beta release, we’ll be integrating kegplan.io into i35spirits.com. Once it’s been thoroughly tested on i35spirits.com, we’ll drop the private beta. If you’re interested in more info or if you want to get in the private beta right away, email me (Tyler) at tyler at kegplan dot io.

If you’ve got any suggestions on the best, most secure way to deliver scripts for installation on third-party websites, I’d love to hear your thoughts. Right now I’m including a script on customer sites that’s delivered via HTTPS, and basically prints the form on the customer website. And I’m using jQuery and AJAX to send the results back to an SSL enabled domain for storage in a database and to send the necessary notification emails.

Anyway, keep checking kegplan.io for updates. There’ll be a official kegplan.io blog eventually, but right now all announcements will be made here at longren.org, and maybe at the I-35 Spirits website.

Would love to hear any comments. If you know anyone who runs a liquor store or other establishment that sells kegs, please tell them about us! We’re new at this too, so we’ll be helping beta users through every step of the on-boarding process.

Please bear with us as we finish out the customer-facing http://kegplan.io website. I don’t have a lot of time to work on it, other than nights and some weekends, but there’s not a whole lot to do.

Heroku: Depriving Your Free Dyno of Sleep

I’ve been using Heroku more and more, but not for anything really valuable to me. I mostly use it for hosting one-off projects that are low traffic. A lot of times, it’ll take 30 seconds or so for the site hosted on Heroku to respond, while the Heroku dyno is woken up. If your site goes without any traffic for a certain period of time, it will go to sleep.

Heroku does this to save server resources, which is a logical thing for them to do. Sometimes though, I don’t want to wait to see my site, even if I only have a free account.

I’ve seen a lot of tutorials on how to do this with Ruby, but no language-agnostic way of doing it. I also haven’t seen any way of doing this with PHP. There’s 2 methods you can use to keep your site from going to sleep.

1. UptimeRobot

This is the easiest and quickest way to keep your app awake, and is language-agnostic. UptimeRobot is a free service that monitors your sites. When you’re adding a new site to monitor in UptimeRobot, make sure to set the monitor type to “HTTP(s)”. UptimeRobot will check to make sure your site is up every 5 minutes, which will prevent your site from sleeping.

2. Heroku Scheduler

This method is a little more involved, but is probably the Heroku-preferred method.

This topic has been covered many times, but always seems to focus on Ruby apps. So here’s something that will work for everyone.

While you’re viewing your app resources on the Heroku dashboard, click the “Get Add-ons” link. Add the Heroku Scheduler add-on to your app, it’s free.

Go back to managing your app’s resources on the Heroku dashboard, then click “Heroku Scheduler Standard” to manage the Heroku Scheduler for your app. Add a new job, and set the frequency to Every 10 minutes. For your task, enter curl -I http://your-app-name.herokuapp.com. This will fetch HTTP response headers from your app, using Curl, every 10 minutes.

It should be noted that method 2 could potentially cause you to have a balance to pay at Heroku. That’s because Heroku Scheduler has Dyno Hour Usage.

So, there’s two options that everyone can use to keep your Heroku apps from sleeping, no matter what language your app is written in.

How-To: Monitor VPS Status From Heroku

I built and released this tool to monitor the status of your SolusVM client API-enabled VPS. It’s really easy to host it on Heroku, which is great since we don’t want to host the monitoring site on the VPS we want to monitor. You’ll need a Heroku account if you don’t already have one, the free account will do just fine.

Before we begin, you should probably install the Heroku Toolbelt. You’d also benefit from reading through some of the Heroku Dev Center articles. This one about deploying to Heroku with git is probably the most relevant for what we’re doing here.

You’ll need a terminal/command line for deploying to Heroku with git. A really great resource for new git users is Git Immersion, just click the green “Start Git Immersion” arrow to get started with git. Anyway, the 5 steps that follow assume you’ve created a Heroku account and have git installed and working.

  1. Fork tlongren/vps-status on GitHub and make a local clone.
  2. Install the Heroku Toolbelt and login to Heroku with the command “heroku login“. Enter you username and password to login with the Heroku Toolbelt.
  3. Create a new app on Heroku either through the web interface, or with the command “heroku create“. If you do it with the command line the app name will be shown to you, see here.
  4. Open a terminal and go into the folder that you cloned your fork into and run the command “heroku git:remote -a heroku-app-name“. That will add a remote named “heroku” to your local clone.
  5. Now, while still in your local clone folder, run “git push heroku master” to push your app to Heroku. If your app is named “heroku-app-name”, you can access your app at http://heroku-app-name.herokuapp.com.

That’s all there is to it. It might not seem simple at first glance, but it really is. To make changes, just edit the files in your local clone and commit those changes with git. Then run “git push heroku master” again to push the new code to Heroku.

Make sure you don’t send your changes back to GitHub, unless you’ve got private repositories. If you do a push to GitHub, your API key and hash will be accessible by the public, which isn’t something you want. Instead, you could either make a private repository at BitBucket or create a private repo using Dropbox like I do. The DropBox option is only reliable if you’re the only one editing the code, and if you’re only making changes from one machine at a time.

Let me know if you have any issues or think I’ve missed something.