Tuesday, December 10, 2013

Glasshole Alert!

Today I finally got my hands on Google Glass and I am impressed. It's a pretty slick device with an even more impressive design. The device itself is light weight and pretty stylish (especially with the shade attached). It is also pretty comfortable while wearing, definitely more comfortable than my reading specs. 

While the app selection is minimal, the apps that are available are pretty descent. Allthecooks and google play music are my favorites right now. There are other apps (facebook, evernote, cnn, etc.) I have yet to give them a try but will soon. 

One of the things I really like is how good the speech recognition is. It's really accurate, the first time. I have not had to repeat myself or yell for it to pick up my commands. It is really responsive too which is another plus for me. there is nothing worse than a lagging app. I am also able to speak at a normal speed and cadence and not feel/sound like I'm trying too hard to make it register. The touch pad is also nice, very responsive and pretty intuitive. 

Now hear come the caveats. Ah, the battery life, our age old friend has reared its ugly head within this realm of beauty. But I went into this expecting less than great battery life so I'm not all that disappointed. But i'm confident that Google will get this worked out as the device matures. Sunlight, the image within the prism gets washed out in direct sunlight. The shade helps a bit but it still wasn't great. Overall I am really pleased with the device and look forward to giving some good feedback to the Glass team and keeping you all up to date on my findings. With that said, it's time I get my glass out of here...

Oh, one last thing....(You see what I did there?).... Leave a comment below for a chance to receive an invite to the Google Glass program. With the invite you still have to pay $1500 for the device. Also,

Just a reminder that all Glass Explorers must:
  • Be US residents
  • Be at least 18 years old
  • Provide a US shipping address or pick up their Glass at one of our locations in New York, San Francisco or Los Angeles
We will pick a winner on Friday Dec 13, 2013!

Monday, October 14, 2013

DotNetDude on HealthCare.gov

DotNetDude on HealthCare.gov
Tonight I spent a few minutes applying for insurance on HealthCare.gov so I could get see the process and options first hand.

As someone who's been developing websites for over 10 years, my first impression was that the site is fairly well designed. The front end was created by a Washington, DC based company named Development Seed. The back end was created by a CGI Group Inc subsidiary, CGI Federal. Not only was CGI Federal the prime contractor for the exchange website, but it received $88 million for it's services. Good work if you can get it!

I was afraid I'd have to answer hundreds of questions, but the application process was very concise and took under 20 minutes. I cannot speak to the application process as it pertains to financial aid as I selected the option to apply without aid.

Since I work as an independent consultant I retain private health insurance which costs me $164/month for a high deductible plan that really only covers catastrophic illness. According to a good friend who works in the insurance industry, it was among the least expensive plans available for someone in my demographic.

Once I entered my information, confirmed my email, and agreed to the very simple terms, I was presented with four categories of plans; Bronze, Silver, Gold and Platinum. I was pleased to note that the least expensive plan available to me was actually 20% cheaper than my current plan. Without going into minute detail, I can safely say that I can purchase an equivalent plan to my current coverage without spending a penny more.

I love how simple they've made the process of selecting and comparing potential plans. Medical conditions and treatments are laid out with side-by-side summaries of benefits.

This is only my personal experience and is in no way a definitive assessment of the Affordable Care Act or HealthCare.gov, but hopefully my experience will provide insight to others.

If you have any comments or questions, please post them below or contact me on twitter (@gainesk).

Friday, October 4, 2013

Ingress is the Future of Gamification

Ingress is the Future of Gamification
What is Ingress?
A secretive company named Niantic Labs discovered an element they named “Exotic Matter,” or XM, that seems to appear from cultural landmarks such as public art and places of historic, architectural or social significance. They believe XM is used by an alien race called the Shapers to affect humanity and may actually contribute to the creation of the landmarks near portals where it springs forth.

