Saturday, August 26, 2017

Chat Bot Slots - proof of concept game using Bot Framework

I've been having a lot of fun with the Bot Framework recently, and today I'm publishing my second project (the first was http://jsontocsharp.net/) built with this amazing framework - Chat Bot Slots.



It's a very simple slots game, which runs entirely in a Skype chat. The game stores all profile data in a CosmosDB, so all your winnings are safe and quickly accessible across the globe.


The UI is based on Prompt dialogs and built-in Skype smileys. Note - due to weird Skype bug, if you use a lot of smileys in your messages, some of them just randomly disappear, so after some trials I've just found and used some that are not affected by this issue.

The game was created just for fun, the player always (well, almost) wins, so go spin and enjoy it!

http://chatbotslots.com

Thursday, April 13, 2017

Build your startup on Azure. Part 2: Creating and publishing the project

This is the second blog post in a "Build your startup on Azure" series. You can find the first one here.

The app we're going to build needs just one Web API controller which handles data requests, and a static website based on bootstrap starter kit.

For JsonStorage.net I'll use DocumentDB (yes, one more Azure service) as a back-end storage, It has native .NET API and provides awesome performance - just take a look at a latency graph:

Wednesday, March 22, 2017

Build your startup on Azure. Part 1: JsonStorage.net

Microsoft Azure has so many features these days, that it's very easy to get lost in Azure portal - you can setup and scale web apps, databases, even deploy Sitecore in a few clicks.
But really cool thing about it is that you can manage the entire life cycle of your app - from purchasing a domain to scaling load and diagnosing production exceptions without leaving the portal.

In this blog post series I'll show how easy it is to build your own startup type of project in a matter of hours, using Azure tool set.

The project I'll create is a simple web service for storing JSON data. It is useful in scenarios when you need to communicate between the different systems, like server-side service and a web app or even mobile app, as shown at a scheme below. Kind of simplified "service bus".



Wednesday, December 21, 2016

How to manage multi-project Trello boards

I've been using Trello since its launch in 2011, mostly for personal productivity, and small single board projects. I was very happy with out of the box functionality, but some time ago I've started using it in a special team which worked on more than fifteen projects simultaneously and realized that I need a way to manage backlogs of different projects on separate boards, but still have the main board for tracking work in progress, as easy and usable as if it was all one board.

Basically, I needed something like this:

Tuesday, August 9, 2016

Integrating Lync/Skype for Business with Bot Framework

Since the release of the Bot Framework, I've been waiting for Lync/Skype for Business support for two main reasons:

      • Lync API is outdated and not very reliable.
      • Easy and straightforward dialogs in the framework

Sunday, February 28, 2016

Using SharePoint REST API $filter with large document libraries

About a year ago I've created a SharePoint application which used  document library as it's main storage. I knew that there are some limitations and restrictions but after reading the following article: Manage lists and libraries with many items I thought that it's not a problem if you setup the indexed columns and views properly.

However, once the library has reached 6000 plus something items, everything suddenly slowed down dramatically, basic queries which used to load in 1 second started to time-out or take more than 60 seconds to load.

In addition to that, WorkflowServiceHealth.aspx page just died and only returned "Timeout Expired" error.

Wednesday, February 3, 2016

PowerBI dataset sharing via content packs

I've recently started using PowerBI content packs for sharing data with my colleagues (as well as different group workspaces) and noticed a few weird and misleading things around them. In this blog post I'd like to share my findings.

Refreshing an organizational content pack
The documentations basically says the following:
As the content pack creator, you can schedule refresh of the datasets.  When you create and upload the content pack, that refresh schedule is uploaded with the datasets. If you change the refresh schedule, you need to re-publish the content pack (see above).

You might think that datasets within the content pack are self-sufficient and can update themselves but that's not how it works.In reality, when you update the main dataset, the changes will be applied everywhere. Refresh schedule settings at the dataset copies might show absolutely irrelevant information in this case. Here's the one which was actually updated on Feb 3 and is setup to update automatically.



Dataset model (schema) updates
When you update SQL database schema, the changes will not be picked up automatically during the scheduled refresh, but you don't need to update content pack either. All you need is to refresh the data in the PowerBI Desktop, and then publish the report. This will update associated dataset and all it's copies even without updating content pack.

I'll add more similar findings here if I come across any in the future.