Tuesday, October 15, 2013

Windows 8 / Mobility Presentation Links

Hey there! I hope you enjoyed my presentation on Windows 8 and mobile development. Here is a list of the links and other information.

Twitter: @WhatsTheBigIT


Facebook: WhatsTheBigIT


Windows Store App Builder Info


Windows 8 Design handbook


Microsoft MSDN


Microsoft Channel 9


BUILD Conference


Microsoft Virtual Academy


Microsoft DreamSpark Program


Microsoft Imagine Cup


Daugherty Business Solutions




Nokia Dvlup Program


Lance McCarthy (Nokia Developer Ambassador)




IBM Developer Works (for java)


Google Developers (for Android)


Xamarin (Cross platform development)


Phone Gap (Cross platform development)


Cordova (Cross platform development)


Tuesday, July 9, 2013

Dynamic Directives with Angular

Having recently embarked on a Single Page Application (SPA) for one of my clients, the technology landscape is pretty vast.  Without going into much detail, I settled on AngularJS as one of the many javascript libraries. Angular is pretty robust with a wealth of options required of spas.

[I looked at a few others, such as KnockoutJS and Durandal. While these are great JavaScript libraries, I found Angular provided most of the functionality I needed in a single JavaScript package.]

One angle of Angular is the concept of directives.  Directives, in a nut shell, are ways for the developer to build custom html tags, or add features to existing tags.  The purpose of this post is not to go into all of the details of directives, but to focus on one particular hurdle I recently had to overcome.

Problem: The information I need to display to the user must be in a variable format, based on an attribute of the object. Each view variation is presented by a related custom Angular directive. It can be challenging to dynamically assign the correct Template, or TemplateUrl from within the actual directive. I needed a way to select the correct directive for each row of data and render them all on the screen at the same time.

