Recent Blog Posts

Getting started with Storm: Logging

Logging within storm uses Simple Logging Facade for Java (SLF4J).

SharePoint 2013 LCIDs with default Time Format

A list of SharePoint 2013 LCIDs along with their language and the time format.

Tinkers' Construct Cheat Sheet

Tinkers’ Construct is a mod for Minecraft. Tinkers’ Construct Materials The following materials are what you use to build your tools. Name Durability Handle Modifier Full Tool Durability Mining Speed Mining Level Base Attack Material Trait Blue Slime 1200 2.0x 2400 1.5 0 (Stone) 0 Hearts Slimy Green Slime 750 1.5x 500 1.5 0 (Stone) 0 Hearts Slimy Paper 30 0.

Powershell script to change SSRS Subscription Owner

We leverage Reporting Services subscriptions a lot to deliver reports via email. A problem we run into frequently is when the user who created the subscription loses permission (leaving the company, changing jobs, etc.) then all of the subscriptions they created stop working. This is because they are the Owner of the subscription and SSRS won’t allow the subscription to run when the owner no longer has permission. Here is a quick powershell script you can use to change the owner using the ReportingService2010 web service endpoint.

Tick tuples within Storm

Tick tuples are useful when you want to execute some logic within your bolts on a schedule. For example, refreshing a cache every 5 minutes. Within your bolt, first enable receiving the tick tuples and configure how often you want to receive them: @Override public Map<String, Object> getComponentConfiguration() { // configure how often a tick tuple will be sent to our bolt Config conf = new Config(); conf.put(Config.TOPOLOGY_TICK_TUPLE_FREQ_SECS, 300); return conf; } Next create the isTickTuple helper method to determine whether or not we’ve received a tick tuple:

Knockout Validation: Multiple email addresses

A simple rule for validating an observable which could contain multiple email addresses. Assuming you have an observable like self.emailTO = ko.observable(“);, you would just extend it to have self.emailTO.extend({ multiemail: true });. Use it with the required validator if you want at least one email address. ko.validation.rules[‘multiemail’] = { validator: function (val, validate) { if (!validate) { return true; } var isValid = true; if (!ko.validation.utils.isEmptyVal(val)) { // use the required: true property if you don’t want to accept empty values var values = val.

Pass user information from SharePoint 2013 to InfoPath 2013

InfoPath is a common tool used to create forms hosted on SharePoint. Due to the limited development options available for Office 365, I think this places an increased focus on InfoPath when it comes to creating a solution. Unfortunately, I found that it was relatively difficult to get the current user’s information to be displayed or saved within an Infopath form.

Use jQuery to call the Microsoft Translator AJAX API

First, make sure you have subscribed to the Microsoft Translator API on Azure Marketplace and registered your application Azure DataMarket. For testing, you can use the free subscription which lets you submit up to 2 million characters a month. Registering your app will create a Client ID and a Client Secret which you need to get authorization.

In order to protect your Client Secret, you’ll need to write server-side code to get your access token. The access code is then passed to the Microsoft Translator API via AJAX.

Convert from HandySafe to Sky Wallet

I wrote a small python script to help convert Handy Safe to Sky Wallet. I definitely learned a lot about python and even though I wasn’t very familiar with the available API I was able to come up with a pretty nifty script.

Using JsRender to create SOAP Envelopes

I am working on a small query tool that will be used to make AJAX calls against SharePoint’s Enterprise Search Query Web Service. Previously, I created the SOAP messages by appending a gigantic series of strings together. In this iteration, I wanted to use JsRender (my template engine of choice right now and the successor to jQuery templates).