Microsoft Band 2 Works Better With An Updated Windows Phone

I purchased a Microsoft Band II last week and I was trying to set it up. A couple of things I noticed were:

 

  1. Microphone was not working
  2. Text alerts were hit or miss
  3. No Cortana integration
  4. No email alerts

 

At first glance, I was not sure what to do. I decided to check to make sure my 920 was updated and quickly relized I had 2 or 3 updates waiting to download. After downloading the updates. I noticed that my Microsoft Health app on my phone showed the icons for emails, text, Cortana notifications and could be added to my band. Once these were added, my band came alive. I love it and can't wait to start learning how to write apps for it.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by: BayerWhite
Posted on: 12/27/2015 at 2:57 AM
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Latest Service Bus 3.1.0 Not Loading For SignalR Backplane

Yesterday I received the following message while upgrading my nuget packages for Service Bus to version 3.1.0:

"Could not load type 'Microsoft.ServiceBus.Messaging.MessageClientEntity' from assembly 'Microsoft.ServiceBus, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'." 

 There is no fix in order to get SignalR to use WindowsAzure.ServiceBus to work with 3.1.0, however downgrading to version 2.7.6 seemed to work. Here is a link on github where others are having the same issue.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by: BayerWhite
Posted on: 12/10/2015 at 1:41 AM
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Entity Framework 6 Data Graphs Re-Inserting Records

While working with EF for loading data using transactions, I came across a unique scenario. Records were being inserted into tables, which was not the intended result I was looking to accomplish. Luckily, I ran into one of  Julie Lerman's posts from 2013, which helped explain the issue and confirm that my logic for fixing the issue in the past was somewhat correct, but more importantly showed me the right way for handling the issue. Usually when this happens, the unwanted entity that is being inserted can either be removed or set to null within the graph (Parent entity) or simply setting the foreign key for the parent entity of the child entity that is unfortunately being inserted. Today this did not work. I tried nulling out the child entity and for some reason EF did not add a foreign key during generation, rather just the object itself to the parent entity.

Luckily Julie mentions the correct way of handing the issue which is to Attach the object to the EF context first, and then add it to the parent entity object that really needs to be inserted. Below shows how I fixed it. Not the most obvious as Julie hints as well

//The "If" condition prevents the same object being "Attach" more than once
if (!projectId.Equals(clientProject.ProjectId))
{//EF wants to know when ClientProject records already exist so EF does not insert them.
	//new clientProject object that has not been attached
	clientProject = new ClientProject { ProjectId = e.ClientProject.ProjectId }; 
	//Attache the object to the DbContext
        _repository.Attach<ClientProject>(clientProject);
}
//Set the object to the parent entity. 
//But dont worry because it is now attached and flagged as 'unchanged'. 
//If we did not attach it above, ClientProjects would be inserted 
e.ClientProject = clientProject; 
//now insert the parent object...no ClientProjects should be inserted now
_repository.Insert<TimeEntry>(e);    //Helper method for attaching the entity, which is called above public void Attach<T>(T entity) where T : class { DbContext.Set<T>().Attach(entity); }  //Helper method for inserting the entity into the database public void Insert<T>(T entity,bool saveChanges= true) where T : class { DbContext.Set<T>().Add(entity);         if (saveChanges)         DbContext.SaveChanges(); } 

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by: BayerWhite
Posted on: 12/2/2015 at 4:31 PM
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Update For Service Bus 1.1 And .NET 4.6

There is an issue when installing Service Bus 1.1 on a box targeting .NET 4.6 Framework. The install hangs because it cannot start the Service Bus Gateway service that is installed. While looking at the event logs, the issues stems from the service not being able to load Microsoft.Cloud.Common.AzureStorage. Microsoft has provided a solution by releasing an update once Service Bus 1.1 is installed. More information including the download can be found here.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by: BayerWhite
Posted on: 11/29/2015 at 3:17 AM
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Technical Debt Is Not a Myth Either!

Technical Debt Is Not a Myth Either!

