Final delivery

This is the final delivery from the iTerroristas

We have our fashist organization, Fashi, who wish to crack down on bad meeting culture with bad-ass methods!

After the meeting workspace “disappeared” from SP2010 to SP2013, Fashi, were longing for a newer, stricter version of a meeting workspace.

Here are a few of the personas that were involved in the making of the meeting workspace solution:

Mein Admin

MeinAdmin

Yekshemash

Yekshemash

Dolly

Dolly

We have our meeting room with the meeting attendees and the agenda. When the meeting starts, the clocks start ticking:

meetingSpace

Each meeting member needs to get into the meeting room, see the unique ID on the screen assigned to him, and use his native iOS app to send the code in realtime. When the solution receives the code it stops the timer for that meeting member.

From these statistics the organisation can calculate the amount of money lost on each meeting based on the people waiting and it will subtract the total amount of money lost from the person’s paycheck who arrives the latest.

Of course the Fashi organization wanted to be able to easily access and use the application from devices with various form factors, so we used responsive design on everything.  We also made it very shiny, pretty and glossy because the Fashi people like to have pretty things.

We have made a new HTML 5 element with Polymer and Dart. It will circle each meeting members icon/picture. It shows by count down how late a person is to the meeting and shows animated circle to illustrate this. It can only be stopped by sending in the unique id with the iOS app.


polymer_dart

Speed reading

To be able to read documents and meeting notes on the fly, we have implemented a fantastic reader. The human eye spends a lot of time shifting focus between words while reading, hence the average reading speed is around 220 wpm. By using our Spritz-reader, you can drastically improve the speed. The words of a document/note is placed in a small container word by word with a fixated focuspoint. This prevents the eye from moving from word to word. You can easily read at 400 wpm, and have the possibility to og up to 1000 wpm!. The reader works like a charm on a mobile device, where reading can be a bit of a struggle.

Here you see the functionality of the fast reader implementation
spritz

In the meeting, the organisation will make decisions based on the agenda points. You also have the opportunity to add notes to each agenda point.
When writing notes you can search for information you need by asking Dexter to run the search for you.  Dexter has voice recognition which he uses to register your question and query the wolfram alpha search engine. The results, Dexter posts in the meeting room. In addition, Dexter also understands Norwegian.

Enter Dexter…

Dexter is a different approach to finding information, as opposed to Google. Instead of serving us pages of information, the results are stripped of anything that doesn’t contain hard facts.

anynag

anynag_obama

A lot of customer meetings in a row

After the meeting, the employees will go to all the customers. Time is money, and so they need the shortest path to get to the customers. Therefore, we created a path finding algorithm and hosted it on a Windows Azure Cloud Service. This service is accessible from any device. You can access it through a web site:

tsp_website

Or through a simple GET request, by providing the following URL with map coordinates (where the customers are):

<code>http://sirarscloudservice.cloudapp.net/Home/Solve?c1=200,300&c2=400,300&c3=400,400&c4=400,200&c5=500,200&c6=200,400&c7=400,300</code>

Or through our Windows Phone App:

tsp_windows_phone
Finally, once the employee gets back the shortest path to the customer location, a POST with this information is posted to Yammer so all employees get this information and won’t need to ask the algorithm again. Here is how it looks like on Yammer after the algorithm returns the results to the employee:

tsp_Yammer

Here is a video of the whole process:


 

Continous deployment