Technology was developed to interact with and control these portals using modern devices such as smart phones and tablets and has since been leaked to the public at large. This technology is now being used by two distinct factions in an attempt to harness the power of XM. The Enlightened faction believe that the Shapers are working toward a powerful enlightenment which will uplift all mankind. The Resistance believes that it is protecting humanity from Shaper ingression. The factions have, however, been occasionally observed to ignore their difference and to co-operate by establishing neutral zones and rules of engagement.

What is the True Nature of Ingress?
The true purpose of Ingress is data collection. Niantic Labs is a Google start up that has used gamification to recruit over 500,000 volunteers. In order to play, you walk from place to place with Ingress running on your GPS enabled smartphone, You take geo-tagged pictures using the app, and all the while the data is collected and sent to Google’s server where gameplay takes place. Through this process, Google is collecting vast amounts of pedestrian data, average walking speed, routes taken, pictures, and even Wi-Fi hotspots available.

What Makes Ingress Different?
Google has a long history of offering free products which contribute to their data collection efforts. In 2007 Google launched a free automated directory enquiry service named GOOG-411 which allowed them to build a database of accents and cadences that they later used to perfect their voice recognition technology for Android. What makes Ingress different is that, instead of offering a service, they have made the act of collecting data into a game.

Ingress is also a social game and is not designed to be played solo. In fact, there are significant restrictions on how much a single agent can accomplish and it can take as many as eight agents to make a single portal of the maximum level. While this may make it difficult for individuals in rural areas to participate, the social element is vital to adding enjoyment and keeping players involved.

Why Should I Play It?
With their other services, Google identified something that would be beneficial in people's everyday lives. They met an existing need or offered a better way of accomplishing a task. With Ingress they have created artificial incentives to participate in new activities which often reap personal rewards beyond the scope of the game. For instance, yesterday I spent several hours walking around the city of Franklin, TN. I explored cemeteries and monuments, learned things about my local area and got a lot of exercise. Ingress is an inherently social game and offers opportunities to meet new people. There are already examples of couples that met through Ingress.

There is another element to Ingress that sets it apart from other products that use incentives, such as Foursquare. Niantic Labs has developed a complex science fiction back story which is being revealed in real time. Not only are Ingress agents part of the story, they actually affect the plot through large organized events called anomalies. Anomalies can take place at a particular location or can span the globe and agent involvement determines the outcome which then becomes part of the ongoing story.

What's the Down Side?
As with all games, Ingress isn't for everybody. For one, it's still in closed beta which means an activation code is required to join. Each agent can send a limited number of invites to friends and invites can be requested at Ingress.com.

The game is also not without it's flaws. Players gain significant power as they level up and low level players are unable to have any real effect in the game. New players will spend most of their time grinding Action Points (AP) with the purpose of leveling. This process can go much faster with assistance from higher level players or by visiting locations with a high concentration of portals such as cemeteries or historic towns.

What Next?
While you're waiting for an invite, check out the Niantic Project investigation board and the Ingress Report on Youtube for videos and documents. The folks at Niantic Labs have done an amazing job at producing rich content to tell the story and it's a real treat for science fiction and conspiracy enthusiasts.

If I've missed something important or for questions, post a comment below or contact me on twitter (@gainesk).

Friday, August 23, 2013

Welcome Guest Blogger: Chris Gordon

Please join me in welcoming Chris Gordon as a guest blogger for DotNetDude. As well as being a senior .NET developer, Chris has a passion for mobile development and is published in the Google app store. For his first post here at DotNetDude he has shared his initial impressions of a cross-platform development tool named Xamarin. Xamarin, Daddy Likey!

Tuesday, August 20, 2013

Xamarin, Daddy Likey!

So, I recently attended a talk given by Ben Henderson on Xamarin and was pretty impressed with what I saw. Now before I get to far into this post let me introduce my self. My name is Christopher Gordon, a Software Developer with a strong interest in mobile development. Over the last 3 years I've been dabbling with the Android framework. I, along with Frank Jones and Noah Porch, currently have an application in market named Kickback. We would like to develop a iOS client but neither of us have experience with iOS. This is were I think we could definitely benefit from Xamarin.