Most people recall the phrase from the Movie, "Water World", that "dry land is not a myth". It was considered a myth because no one had seen land while living on a "Water World". If you work in an environment where writing software is equivalent to "running a well greased machine" then the term, "technical debt" may not resonate, but that does not mean that technical debt is not being compounded. Over time any debt starts to complicate our lives. On the other hand, some amounts of debt are normal as long as there is a plan for handling it. For instance, I need to buy a new transmission for my truck. I might use a credit card to purchase and have it installed, and since I do not have the money right then, I will charge it to my credit card and pay it off within the next couple of months. The plan for handling any debt is what is necessary for making sure debt remains relatively low.

So what is technical debt? Well as mentioned earlier, some debt is ok which I will explain later, but bad technical debt occurs when there is a lack of strategy for building and maintaining technology and it starts effecting the delivery of software. Just because there is a team of developers and software is being written, does not mean it is being done correctly. Technical debt also effects how we estimate software tasks and how effective we are for deploying software. IT companies and departments incur it daily, however just like the example about the truck transmission, it is necessary to sometimes incur technical debt in order to provide a "minimal viable product" (MVP). This means a developer might take shortcuts in their code to get a software product out to customers, and as long as there is a plan to fix the debt, it does not continue to incur to the point that over time it becomes a problem.

Avoiding technical debt is all about making sure you have effective processes in place for writing software and a strategy for maintaining future software changes. These processes are very important for keeping estimates and deadlines for delivering software. Just as you may monitor your checking account, it is important to monitor the technical debt your development team accumulates by doing the following:

1. Talking with your team and other departments about recommendations around development. There should always be transparency about what others are building. "Silo software development" is equivalent to someone who is a bad gambler and is headed to Las Vegas.

2. Create processes around delivering software. These processes should be measureable and conducive to delivering new products to customers or the business effectively. Do not create processes for the sake of creating processes as this can promote technical debt.

3. Measure the effectiveness for existing processes as these may need to change over time. This is done by training the development team on effective ways to estimate tasks. Identify reasons for "sliding deadlines", and make sure that the processes include everyone, including other departments who play a role for making sure software gets delivered, like infrastructure and testing groups.

There is bad and good technical debt, and it is all relative to the amount of debt your software team can handle. Just like financial debt, it must be managed by planning out how to reduce the amount of debt incurred. To learn more about the different types of technical debt a software shop encounters and ways of reducing it please contact me.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by: BayerWhite
Posted on: 9/4/2015 at 2:21 AM
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Is Microsoft’s .NET Ecosystem on the Decline?

Recently I was directed to Dice's posting about .NET jobs on the decline. The posting can be found here

My response was...

"Not arguing with the stats because they might be correct as I have not seen them, however you can take almost any stats and make them what you want. This might just show that clearly there are other technologies that are now available for doing development, but I would not go as far to say that companies are ditching Microsoft.NET. In my region, .NET is still sexy and as long as you have the skills, you will have multiple job offers."

 One thing I have experienced and honestly can't stand is when companies make rash decisions to move away from a technology stack. In my opinion there is no real business strategy or requirement that warrents such an initiative and that these decisions are simply unfortunate human characteristics that we have to deal with!  What are your thoughts?

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by: BayerWhite
Posted on: 6/18/2015 at 2:44 AM
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Microsoft Ends Support for AppFabric 1.1 In A Year

It does not seem that long that AppFabric came out, and now Microsoft has decided to end support for AppFabric 1.1 for Windows Server about a year from now (Read Here). I consider this technology a pioneer for building scalable caching and implementing enterprise business processes easily using other technologies like WCF & WF. Since then new technologies have rapidly taken shape. For instance, Redis is now the technology of choice for caching and we have seen a new migration to the cloud and Azure, which now includes BizTalk services instead of the raw frameworks like WCF and WF for implementing business process solutions. Although, I feel AppFabric was somewhat short lived, but the concept was an important factor to conquer, and as a technologist, we cannot invest to heavily in a technology because they always evolve. This is a frustration unfortunately we will always live with. 

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by: BayerWhite
Posted on: 4/3/2015 at 1:50 AM
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Code Impact - Free Microsoft.NET Community Event In Jacksonville, Florida

