Coding on Orchestrate.io & Orchestrate.js & Orchestrate.NET

First context, then I’ll dive in.

Orchestrate

http://orchestrate.io/

Orchestrate is a service that provides a simple API to access a multitude of database types all in one location. Key value, graph or events, some of the database types I’ve been using, are but a few they’ve already made available. There are many more on the way. Having these databases available via an API instead of needing to go through the arduous process of setting up and maintaining each database for each type of data structure is a massive time saver! On top of having a clean API and solid database platform and infrastructure Orchestrate has a number of client drivers that provide easy to use wrappers. These client drivers are available for a number of languages. Below I’ve written about two of these that I’ve been involved with in some way over the last couple of months.

Orchestrate.NET

https://github.com/RobertSmith/Orchestrate.NET

This library I’m currently using for a demonstration application built against the Deconstructed.io services (follow us on twitter ya! @BeDeconstructed), a startup I’m co-founding. I’m not sure exactly what the app will be, but being .NET it’ll be something enterprisey. Because: .NET is Enterprise! For more on this project check out the Deconstructed.io Blog.

Some of the latest updates with this library.

But there’s still a bit of work to do for the library, so consider this a call out for anybody that has a cycle they’d like to throw in on the project, let us know. We’d happily take a few more pull requests!  The main two things we’d like to have done real soon are…

Orchestrate.js

https://github.com/orchestrate-io/orchestrate.js

With the latest fixes, additions and updates the orchestrate.js client driver is getting more feature rich by the day. In addition @housejester has created an orchestrate-brain project for Hubot that uses Orchestrate.js. If you’re not familiar with Hubot, but sure to check out the company robot that can dramatically improve and reduce employee efficiency! Keep an eye on that project for more great things, or create a Hubot to keep a robotic eye on the project.

Here are a few key things to note that have been added to help in day-to-day coding on the project.

  • The travis.yml file has been added for the Travis Continuous Integration build. This build runs against node.js v0.10 and v0.8.
  • Testing is done with mocha, expect.js and nock. To get the tests up and running, clone the repo and then build with the make file. The tests will run in tdd format.
  • Promises are provided via the kew library.

If you’re opening up the project in WebStorm, it’s great to setup the mocha tests with the integrated mocha testing as shown below. After you’ve cloned the project and run ‘npm install’ then follow these steps to add the Mocha testing to the project. We’ve already setup exclusions in the .gitignore for the .idea directory and files that WebStorm uses.

First add a configuration by clicking on Edit Configurations.

Edit Configurations

Edit Configurations

Next click on the + to add a new configuration to run. Select the Mocha option from the list of configurations.

Mocha & Other Configurations in WebStorm

Mocha & Other Configurations in WebStorm

On the next screen set a name for the configuration. Set the test directory to the path for the test directory in the project. Then finally set the User interface option for Mocha to TDD instead of the default BDD.

Edit Configuration Dialog

Edit Configuration Dialog

Last but not least run the tests and you’ll see the list of green lights light up the display with positive results.

Test Build

Test Build

Junction Two Weeks on Tuesday on Friday Bi-weekly Review : Issue #003

…and another update on Junction.

The review slipped past me this week. A little food poisoning will do that to a person. But I’m kicking again.

A Quick Summary

The RSS/News Feed section of the app has been built and put into action. So if you pull the latest code and run the application, navigate into the news section you’ll get the Basho Blog feed. This definitely needs cleaned up a bit from the UI perspective but the main elements are there.

Next steps are…

One of the things the team is aiming to knock out next is to get some MVVM (Mode View ViewModel) architecture setup to build against versus what we’ve started with, which is just the basic skeleton of things thrown together. It works, but it’ll be nice to have some clean architecture behind the application to work with.

I’m aiming to put together a blog entry on troubleshooting the build server for Junction and also the how-to on setting up the RSS/News Feed Reader section of the app in the coming week also. Subscribe to keep up with the latest in Junction news and also all the other tidbits on the blog. Cheers!

TeamCity Setup for Junction Build, Plus Implosions

I wanted to get a continuous delivery process setup for Junction that could help everybody involved get a clear and quick status of the project. The easiest way to do this for a Windows 8 .NET Project is to setup a Team City CI Server.

This article covers what I went through to get the server up and running. In the next part I’ll cover troubleshooting that I went through to get a Visual Studio 2012 Window 8 C# Project building correctly on the server.

Finally, the last part is a small surprise, but suffice it to say I’ll be getting a completely different language and tech stack up and running which you’ll likely not guess (or maybe you will).  ;)