To be able to work in an efficient way, we have been using continous deployment with TFS Online and Office 365. We have set up a deployment configuration which deploys our code to our online app (http://iterroristas.sharepointcom) on each check in. Hence, each teammember are always up to date.

 

Rock solid geekness

Our meetingspace has most of the basic functionalities a meetingspace should have. However, because of our natural geekness, we tend to og a bit overboard with all sorts of crazy ideas. We brough some gadgets to this events (drone, chromecast) and have made some pretty cool (maybe useless) stuff. We were actually able to control the drone from our SharePoint app. A collaborative work with the wizards from Skills, we were also able to join forces between the danish lego and our parrot drone!!! Actually, we also planned to use the drone as a hunting device, to collect the attendees of a meeting whom were late.

Our geeky crew also delivered three speeches about some awesome futureistic technologies. Angular, Typescript, Polymer and ScriptCs are part of the new way of working, and we actually used both Angualar and Polymer in our delivery.

If an employee is late to the meeting, a drone launches in the air and starts “hunting” for the employee. A laser is mounted ontop of the drone to target the employee. Here is how the drone looks like:

drone

The drone is fired up from a SharePoint 2010 virtual machine, which sends a request to a local node server which in turn sends commands to control the drone. Here is a video of how our drone works:

The missing meetingspace

Badge-Appster

We have created an app for meetings, which has a quite fashist way of working. If someone is late for the meeting, a timer starts and calculates (based on a median hourly rate) how much it costs the company per second. The person that is late needs to send his unique ID for the meeting with his cellphone-app, to stop the timer. The person only sees the unique ID on this screen from within the meeting room. The main focus of our meeting space is the agenda. The idea is to attach both notes and decisions to each agenda item. We have also implemented an awesome reader, which allows you to read, for example, a meeting summary impressively fast. The average reading rate is around 220 words per minute, however with our reader you can easily get rates up to 400 words per minute. Think about the value for mobile users which wants to quickly read some documents before the meeting starts. This is a killer functionality which really gives value to the meeting attendees. Our reader allows speeds up to 1000 words per minute!!!

Here you see the functionality of the fast reader implementationspritz

 

Here you see the aggregated time lost in the upper left corner. Based on that, we can subtract the total amount of money lost from the person’s paycheck who arrives the latest29-03-2014 13-00-08

Yam Yam Gimme Some! We Did It!

In this delivery, we aim at getting the following badge:

Badge-YamYam

We also recommend the following badge for the team Inmates, we couldn’t have done this without them:

Badge-CommunityChamp

We attempted to get this badge in an earlier delivery. We were not successful in that attempt since we didn’t manage to post data to Yammer, although we were able to retrieve data. We are now finally able to do this! We attacked the problem from a slightly different angle. We decided this time to access the interface of our Windows Azure Cloud Service from our Windows Phone app, send input parameters to the algorithm in the cloud and do a POST to the service. Then upon retrieval of the results from the algorithm, we pass on the results through a POST to Yammer behind the scenes. Here is a video of how this works:

And here is evidence of Mario from Inmates giving us a hand, thanks a lot!!

WP_20140329_11_23_57_Pro

Using HTML5 and new W3C standards for a revolutionary future of webapp development

How HTML and webcomponents can take the web to a new level

 

HTML5-01

How HTML and webcomponents can take the web to a new level

In this post we show how we can use HTML and the emerging WebComponents standard to make amazing new custom elements with custom interfaces that are fully encapsulated from the rest of the page behind the boundry of the Shadow dom. For more information on check out the these pages:

The standard documentation:
http://www.w3.org/TR/components-intro/

The Polymer-project:
http://www.polymer-project.org/

Also note that since these custom elements will be viewed by the browser as any other element you can stick them inside any web-project and any MV*framework such as the awesome Angular.js/Angular.dart framework and bind to its custom properties.

As you may have figured out by now; this is our entry to win the “HTML5” badge. 🙂

 

The Real Morning Glory

Our team achieved the correct morning glory, as we have evidence of time from Norway’s meteorological institute (Yr.no) of when the sun rise occurred Today, Saturday 29th of March. Remember that to win this badge, you have to be the first team to take a picture just after the sun rise with 150p (requirement added by the judges yesterday). Not before the sun rise, as that leaves room for taking the picture any time after the requirement was set yesterday until the sun actually rises at 05:52. Enough light to take a team photo then merely becomes a function of how fast your camera lens is and the light sensitivity of your sensor.

In this delivery, we aim at getting the following badge:

Badge-MorningGlory

Happy iTerroristas team!

WP_20140329_05_52_02_Pro

And of course, here is the proof:

wp_ss_20140329_0001

morning_glory

Geek rant: Even though it is pitch black out, you can take a picture with setting your camera to an extremely high ISO setting and using a fast lens. Commercially available lenses tend to go down to about f/1.2 but you “can”, given enough resources, attain a lens down to f/0.33. Commercially available cameras can have great picture quality up to ISO 6400, but you can squeeze some up into the high ISO 25600 range if you want. Given these extreme light sensitivities you are able to catch a usable photo in what seems to us to be “pitch black”.
Sunlight is also a flaky issue… we do have sunlight at night as we have reflection of the suns rays coming down after they bounce off our neighboring planets. On top of that, we have sunrays coming in from an uncountable amount of suns in our galaxy, our neighboring Andromeda galaxy as well the whole universe.
And now were are merely talking about “visible light”… it would be rather simple to take a photo with enough light using infrared or some other part of the spectrum… given the proper equipment…

SharePoint Lego-Drone Killer Application

After 2 days of hard work and tough competition, something started brewing over the still city of Oslo. A spark of what started this wonderful event in the first place. That spark ignited a flame of collaboration between the iTerroristas and the Skill Wizards.

Each team had been working on crazy innovative solutions to extremely critical business prosesses, but something was missing… In collaboration, you could say that sometimes… 1+1 can equal 3… something amazing can come out of collaboration, something which can make the whole, greater than the sum of it’s parts. The result is the following SharePoint Lego-Drone hybrid application…

We are proud to present, the first ever collaborative delivery in the history of Arctic SharePoint Challenge!

In our humble opinion, we feel this delivery deserves the following badges:
allbadges
🙂

Honestly, we aim for the following badges:

Badge-EmbeddingNumbnut
Badge-CommunityChamp
Badge-TeamSpirit

Technology used

  • Angular.js
  • ASP.NET Web API
  • Office 365 / SharePoint Online
  • SharePoint 2013 workflow for calling mindstorms service
  • Putty (SSH tunnel from internet / Office 365 to Mindstorm Proxy)
  • ASP.NET Web API (again, now serving as a Mindstorms Proxy)
  • http://legoev3.codeplex.com/ for controlling the Mindstorms
  • The enter button
  • VMWare
  • SharePoint 2010 on premise
  • Node server
  • AR-drone node module
  • Content editor web part
  • Hlynur’s beard

WP_20140329_02_19_31_Pro
(Even collaborated on the blog post 🙂 )

Nasty, nasty hacker!

In this delivery, we aim at getting the following badge:

Badge-NastyHacker

Soo… this is our fourth attempt at getting this badge. Time for some RED BULL again!!!

nasty_hacker

Have you ever wondered if you could run some JavaScript code from your SharePoint browser window? This is not really possible, since JavaScript must have a context to run in. Indeed, you could try something like this:

javascript:/some javascript code here/;void(0);

But what do you do if you want to run some heavy JavaScript code that has multiple dependencies? Or, let’s put it this way; what do you do if you have JavaScript that uses node, which you want to be run from the SharePoint browser window? You create your very own node server! Then you create a REST call which in turn wraps around your magical JavaScript code. Here is how the magic happens on our node server:

s6

s3

s2

As you probably have guessed by now, we have a drone and we are attempting to make our drone take off and then land after a given time from our SharePoint app. To make it happen, we need to be on the same network as the drone. Thus, we do a local GET request from our SharePoint app to our local node server. What does this mean, exactly? It means that SharePoint needs to run locally in order to do the request, something which we cannot do with SharePoint 2013 Online obviously. So what do we do? We use a SharePoint 2010 instance to make the local GET call to finally reach the drone through our local node server! Since SharePoint Online is useless to us here, and we don’t have a locally installed instance of the 2010 version, we set up a virtual machine with SharePoint 2010. We decided to fire up the drone by clicking on a take off button from a content editor web part. Here is a video of how it works:

drone

This approach is by no means safe, because exposing control of your drone like this is dangerous! On top of it all, we have no password protection of our drone network, so anyone can pop in and say hi:

unsafe_network

Yikes, talk about opening up to the world!

We have to say that it has been very fun hunting for this badge, so to the dear judges; we respect and appreciate your decision whatever it may be. 🙂

Do it Right Now!

In this delivery, we aim at getting the following badge:

Badge-RightNow

In the video below, we showcase our real time application that communicates with SharePoint. We used WebSockets for real-time communication:

The application has a background picture of a guy that looks like Hitler, that is because our application has a fascist approach of forcing people to get to meetings on time.

Client Side Salsa!

In this delivery, we aim at getting the following badge:
Badge-Salsa
The solution is to register when people arrive to a meeting and then make reports on how much the people who are late cost the company. Each attendee will have a code displayed in the meeting room in SharePoint. When the attendee arrives to the meeting they will insert the code through an application on their phone and a websocket server will broadcast that code to SharePoint. The application is puffed up with some salsa and includes no less than AngularJS, Ajax and of course SharePoint! The intercepts the broadcast and tells SharePoint that the attendee has arrived, it also calculates how much it cost the company if the attendee was late.

The code below shows two functions getAttendees and postKode. The get function fetches all the list items of one list and the other post a list item to another list.

post angular

Here you can see that the post is triggered by the success callback of the get-function.
controller angular
And here is how the whole thing looks in SharePoint, using the REST API:
Test