Summer is my favorite time of year. Kids are off from school, traffic is better in Jacksonville and Jacksonville's .NET Community comes alive. This year, we are hosting a free event called "Code Impact Jax", which will be held on September 13, 2014 at University of North Florida, located at 1 UNF Drive
Jacksonville, FL 32224. To register, visit

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by: BayerWhite
Posted on: 7/22/2014 at 1:43 AM
Categories: General
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Remote Desktop Connection To Azure WebRoles (Cloud Services)

Connecting to virtual machines though Azure IaaS is common, but you may have wondered how content can be managed for web roles, hosted as Cloud Services. Cloud Services are somewhat of a "black box" when it comes to traditional websites hosted in Microsoft Azure and rightfully so, since web roles are more complex and align with traditional tiered architecture for enterprise web applications. This post will walk through setting up RDP for your cloud services, so you can RDP to one or more instances of the web roles and debug or make necessary changes.

There are a couple of ways to setup RDP for cloud services. One way is by enabling RDP while publishing a webrole to Microsoft Azure,

http://msdn.microsoft.com/en-us/library/gg443832.aspx

however you can also use the portal to set it up. 

1. After filtering a subscription from the Azure Portal, select "Cloud Services" from the menu.

 

2. Select the service and choose Configure

 

3. Down at the bottom of the configuration page, click on the Remote link. The link below walks through the rest for setting it up and more details around removing the RDP configuration.

http://azure.microsoft.com/en-us/documentation/articles/cloud-services-how-to-configure/

but the next step is setting up the configuration by selecting the role, username/psw, certificate and when the RDP will expire on. The above link also provides more detail around the certificate and rebooting of the role once RDP is configured.

4. After selecting the check button from the Configure Remote Desktop window from the Azure Portal, Azure will crunch for a bit and indicate that it is processing the request ot configure RDP for the role. This can take a little bit of time.

5. Once configuration is completed, RDP can be accessed from within Visual Studio and Server Explorer.

 

6. Right-clicking on either of the instances for WebRole1 will start an RDP session, where you can remote into either instances.

Once remoted in, go to IIS so you can see your hosted site and demystify the web role for both instances, and see the file structure for the files that were uploaded during the last deployment. You can also save the .RDP profile so you can remote in from a different computer.  

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by: BayerWhite
Posted on: 4/24/2014 at 6:13 AM
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Processing Service Bus Subscriptions Through WCF - Part 2

In my last post I showed how a WCF service is used to process messages that are sent to Windows Service Bus topic. This post completes the concept by showing how a client application can send event engagement requests to a Windows Service Bus topic, so the messages can later be processed by the WCF service built in my previous post. This post assumes that Windows Service Bus has already been installed. For more information on installing service bus, visit here.

1. Create a new Console Application, which will serve as the client application that will submit messages to the service.

2. Add the service contract which has the interface the WCF service implements, and the data contract for the engagement request. Since the console application does not need a reference to System.ServiceModel.Web, this directive can be commented out.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Runtime.Serialization;

using System.ServiceModel;

//using System.ServiceModel.Web;

using System.Text;

namespace SB.WCF.Subscription

{

[
ServiceContract]

public interface IEngagementService

{

[
OperationContract(IsOneWay = true, Action = "RequestEngagement")]

[ReceiveContextEnabled(ManualControl = true)]

void RequestEngagement(EngagementRequest request);

}

[
DataContract]

public class EngagementRequest

{

[
DataMember]

public Guid EngagementId { get; set; }[

DataMember]

public EngagementInfo Venue { get; set; }[

DataMember]

public string Description { get; set; }[

DataMember]public List<EngagementEvent> EventSchedule { get; set; }

}

public class EngagementEvent

{

[
DataMember]

public string EventName { get; set; }[

DataMember]public DateTime EventDate { get; set; }

}

public class EngagementInfo

{

[
DataMember]

public int Capacity { get; set; }[

DataMember]public string Location { get; set; }

}

}

