Android Reaches Number 1 for Tablets and Smartphones

iStock_000008735804XSmallWhat was once thought impossible just happened…Android has displaced iOS as the dominant tablet platform. As reported by IDC, Android now has more than 56% of the tablet market as compared to iOS having less than 40%.

For a long time the attitude of both individual developers and organizations about mobile development was to ship an iOS version of an app first and then follow up with an Android version as time permitted. This is an attitude that’s been increasingly hard to justify given Android’s now long-standing dominance in the Smartphone market. With Android now being dominant on both Tablets and Smartphones, it’s time to put this idea to bed.

Continue reading

What’s Wrong With This Code 2: Windows Forms Application

Can you find the problems in this code? It compiles fine, but there are more than one problems here. Hint, some may be obvious but others might be a bit more subtle.

using System;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Collections.Generic;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.button1.Click += new System.EventHandler(this.button1_Click);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            List<String> names = new List<string>();
            using (SqlConnection conn = new SqlConnection("Data Source=DBServer;UserId=Username;Password=P@ssword;"))
            {
                SqlCommand cmd = new SqlCommand("sp_GetAllNames", conn);
                SqlDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    names.Add(reader.GetString(0));
                }
            }
            listBox1.DataSource = names;
        }
    }
}

WACK Your Windows 8 Store Apps

WACKThe Windows App Certification Kit, or WACK as its known to its friends, is a great tool for preparing your Windows Store App for certification.  The utility will test both compliance with Window Store guidelines as well as performance characteristics based on what it calls “a low-power computer”.  This description is a bit vague and the documentation itself hints that the specifications for what exactly constitutes a low-power computer may change over time.  The tool will also run tests for Windows Desktop apps and there is also a WACK tool for Windows RT based apps.

The table below, taken from the WACK documentation shows some of the tests performed by the WACK toolkit as well as links to the certification requirements for each area.

Continue reading

My Clojure Journey: Simple Expressive Tests

One thing my team has struggled with in enterprise C# development is the complexity of unit test setup. This is complicated by Domain Driven Design, which encourages the use of concrete classes for entities and values. Test setup often becomes nontrivial as you are often required to set up considerably more of the object graph than what’s really necessary for the test at hand, simply because of the constructor signature on, say, a value object that you want to test.

This is much less of a problem in a dynamic language like Clojure, where there are no hard and fast rules about constructing objects – you can just create a map with only the properties you need for the test. For example, here’s a test in my Hearts project that invokes a function named next-player-pos and passes it a game of Hearts, which here is simply represented as an empty map {}:

(deftest next-player-at-start-is-first-player
  (with-redefs [first-player (constantly {:pos 2})]
    (is (= 2 (next-player-pos {})))))

Continue reading

Using AngularJS: Interview with Dan Wahlin, Joe Eames and Jim Cooper

The AngularJS JavaScript framework continues to increase in popularity among developers and is being used in a wide variety of scenarios. While at the Pluralsight Author Summit in March, Dan Wahlin sat down with Joe Eames and Jim Cooper to talk about how they’ve used AngularJS, their favorite features and how it was used to build Pluralsight’s HTML5 video player. In the interview they discuss their favorite AngularJS features, benefits it offers developers as well as a few other related subjects. If you’re interested in hearing more about what AngularJS is and what it can do, check out the interview for a quick introduction.

For more information about AngularJS visit http://angularjs.org.

The Disruptive Nature of Agile

iStock_000018627043XSmallIn February of 2001, seventeen people gathered at Utah’s Snowbird lodge to discuss software. They were a diverse group, some with competing interests, some of whom admitted that it seemed unlikely that they would “ever agree on anything substantive.” While many of the concepts that emerged as the Agile Manifesto were not new concepts to those who attended the gathering, the distillation of the ideas into something substantive that was valued by them all was monumental and has become a beacon of shared values that have started to transform our industry.