Xamarin allows you to develop a code base that can be shared between multiple platforms (Android, Windows and iOS), which is great for teams of any size. But for me the biggest benefit was that I could write the majority of my code in C#, which I am very familiar with, as opposed to Objective-C. This alone would flatten the learning curve tremendously and allow me to become more productive, faster. There is however one caveat to developing for iOS, and that is you MUST have a Mac in order to code the UI. Hey, I don't make the rules I just break them!

I plan to use Xamarin to rewrite the majority of Kickback so that I can leverage it's power to create an iOS and Windows Phone client. As with any awesome thing comes the price. For serious development, the Indie package looks like it has what you will need at a minimum.


Me personally, I would like to have the Visual Studio integration which will run a whopping $999/year. But, before you go out and spend tons of cash, you can always install the starter version to see if Xamarin is in fact as awesome as it claims to be. 


I plan to blog about Xamarin (good or bad) as I venture into the belly of the beast. If there are any Xamarin users out there feel free to leave a comment to let me know how you feel about Xamarin. I'm curious to hear what others think.

Wednesday, August 14, 2013

Dynamic Windows Explorer Taskbar Icons

Dynamic Windows Explorer Taskbar Icons

Before


After
If you're like me, you probably copy, move and delete files using Windows Explorer and end up with several Explorer windows open at the same time. If you have the Windows taskbar docked on the side of your screen, the ungrouped icons all look the same.

Windows provides a very easy and effective solution with custom folder icons. Select a folder you use regularly and open the folder properties then go to the Customize tab.

Then click "Change Icon" and select the icon that best fits that folder. Several icons are provide with windows, however there are plenty of free icon libraries available on the web.

That's it! Now whenever an Explorer window is open to that folder the taskbar icon will change to indicate the current location.

If you have any feedback or helpful tips, please leave a comment below or contact me directly.

Saturday, July 13, 2013

New Talks Available

If you're in need of a speaker for your user group or conference, I'm now offering a more extensive list of talks including some oldies that have been recently updated as well as new content.

How to Be a Six Figure Developer

Microsoft .NET developers are in extremely high demand and rates continue to climb, but many developers have not yet realized their potential. In this talk we lay out some simple and proven ways to make yourself a more valuable employee and build your personal brand.

Going Solo - Independent Consulting for Jedis

Leaving a perm position to go independent is a huge decision. We'll discuss whether consulting is right for you, what to watch out for and things you can do to help ensure success.

Introduction to Model-View-Controller (MVC4)

The move from ASP.NET to MVC can be quite daunting. In this talk we discuss the core concepts, why they will make your life easier, and present some best practices to ensure the move to MVC is as painless as possible.

Build a MVC eCommerce Site in Under 5 Minutes

Did you know that you can launch a fully functional MVC eCommerce storefront in mere minutes? Not only does nopCommerce offer extensive functionality for free, but it's a great way to become more familiar with MVC, WPF, Entity Framework and LINQ.

Customizing nopCommerce with Plugins and Themes

This talk picks up where we left off with Building MVC eCommerce Sites and shows how nopCommerce can be easily customized using plugins and themes without having to modify the original source code. This approach allows for quick and easy upgrades as new versions of nopCommerce are released.

Wednesday, March 6, 2013

Conversion Operators Pros and Cons

C# enables programmers to declare conversions on classes so they can be converted to and/or from other types. These conversions can be explicit or implicit.

Below is an example from Microsoft:
class SampleClass
{
    public static explicit operator SampleClass(int i)
    {
        SampleClass temp = new SampleClass();
        // code to convert from int to SampleClass...

        return temp;
    }
}
Conversion operators are a great way of simplifying business logic, however they have some important limitations. One of these is that the operator may only have one parameter (the source type). This means that the only values available when the target type is initialized are those provided by the source type and dependency injection cannot be used. It's also worth noting that these conversions will not chain automatically. Declaring conversions from A->B and B->C does not provide a way to directly convert A->C.