Setting up Team City 8.0.3 (build 27540) using Tier 3 and a Windows 2008 Server, or not…

Setting up a Windows 2008 Server with Tier 3 is super easy, as you’d expect with a cloud service provider. Log into your account, click on “Create Server” to bring up the create server dialog.

Create a New Server screen. Click for full size image.

Create a New Server screen. Click for full size image.

Click image for full size.

Click image for full size.

Next enter the information and select a Standard server.

Select how much horsepower you want the build server to have. Click for a full size image.

Select how much horsepower you want the build server to have. Click for a full size image.

Click next and then make the last few selections.

Server Tasks. No need to change the defaults here. Click for full size image.

Server Tasks. No need to change the defaults here. Click for full size image.

Click Create Server and then sit tight for a few while the server is created. Once the server is created navigate back to the server information screen (I’ll leave you to get back to this screen).

Server information screen. Click for full size image.

Server information screen. Click for full size image.

On this screen click on the add public ip button to bring up the IP & port selection screen.

Adding a public IP Address. Click for full size image.

Adding a public IP Address. Click for full size image.

On the public IP screen select the HTTP (80) and RDP (3389) ports to open up. Click the add ip address button and again sit tight for a few. Once the server has the IP set then we can log in using RDP (Remote Desktop or on Mac try CoRD).

Next install the .NET 4.5 SDK. For the latest, it’s best to install the latest windows SDK that is available for Windows Server 2008 also.

Team City install

In the instructions below, you’ll notice everything is now Windows Server 2012. That’s because after installing everything on a Windows 2008 Server I stumbled on a very important fact. I’m working to put a build together for a Windows 8 Store Application, which requires a Windows Server 2012 (or Windows 8) operating system to build on.

I got a sudden flashback to OS-X and iOS land there for a second, but leapt in and wiped out the image I’d just built. Since I’d built it in a cloud environment, it merely meant spending a few seconds to get a new OS instance built up. So after a few clicks, just like the instructions above for building a Windows 2008 Server I had a Windows 2012 Server instead. There are, however a few steps to follow once you have a good Windows Server 2012 install. Once you have a good Windows 2012 Server up and running it should have a public IP, some memory, compute and storage capabilities. In the image below I didn’t give it a huge amount of horsepower for a few reasons.

  1. It’s just doing builds, not computing the singularity.
  2. If it can build on this, I’m doing good keeping the project clean.
  3. I want to keep the build fast, keeping it on a weak machine and still having it fast also reinforces that I have a clean project.
  4. I don’t need a successful build every second, the server gets used only during pushes by devs. If we get up to dozens of devs hacking on this, I can easily spool up and get a faster, more hard core heavier horsepower option up and running.
Windows Server 2012 w/ Public IP, 1 Proc, 1 GB RAM and 40 GB Storage. Click for full size image.

Windows Server 2012 w/ Public IP, 1 Proc, 1 GB RAM and 40 GB Storage. Click for full size image.

When Windows Server 2012 boots up the first thing that will launch is the Server Manager. We don’t really need that yet, so just ignore it, close it or move it to the side.

Windows Server 2012 Server Manager. Click for full size image.

Windows Server 2012 Server Manager. Click for full size image.

The first thing we will need is Internet Explorer, so we can download Chrome or Firefox. Internet Explorer is wired up with high security so the first thing it will do is explode with messages about sites not being in the right zone. It is, hugely annoying. So add each site to the zone and head out to the web to pick up Chrome or Firefox.

Internet Explorer security configuration explosions. Click for full size.

Internet Explorer security configuration explosions. Click for full size.

In the following screenshots I didn’t actually download Chrome or Firefox first, but instead downloaded TeamCity. I advise getting Chrome or Firefox FIRST and then downloading TeamCity with one of those browsers. Life is dramatically simpler that way.

Team City - add another site to the site list for security clearance. Click for full size.

Team City – add another site to the site list for security clearance. Click for full size.

Team City downloading. Click for full size image.

Team City downloading. Click for full size image.

I know one can turn off the security settings in IE, but it’s just dramatically easier to go and use one of the other browsers. Just trust me on this one, if you want to turn off the security features in IE, be my guest, I’d however recommend just getting a different browser to work with.

Once you’ve got your browser of choice and Team City downloaded, run the installer executable.

Installer Downloaded w/ Security Scan in IE. Click for full size image.