3. Add the nuget package for Service Bus 1.1. This will add some default configuration to the app.config.

4. Change the app.config with the configuration indicated below. Notice that the configuration is not too different then the configuration used for setting up the WCF service.

<?xml version="1.0" encoding="utf-8"?>

<configuration><

system.serviceModel>

<extensions><

bindingElementExtensions>

<add name="netMessagingTransport" type="Microsoft.ServiceBus.Messaging.Configuration.NetMessagingTransportExtensionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /></

bindingElementExtensions>

<bindingExtensions><

add name="netMessagingBinding" type="Microsoft.ServiceBus.Messaging.Configuration.NetMessagingBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

</bindingExtensions><!--

In this extension section we are introducing all known service bus extensions. User can remove the ones they don't need. -->

<behaviorExtensions><

add name="connectionStatusBehavior" type="Microsoft.ServiceBus.Configuration.ConnectionStatusElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

<add name="transportClientEndpointBehavior" type="Microsoft.ServiceBus.Configuration.TransportClientEndpointBehaviorElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /><

add name="serviceRegistrySettings" type="Microsoft.ServiceBus.Configuration.ServiceRegistrySettingsElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

</behaviorExtensions></

extensions>

<behaviors><

endpointBehaviors>

<behavior name="endpointBehavior"><

transportClientEndpointBehavior>

<tokenProvider><

windowsAuthentication>

<stsUris><

stsUri value="https://attpa-10130435.at.local:9355/ServiceBusDefaultNamespace" />

</stsUris></

windowsAuthentication>

</tokenProvider></

transportClientEndpointBehavior>

</behavior></

endpointBehaviors>

</behaviors><

bindings>

<netMessagingBinding><

binding name="messageBinding" closeTimeout="00:03:00" openTimeout="00:03:00" receiveTimeout="00:03:00" sendTimeout="00:03:00" sessionIdleTimeout="00:01:00" prefetchCount="-1">

<transportSettings batchFlushInterval="00:00:01"></transportSettings></

binding>

</netMessagingBinding></

bindings> <client>

<endpoint name="EngagementRequestor"

address="sb://attpa-10130435.at.local/ServiceBusDefaultNamespace/EngagementTopic"

binding="netMessagingBinding"

bindingConfiguration="messageBinding"

contract="SB.WCF.Subscription.IEngagementService"

behaviorConfiguration="endpointBehavior"></endpoint>

</client></

system.serviceModel>

</configuration>

 You will notice that the endpoint only has an address, which was different than the configuration used for the WCF service. This is because the client only needs to know the address (topic) of where the message will be sent.

 4. Now add the following code, which references the WCF service and builds the data contract that will be sent as a message to the service bus.

using SB.WCF.Subscription;

using System;

using System.Collections.Generic;

using System.Linq;

using System.ServiceModel;

using System.Text;

using System.Threading.Tasks;

namespace SB.Subscription.Client

{

class Program

{

static void Main(string[] args)

{

CreateServiceClient();

}

private static void CreateServiceClient()

{

ChannelFactory<IEngagementService> channel = new ChannelFactory<IEngagementService>("EngagementRequestor");

var engagementRequest = new EngagementRequest

{

EngagementId =
Guid.NewGuid(),

Venue = new EngagementInfo { Capacity=50, Location="Hotel California" },Description =

"Geographical Beetle Fighting Tournament",

EventSchedule = new List<EngagementEvent> //[] //indicates a dynamic array

{

new EngagementEvent { EventDate = Convert.ToDateTime("5/6/2014"), EventName="US Beetle Competition"}, new EngagementEvent { EventDate = DateTime.Now, EventName="Asia Beetle Competition"}

}

};

var engagementService = channel.CreateChannel();

engagementService.RequestEngagement(engagementRequest);

channel.Close();

}

}

}

Your client is now ready to send messages to the service bus. Make sure the WCF service is running, that will consume service bus messages and then fire up the client to send a message.

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by: BayerWhite
Posted on: 4/22/2014 at 1:43 AM
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed