30 November 2015

DadenU Day: NuGet

By: Nash Mbaya

For the Daden U Day I decided to look into creating a private NuGet feed for Daden.

NuGet is the package manager for the Microsoft development platform. Our main development tool here at Daden is Microsoft visual studio which is part of this platform. As a result we use NuGet and its public feed in our projects as way of managing external code.

So what about internal code you ask. How is that managed? The short answer and simple answer is that it was not before I wrote this blog post. If there was utility a class or a script written by any of the developers here and another developer wanted to use the same code they would have to firstly know of codes existence. Then secondly they would have to hunt for a latest version of that script, class or dll which could be in any number of projects.

So the aim of creating Daden’s own private NuGet feed was to eliminate a some of the issues caused by this by:

1.Creating a central repository for Daden’s library files.

2.Reducing the fragmentation of said libraries files having a NuGet feed which would provide the latest version of any of our library files.

3.Improving awareness of the different libraries and scripts that are available to Daden’s internal development team

4.Automatically updating library files which are in use.

The Server

There are three main ways of creating your own NuGet feed. You can either have a local feed which is a simple folder with packages on your machine or a shared network drive. You can buy a hosted solutions in the cloud or you can also host a remote (or internal) feed on a server that runs IIS. I chose the latter because I didn't want to rely on the windows file system but instead utilise the IIS server that Daden already has which is used to serve intranet web pages.

Setting up the local feed is easy and straightforward.

Step 1: Create a new Empty Web Application in Visual Studio

Step 2: Install the NuGet.Server Package using the NuGet package manager in Visual Studio

Step 3 (Optional): Configure the Packages folder

The default Packages folder is a folder within the web application hierarchy in the solution view.

To change the folder to one of your choice open the web.config file and change the value of the ‘packagePath’

Step 4: The final step is to publish the web application.

The Packages

So the purpose of NuGet is to manage packages. But what are packages? what do they look like? and how can I make one?

A NuGet package is a file which inside it can contain .NET assemblies file, JavaScript files, HTML/Razor files, CSS files,class files, images, and even files that add configurations to your project. It is very similar to a .zip file.

Packages can be formed of a ‘lib’ folder which should only contain .dll files. A ‘content’ folder which can hold any kind of script or file you want to be part of the project. .NET assembly files inside the ‘lib’ file will added as references to the project. Files located in the ‘content’ folder will be added to the root folder of the project. Folders can also be placed in the ‘content’ folder.

At the begin of the U Day I initial attempted to create NuGet packages using the command line. The commands were simple and straightforward but unfortunately the packages I was creating were not valid, so decided to use the Nuget Package Explorer. NuGet Package Explorer is a version of nuget.exe command line application with a user interface. Though the nuget.exe command line application is useful if you plan to incorporate package creation and publishing into build process I would recommend using NuGet Package Explorer. When you launch the application you are presented with two panels. In the left panel you enter metadata about the package. In the right panel you build up the structure of the package by creating the previously mentioned ‘lib’ folder or ‘content’ folder. You can then add your files to the package. Finally you can publish the package and of course, save it!

Apart from problems I had with the nuget command line application, which were probably through my lack of understanding, I would highly recommend NuGet. The GUI tool was a breeze to use. Now Daden is running its own private NuGet feed enabling us to easily manage and reuse library files across different applications. 

16 November 2015

DadenU Day: MongoDB

By: Iain Brazendale, Development Manager

Weather data from OpenWeatherAPI routed to a MongoDB database, and then displayed in Datascape 2

At Daden we all enjoy new challenges, so once in a while we take a day out to do some blue skies research and spend a day working with technologies that we find interesting. These days are known as Daden U days and help the team to take a wider look at technology and encourage innovation.

I’ve always had an interest in Databases but have never had the opportunity to look into NoSQL, so for the Daden U day I spent some time investigating MongoDB.

MongoDB unlike traditional SQL databases is a document database and as such stores its data in an unstructured way. I love how easy it is to get JSON data into the database and extract it.

I’ve got to say a big well done to the team at MongoDB, the getting started documentation is some of the best I’ve seen. Being able to dive right into documentation specifically aimed at C# was fantastic. Installing MongoDB, adding data and writing the first program to read the data took less than five minutes. Trust me when I say this was a lot shorter than my first adventures (many years ago) with MSSQL and Perl.

So was the Daden U day worth it? Well I now know more about NoSQL than I did last week, and more importantly it has encouraged me to learn more. Was it worth it to the company? Well funnily enough a few days after the Daden U day a new client asked me “Do you know anything about MongoDB” and I was happy to reply “Yes”.

9 November 2015

Programming Android Wear

By: Joe Robbins, Daden Developer

For our recent Daden U-day, I decided to learn about Android Wear, Google's operating system for smart-watches and other wearable technology. The philosophy behind Wear is to provide users with quick, convenient access to the most important information and functionality from their smart-phone applications. Wear apps should therefore be viewed as extensions of their smart-phone counterparts, not as a replacement for them.

moto360_2sm.png

Having recently got my hands on a Moto 360 (2nd Generation) smart-watch, and given the future potential of the platform for extending Daden's own applications, I thought it would be worthwhile getting to grips with how to develop apps for Wear.

As the day began, I downloaded and installed Google's own development environment, Android Studio, along with all the necessary packages to develop for wearables. Following this I had to configure my devices to allow my own apps to run on them. Android wear works by installing an application on a smartphone or tablet, and then this device will communicate with the wearable.

The first task I set myself was to build a simple, “Hello World”, app and get it to run on my Moto 360. This proved difficult, since I needed to find and install a specific driver for my smart-phone in order to install my own applications on there. However, once I found out about this, it was fairly straightforward to launch my “Hello World” program on the watch.

moto360_hw_sm.png

I then tried my hand at creating my own notifications, so I built a simple app on the phone that featured a single button, which once pressed, fired off a notification that could be viewed on the watch.

After this, I tried to build up more complex demo apps, but soon found that the debugging experience provided by Android Studio was somewhat less than optimal (perhaps Visual Studio had spoiled me), but I struggled to pinpoint the reason that my applications weren't running.

I spent the rest of the day watching a series of videos published by Google themselves, describing the design principles that should be followed when making a wearable application. This was very insightful and I learned a lot of important design guidelines that I would follow if I delve further into developing for this platform.

Since wearables make use of much smaller screens than a more traditional smart-phone and have more limited input mechanisms, building an Android Wear app brings with it new design challenges. The foremost of which is having to contend with the limited real-estate on screen. The designer therefore has to make sure that they are only presenting the most important information at any time, these devices are not intended for extended periods of use, rather, the user should be able to glance at them and see the information they need already waiting for them.

roundsquare-world.png

The application can detect the type of wearable face and optimise content accordingly.

In conclusion, despite teething problems, developing for Android Wear is an area that shows great potential, when utilised appropriately. I will continue to follow the development of the operating system as it continues to mature. It was encouraging to see how Google has built a micro-philosophy around how this new technology should be designed for. Personally, I look forward to the day that a Daden project gives me the opportunity to create something more substantial on this exciting young platform.

3 November 2015

Coverage: Innovate UK backs Birmingham virtual reality firm with new funding

Birmingham Post covers Phase 2 of our Virtual Field Trips project.

Innovation Birmingham Campus-based Daden secures £230,000 to support the rollout of its programme which aims to prepare students for field trips

Read the full story.