First, I’ll start with the data.  In this example, I have an array of five objects.  The only notable thing is the driverType.  There are three different types, which will determine the Angular Directive I wish to present to the user.  The types are driverOne, driverTwo, and driverThree.  Nothing special.

 function fetchDriverData() {
        return [
            { id: '001', name: 'Sample Data1',  driverType: 'driverOne' },
            { id: '002', name: 'Sample Data2',  driverType: 'driverTwo' },
            { id: '003', name: 'Sample Data3',  driverType: 'driverThree' },
            { id: '004', name: 'Sample Data4',  driverType: 'driverOne' },
            { id: '005', name: 'Sample Data5',  driverType: 'driverTwo' }

The array of objects is available to my HTML by way of an Angular $scope.  It is injected into my view’s controller and can be accessed from any number of ngViews for my SPA.  If you are not familiar with ngView, there are a number of good resources on the web.  Views are a pillar of SPAs, so it is best that you become familiar with them.

The magic for dynamic directives comes into play with three angular directives,
The first thing I want to do is iterate over my driver collection.  I’ll use a simple repeater:
<div ng-repeat ="driver in drivers">

Within my repeater, I’ll use the ngSwitch to selectively make use of the three different custom Directives.  The switch will be on each driver from the driver repeater.
<div ng-switch="driver.driverType">
(Remember: drivers is the collection and driver represents a single item within the collection)

Now all I need to do is identify each condition, or driverType.
< div ng-repeat ="driver in drivers">
< div ng-switch ="driver.driverType">
< div ng-switch-when ="driverOne">< div class ="driver-directive-one" driver ="driver"></ div ></ div >
< div ng-switch-when ="driverTwo">< div class ="driver-directive-two" driver ="driver"></ div > </ div >
< div ng-switch-when="driverThree">< div class ="driver-directive-three" driver ="driver"></ div ></ div >
< /div >
< /div >
The highlighted div tag represents one of my custom directives, driverDirectiveTwo

Creating custom directives is a fantastic way to help provide a separation of concerns within your web based application and to provide the potential for reusability. Directives are also a great way to provide a means for testing your code, which is always a good idea. I hope this post was helpful and sparked options for the dynamic, data-driven, aspects for your own Single Page Application.

Wednesday, May 29, 2013

Pssst! Developer, Be a Family Superhero

I know your idea of a vacation would be to stay at home, watch Pluralsight videos, then work on your billion-dollar app idea. That’s fine, but it stinks for the rest of your family. Do they really want to stay at home while you listen to John Papa? Heck no!

You will end up at some beach or touristy attraction with your laptop in the hotel room. The end result is probably a fun vacation, but little progress will be made on your techie ideas. There has to be a way to feed your developer needs AND have fun for the whole family.

Everyone likes water parks. Right? Why not take your family to the famous Wisconsin Dells and stay at the Kalahari Resort? From August 12th – 14th, That Conference will be hosted at the Kalahari Resort. Yes, you heard me correctly. One of the top developer conferences will be at the Kalahari. The perfect place to end summer vacations and have one last splash before schools resume.

This is the ultimate win-win scenario for techies and their families. You get to attend high quality training and your family gets to enjoy some of the world’s best water attractions. Pause, for just a moment, and let this soak into your brain.

Water parks. Family fun. Developer conference. YOU, being a family superhero! (did I mention water parks?)

Register, today.   Tell them “The BigIT” sent you!


Updated on June 10, 2013!!!
Get discounted air fare here

Tuesday, May 21, 2013

Mark Your Calendar, November 14-16

Years ago, the backbone of the Midwest was agriculture.  Fertile fields fed the world.  Today, the Midwest is growing more than just corn, wheat, and soybeans.  The Midwest is growing businesses.   The Corn Belt is attracting a large number of start-ups, venture capitalists, and technologists.  As technology becomes a key player, some have labeled the Midwest, the Silicon Prairie.    This November, one of the largest technology conferences in the Midwest will be held in heart of the Silicon Prairie, St. Louis.

The St. Louis Days of Dot Net conference will completely overtake the Ameristar Casino & Resort on November 14-16.  This premier event is an excellent opportunity to network with technology companies, technologists, and software engineers.   If you are interested in becoming a sponsor, shoot me an email; or, you can wait until the official sponsor drive opens.  Follow me on Twitter to keep yourself up-to-date on this awesome opportunity.  

St. Louis Days of Dot Net

Wednesday, May 8, 2013

Midwest Developer Conferences

Who says you have to go to the coasts to attend a top quality technical conference?  Four of the best developer conferences will be located in the middle of the United States!  You KNOW you want to be there!

August 12-14 That Conference @ Wisconsin Dells, WI

August 28-30 DevLink @ Chattanooga, TN

September 18-20 Strange Loop @ St. Louis, MO

November 14-16 St. Louis Days of .NET, St. Louis, MO

Saturday, March 2, 2013

Building Combat Simulators

My day job is in consulting where I help my clients solve problems using tools and techniques in the IT field.   In the evenings and weekends, I teach college level computer science classes.   Teaching classes in the evenings and on weekends can be especially trying.  The difficultly comes from people being tired by the end of the day, or have difficulty finding the motivation to come to school on the weekend.   To help motivate people in my more advanced classes, I have come up with some creative ways of instruction.

For one of my classes, I tell the students on the first day of class there will be no homework assignments the entire semester.  I also tell them there will be no formal midterm or final exam.  After saying this, I can tell all eyes are on me and I have their full attention.   I then inform everyone their grade will be based on only three assignments.

The first assignment is to construct a combat simulator.  The name, alone, sounds exciting!  The combat simulator will include an arena and two fighters.  The goal of the simulator is to battle two fighters until there is only one standing.   You can see the wheels spinning in the students’ heads.   Once this idea soaks in, I explain the grading technique.

The combat simulator, and the other two projects in my class, will be graded cafeteria style.  I hand out the list of grading possibilities.   For example, a student can earn up to ten points for correctly using an interface.  Fifteen more points can be awarded for using an abstract class.  Twenty points can be received for implementing their own custom exception; this includes creating the class, throwing the custom exception, and catching it.   There are several other possibilities for earning points.  The final grade for the project is based on a total accumulation of points.

Programming is just one aspect of the assignment.  The students must also document and present their projects to the class.  They can earn 10 points for documentation and another 15 points for their presentation.   When they give their presentation, I encourage the students to give an overview of their project and pretend the audience knows little about the assignment.  They then should demonstrate their simulators, highlight parts of their code, then field questions from the audience.

The purpose of the presentations is to give my students some experience presenting a technical subject to an audience.  It also reinforces the fact they have to do their own work.  I let them know, from the beginning, how awkward it will feel if they are asked questions about a method and can’t explain it.   I also let them know I would rather see them stumble in front of the class, as to stumble in front of a client, employer, or a financial backer hoping to fund their start-up.   Their code demonstrations also help them get a feel for demonstrating software.

I have used the combat simulator for a number of years and have found it to be very successful in a number of areas.  From a technical perspective, this program helps students to better understand the concepts of interfaces, abstract classes, inheritance, and exceptions.   The format of the assignment allows the students to be creative and come up with their own designs, some of which have been very unique.  The demonstration aspect helps them present in front of people and to work on communication skills.

You may recall, I mentioned there is no homework in my class.  I’ve found students spend more time working on their project than they might spend working on small homework assignments.  I’ve also noticed students are more motivated when they can work on a project of their own direction.  Having a creative aspect tends to keep their interest.

If you would like more information about my combat simulator project, or other aspects of teaching, feel free to send me an email.

Tuesday, February 5, 2013

Quality and Quantity

If you spend any time reading the tech press, you will undoubtedly come across some critic bashing Windows Phone 8, or Windows 8. The two most common themes seem to be the lack of apps and the lack of a start button. Both of these complaints are simply ridiculous.

Let me first start with the lack of apps for the Windows Phone 8. What are you looking for that does not already exist? If your favorite app does not exist, then what have you done to help? Did you contact the maker of the app and ask them if they are planning a Windows Phone 8 port? If enough people ask for the Windows Phone 8 version, perhaps they will deliver. Maybe this is YOUR opportunity to capitalize on another’s short-sided perspective.

While I’m on the topic of Windows Phone 8 apps, I would like to ask the critics how long they should expect it to take for the development of a quality app?  Do you want some shoddy code expedited so you can have a half-baked solution? Keep in mind, the public release of the Windows Phone 8 SDK has only been out for a few months. A good, quality, app can take months to build, especially if the developers are working on their spare time (evenings and weekends). Maybe we should revisit the quantity/quality situation in a few more months.

Enough about Windows Phone. Let me turn to the Windows 8 operating system. I’ll call it out right now. There is NO start button. We now have a start screen and live-tiles are an added bonus. All of the Windows 7 applications I use work just fine with Windows 8. This notion of a double headed operating system is blown way out of proportion. It seems, to me, some of these critics are overly critical and are grasping at straws for some good-ole Microsoft bashing. Give the start screen a chance, like you did the start button on Windows 95. I'll give you the BigIT guarantee you will grow to love it.

Looking at things from a developer’s perspective, Windows 8 and Windows Phone 8 are just fine. I frequently work with c# and Java, using Visual Studio 2012 and Eclipse. No problems. Windows 8 is more stable on my laptop and I enjoy ALL of the little enhancements Microsoft made to the user interface. Windows 8 works great, even without a touch screen. Developing for Windows Phone 8 is also very nice and the new emulator is fantastic. I'd even say it is better than the Android Emulator (and faster, too).

Ok, that is enough of a rant. I hate to be so negative! I’ll conclude this writing on a positive note regarding Windows 8 development. App development is a pure pleasure. Visual Studio 2012 + XAML + c# + Windows Phone 8 = software developer bliss!

Microsoft brought the FUN back to software development!

Wednesday, January 16, 2013

Windows 8 Shortcuts Keys

This post will be short and sweet. Here are a few common shortcut keys for Windows 8. Even if you have a touch screen, or touch mouse, these keyboard shortcuts will help. You may want to bookmark this blog for quick reference, or refresher.

Win Key Key Action
winToggle between Start Screen and Desktop
wincOpen / Close Charms
windOpen Desktop
wineMy Computer
winfFile Search
winhOpen Share Charm
winlLock Computer
winmminimize all windows
winshift + mrestore all windows
winpDisplay Second Screen Settings
winqOpen Search Charm
winrOpen Run Window
wintTask bar
winuEase of access screen
winwSearch Settings
winxTask Menu
winzOpen / Close app bar
wintabcycle over apps
winPrnt ScrnCapture screen

I would also like to mention something about the new Windows 8 Start screen.  It seems many people find issue with the missing "Start Button."   Honestly, folks, the Start Screen is much better than the menu-driven start button of previous Windows and the live tiles enhance things in ways you would not expect.  Still need a start button?  Move your mouse to the lower left corner, then click start.  You can also press the "Windows" button to toggle the start screen.