Installer Downloaded w/ Security Scan in IE. Click for full size image.

Executable downloaded.

Executable downloaded.

Installing Team City.

Installing Team City.

Leave the components checked unless you have some specific goal for your server and build agents.

Server & Build Agents Options.

Server & Build Agents Options.

In one of the subsequent dialogs there is the option to run the server under the SYSTEM account or under a user account. Since this is a single purpose machine and I don’t really want to manage Windows users, I’m opting for the SYSTEM account.

SYSTEM Account.

SYSTEM Account.

After everything is installed navigate in a browser to http://localhost. This will automatically direct you to the TeamCity First Start page.

TeamCity First Start Page. Click for full size image.

TeamCity First Start Page. Click for full size image.

At this point you’ll be prompted to ok the EULA.

Signing one of those famous EULAs. Click for full size image.

Signing one of those famous EULAs. Click for full size image.

Then you’ll be prompted to create the first Administrator user.

Creating the administrator user.

Creating the administrator user.

From there you’ll be sent to the TeamCity interface, ready to create a new build project.

TeamCity Tools is marked by a giant pink arrow, Great ways to integrate TeamCity into your workflow. Click for full size clarity!

TeamCity Tools is marked by a giant pink arrow, Great ways to integrate TeamCity into your workflow. Click for full size clarity!

Click on Projects at the top left of the screen and you’ll navigate to the Create a Project dialog. Click on the Create a Project link to start the process.

Creating a project. Click for full size image.

Creating a project. Click for full size image.

Once you’ve entered the name, project ID and description click on Create. This will bring you to the next step, and to the general tab of the project. On this screen click on Create build configuration.

Project Setup. Click for full size image.

Project Setup. Click for full size image.

Now create a name, enter the config id, and click the VCS Settings >> button to move on to the next step of the process.

Build Configuration. Click for full size image.

Build Configuration. Click for full size image.

In VCS Settings leave everything as default and click on the Add Build Step >> button.

Click for full size image.

Click for full size image.

Now select the Visual Studio (sln) option from the Runner type and give the dialog a moment to render the options below that. They’ll appear and then enter the Step Name, Visual Studio type needs to be set to Microsoft Visual Studio 2012 and then click on Save.

Setting up the Build Type. Click for full size image.

Setting up the Build Type. Click for full size image.

From there you’ll be navigated back to the Project Build Steps screen. On that page you’ll see the build step listed. We’ll have one more we’ll need to add in a moment, but for now click on Version Control Settings again.

Build Step displaced, click on Version Control Settings Again. Click for full size image.

Build Step displaced, click on Version Control Settings Again. Click for full size image.

On this page click on the Create an attach a new VCS root.

Attach a new VCS root. Click for full size image.

Attach a new VCS root. Click for full size image.

Now select Git from the dialog and wait for the page to populate the form settings and options.

VCS Root Options. Click for full size image.

VCS Root Options. Click for full size image.