The concept of Agile has been disruptive to the industry — and that’s a good thing. Every industry has gone through serious evolution over time; just think of how things have changed over the centuries in the areas of home construction, science, and health care. By the late 90′s, our industry had become entrenched in practices that needed disrupting. And yet, many of you have probably noticed that not everyone welcomes Agile. My experience has been that interest often begins at the developer level (or even developer management level). And then acceptance of the idea is mixed from there. Of course, acceptance among the development team can also be mixed depending on the chosen methodology and how well it blends with the members of the team. It seems that Agile is most effective when the company management finds value in it, drives Agile adoption and embraces the culture change that brings to the company.

Continue reading

Android 4.x jumps from 45% of Android devices to nearly 55% overnight

That’s right if you look at the Android Dashboard Charts for the current period (period ending April 2, 2013 as of this writing) you’ll find that the combination of 4.0, 4.1, & 4.2 devices is 54.3%.

AndroidChart_2013-04-02

If you looked at the chart for the previous period you find that same family of devices had only 45% of all Android devices. How does one account for such a huge jump?

Well – one way is to change the way one counts. :-)

Continue reading

ASP.NET 4.5 Web Forms Features – Model Binding

dw1In my last post on ASP.NET 4.5 Web Forms features I talked about the new strongly-typed data controls that are available and how you can now get Intellisense as you access object properties within a server control template. It’s a great feature that you definitely need to check out if you haven’t already. Here’s a quick summary of what’s new when it comes to data-specific features in the ASP.NET 4.5 release:

In this post I’m going to focus on my overall favorite new feature in ASP.NET 4.5 called model binding (check out all of the new features in my Pluralsight course). Model binding isn’t exactly a “new” feature when it comes to .NET because ASP.NET MVC has had it for a long time. However, it’s new to ASP.NET Web Forms and yet another feature that will truly change how you write your application code if you take advantage of what it offers.

What is Model Binding?

In a nutshell, model binding is the process of getting model objects in and out of controls without writing a lot of plumbing code to do it. You can now bind data controls directly to methods that provide select, insert, update and delete functionality. When the methods are called you don’t have to write a lot of code to access the values that were posted back in the case of update, insert, or delete operations. Instead, model binding allows you to have a given model object’s properties (a class with properties if you’re not familiar with model objects) automatically filled with the posted back data.

Continue reading

ASP.NET 4.5 Web Forms Features – Strongly-Typed Data Controls

imageI’ve been spending a lot of time over the past few months digging into the new features offered by ASP.NET 4.5 Web Forms while creating my new Pluralsight course and have been pleasantly surprised by all of the great stuff in this release. Web Forms isn’t exactly the cool kid on the block any more given all of the attention that ASP.NET MVC, jQuery, SPA and other technologies get, but there are still a ton of Web Forms developers out there using it productively every day to build robust, enterprise-scale applications. Microsoft has really stepped up their game with version 4.5 of the framework and added some features that will truly change how you write your applications. I’ll be blogging about a few of the features related to data over the next month.

In addition to Visual Studio 2012 enhancements to the HTML/CSS/JavaScript editors, enhanced HTML5 support, oAuth and anti-XSRF support, integration with Web Sockets and SignalR, the ability to use the ASP.NET Web API, FriendlyUrls, plus more much more, some of the most impressive features are focused on working with data. Here’s a quick summary of what’s new when it comes to data-specific features:

Continue reading

SPA JumpStart – Beginning SPA – Part 1

It’s almost here! I can feel the end approaching for my new beginner level SPA JumpStart course for Pluralsight (hooray!). I think you’re going to enjoy it as much as I enjoyed creating it!  I am targeting for it be available mid March 2013. This course fits in nicely to jumpstart SPA development and get you moving quickly and efficiently. This is an end to end course that starts from File | New project and builds a fully functional SPA with multiple pages, insert, update, delete, validation, and more. I’ll reveal much more about the course in this blog post series. And yes, it will include Hot Towel and some of the new Visual Studio SPA Templates too :)

For now, here is a quick video I compiled to demonstrate just a small piece of what you will be able to build after watching my new SPA JumpStart course.

Continue reading