This is all fine in theory, but what I find useful in these types of articles are real world examples, so here it is.

We're using Microsoft Service Bus for Windows to pass events between an e-commerce solution based on nopCommerce and a custom back office application. We needed some basic objects to pass relevant information through the bus and did not want to be too tightly coupled to the nopCommerce domain objects. My initial solution was to create classes and implement conversion operators to cast objects from nopCommerce to their POCO counterparts.

In the example below, you can see an implicit conversion operator for the Order class which uses the Shipment conversion operator.
public static implicit operator Order(Core.Domain.Orders.Order o)
{
  return new Order
  {
    OrderId = o.Id,
    Shipments = o.Shipments.Select(x => (Shipment)x)
  };
}
Since we needed to add more information to our Order object than was contained in the version from nopCommerce, I got rid of the conversion operator and created a separate conversion class with the following method:
public Order ToOrder(Core.Domain.Orders.Order o)
{
  return new Order
  {
    OrderId = o.Id,
    Shipments = o.Shipments.Select(ToShipment).ToList()
  };
}
The method contents are nearly identical, however we are now free to inject any dependencies we like in the conversion class constructor and add parameters to the conversion method.

No matter which approach you choose, these are excellent ways to simplify conversion and consolidate code used for creating related types. If you have any suggestions or feedback on this article, please leave a comment below or contact me directly.

Wednesday, February 13, 2013

Specified RunAs Account is Invalid

Windows Service Bus Configuration requires a "RunAs" service account which seems like it should be a fairly simple requirement. Unfortunately, if the configuration does not like the user you've entered it displays the generic error message, "Specified RunAs account is invalid." without providing any indication of the problem.

In my case, the service account was fine. The problem was that I logged in with a local administrator account and was trying to use a domain service account, which is not supported. Once I figured out the issue and logged in with a domain account the error went away.

Below are the supported combinations:

EnvironmentLogged In AccountRunAs AccountSupport
Domain
Domain
Domain
Supported
Domain
Domain
Local
Not supported.
Domain
Local
Domain
Not supported.
Domain
Local
Local
Either in development environment (1-box) or by using SQL Authentication.
Workgroup
Domain
Domain
Not supported.
Workgroup
Domain
Local
Not supported.
Not possible.
Workgroup
Local
Domain
Not supported.
Not possible.
Workgroup
Local
Local
Either in development environment (1-box) or by using SQL Authentication.

Hopefully this article will save someone else the headache of wondering why their service account is considered "invalid".

Thursday, February 7, 2013

Building E-commerce Sites with MVC

For those of us who have spent most of our careers building business applications, the prospect of creating an e-commerce storefront can be quite daunting. Not only do you have to deal with calculating tax, estimating shipping and accepting payments, but employees need a way to manage products, discounts and marketing content. Thankfully, there's an open source e-commerce solution written in Microsoft ASP.NET MVC named nopCommerce that provides all this functionality and much more.

I was so impressed by both the functionality and the underlying architecture that I've created a presentation which I believe will serve as a great introduction to MVC as well as a tutorial on developing custom storefronts using nopCommerce.

We start off with a brief overview of basic MVC concepts accompanied by examples within the nopCommerce code. This includes strongly typed Razor views, HTML helpers, jQuery ajax calls, and fluent validation.

Once everyone understands how the website works, we dive into the infrastructure by introducing WCF services, using a generic repository with Entity Framework (EF4) and LINQ, as well as Dependency Injection (DI) with Automapper.

If you'd like to schedule this talk for your local user group, either request me through INETA or contact me directly.

UPDATE 7/13/2013
Thanks to the CodeStock crew and everyone who packed the room for my talk. Y'all had some excellent questions and I invite anyone with additional questions to comment below or contact me directly. Also, don't forget to provide feedback so I can improve the talk for next time.

Click here to view the presentation slides.