Now enter the correct Fetch URL to the Git repo (which on github looks something like https://github.com/username/gitrepo.git and is available to copy and paste from the right hand side of the repo page on github), enter the appropriate default branch to build and an appropriate VCS root name and VCS root ID. Once that is done click on the Test connection button.

Test Connection. Click for full size image.

Test Connection. Click for full size image.

Click save and now navigate back to the Build Triggers screen by click on the #5 option on the right hand side of the page. You’ll be navigated back to the magical Version Control Settings screen where you now have a few more options available and a VCS root available.

Version Control Settings. Click for full size.

Version Control Settings. Click for full size.

Now an Add New Build Trigger dialog appears to add the trigger. I set it to trigger a new build at each new check-in. The TeamCity server checks frequently to see if a commit has been made and will initiate a build. Another way however to setup this is to not add a trigger and instead go to Github (if you’re using Github) and setup a push trigger from Github itself. That way every commit will initiate a build instead of the TeamCity Server, which knows nothing about the actual status of the repo until it checks, giving a more timely build process to your commits & dev workflow.

Build Trigger. Click for full size image.

Build Trigger. Click for full size image.

The added build trigger. Click for full size image.

The added build trigger. Click for full size image.

Now, one more build step. Add the NuGet Installer (which is included with the TeamCity Build Server, check the docs for TeamCity 8.x for NuGet Installer and NuGet for more information). For our purposes once you’ve insured that the NuGet Installer you need is available add a new build step. Select from the Runner Type NuGet Installer and the respective form will populate below.

NuGet Installer. Click for full size image.

NuGet Installer. Click for full size image.

Once the step is added, click on Reorder Build Steps under the Build Steps list and a dialog, specifically for reordering the build steps will appear.

Reordered Build Steps.

Reordered Build Steps. Click for full size image.

Reorder the steps so that Getting NuGetty (the name I’ve give to it, click for a full size image) will be run first.

The NuGet Settings.  Under the NuGet.exe is where to add the Nuget executable if it isn't already installed and available. Click the NuGet settings for options. Click for full size image.

The NuGet Settings. Under the NuGet.exe is where to add the Nuget executable if it isn’t already installed and available. Click the NuGet settings for options. Click for full size image.

At this time you now have all of the steps you actually need. You’ll be able to go back to the main projects screen and built the project.

When you do this however, if you’ve actually set this up to build a Windows 8 Store Project you’ll get a build failure. Which is a total bummer, but that makes for a great follow up blog which I’ll have posted real soon! For now, these are great steps for getting a modern ASP.NET, Java, Maven and a whole host of other builds up and running. For the solution around the Windows 8 Store Project keep reading (subscribe on the top right hand side to the RSS!) and I’ll have that posted up real soon.

Until next entry, Cheers!  > Adron

Junction Two Weeks on Tuesday Bi-weekly Review : Issue #002

It’s time for another Tuesday Bi-weekly Review! We’ve been making some progress and so far we’ve tackled a few elements of the project. The first big task was to get more information out there for the community & team working on the project. I’ve spent some time along with the contributors on github and via other means to make more information available to what the intent is and how people can contribute. So if you’re interested in helping with an entire domain space or merely a small element of the application, ping me and I’ll work with you to make it as easy as possible to contribute. With that, let’s jump into what’s what and what’s new. Cheers!

We Have a Build Server, More on This Soon, but for now…

I’ll have a post on how to setup Team City and quick tour of what is setup for the Junction Project. So stay tuned and I’ll have that and other news posted as it happens this coming week along with Team City & other tutorials related to the project itself. For a quick sneak peek feel free to take a look at the build server located at:  http://teamcity.cascadiahacks.org/.  Just login with “guest” and no password.

More Items Listed and Working on First Feature Commits and Comments For…

We also got a conversation started among a few of us “What would teams that use Riak like to see in a Riak Admin Application?” Jump into and add your two cents regardless of whether you’re diving into the project or not.

Until later, happy coding!

Junction Two Weeks on Tuesday Bi-weekly Review : Issue #001

So every two weeks I intend to provide an update for the Junction Project. Who might have joined, what was worked on, where we are and generally any other bits of news related to the project. This is the first “Junction Two Weeks on Tuesday Review” so enjoy!  :)

  • Two weeks ago today I wrote the entry “Introducing Junction” to kick off the project. Everything is hosted on github via github pages at http://adron.github.io/junction/ and the git repository at https://github.com/Adron/junction. The video in which I described at a high level each of the sections of the application is located here: http://vimeo.com/adronhall/junction.
  • Clive Boulton @cliveb, Jared Wray @jaredwray, Kristen Mozian @kmozian and OJ Reeves @OJ joined the project to help out.
  • Issues, as stories and tasks were added to get started with the project. Here’s a first draft of the things we’re all working on. If you’d like to jump in, feel free to ping me and I’ll add you to the project, you can submit a PR (Pull Request) or talk to me about organizing a hackathon to help move the project forward.

Github Issues – Working Items

The easiest way to view these is to log into the Huboard Kanban Board and give a look see of what is in progress and who’s working on what. Currently I’ve outlined the big items that we’re working on and would love a fellow coder to jump in on. If you’re interested, ping me @adron or just jump into the issues list on Github (or view by milestone – i.e. functional area) and comment on the issue you want to dive into, I’ll add you so you can get started!

For the “Call the Doctor (Administration and Maintenance)” part of the application there are a number of questions to answer. How should we connect to Riak to ensure a secure SSH connection? Should we even use SSH? Is there another way to connect to the Riak Cluster for a secure way to administer the cluster?

In the “Golfing With Your Data (Query, Put, Deletes, Etc. Handling the CRUD)” one could dive into creating a functional query space to pull data out of a Riak Cluster. A lot of UI work needs to be done in this space, so if you’re up for putting together some awesome windows 8 interfaces, I’d love to hear from you!

Review Summary

At this point we’re moving forward. We’re always looking forward to new participants so reach out if you’re up for helping out!  So until the next two weeks are up, see ya at the Junction!