D'Arcy from Winnipeg
Solution Architecture, Business & Entrepreneurship, Microsoft, and Adoption

Business Analysis – We’re Doing It Wrong

Do you know what a Business Analyst does? They analyze business practices. Doesn’t that seem simple? And yet organizations the world over, and even the IIBA it would seem, consider them a super role that encompasses a wide variety of skills and capabilities:

Requirements Gatherer: Instead of utilizing techniques like value stream mapping to identify areas of business process that could be optimized/corrected, BA’s tend to be assigned the task of Requirements Gatherer. They meet with users and hear what it is the users want a system to do, what data should be captured, and even how system screens should flow. This usually leads to BAs also being assigned the role of…

User Interface Designer: I have personally been on projects where BAs were expected to own the user interface design of a system/application, and it seems commonplace to assume BAs would fill this role on projects. Very rarely have I seen where a BA actually understands the capabilities and limitations of the underlying technology being used. My friend David Alpert would point out here that technology shouldn’t be needed to form a solution, yet in the majority of my experience this decision has already been made at some point. BAs are then left to generate user interfaces on technology platforms that they have no insight into – and nothing bad can come from that, right?

Test Writer: Wait, isn’t this a QA role? One may think that, but since the BA is gathering the requirements anyway doesn’t it make sense that they also write up the test cases for QA staff to run through?

There’s this idea that through the exercise of requirement gathering a BA will become an expert in the business, and that’s just not the case. Throwing a BA into a requirement gathering role is a systems level exercise because you’re capturing requirements of a system, not the details of how the business operates. There’s a huge gap here in identifying the proper roles needed on a project, and this is in part because not all organizations see the value in some of them. “We have a BA, isn’t that good enough?” No, you have a person that you’re assigning multiple responsibilities to when they may not be qualified for some of those roles. You may also not be getting the most out of a BA if you aren’t leveraging their core skills and abilities.

Part of the problem lies with legacy views from the Waterfall days. Big Design Up Front required people to gather requirements and fully design a system on paper before feeding it to developers (who were never included in those up front discussions). This type of application design *still* happens today, and even in shops that fly the Agile banner proudly!

So what should a Business Analyst do? They should analyze the business domain and key value streams an organization wants to improve upon. Technically agnostic, without any expectation of having systems-level knowledge. They don’t come up with domain models, they don’t do data models, they don’t even do screen shots. All they do is learn the business and identify opportunities to optimize/change/tweak to meet an organization’s goals.

At that point new roles are introduced to the flow:

Solution Architect
A technical person (but not a developer) who oversees all aspects of the realization of a solution.

UI/UX Designer
More and more I see how this is an important discipline. Note that this is *not* someone who knows Photoshop and is artistic. This is someone who is educated in the techniques of identifying how an end user structures their work and how to translate that into meaningful system user interfaces. This is an area I predict we’ll see huge growth in over the next few years.

System Analyst
A system analyst works with the Business Analyst to translate the needs of the business into a technical solution. All those requirement gathering exercises we talked about? This is where those happen – not at the Business Analyst level. The System Analyst should have a strong technical background and be able to make recommendations on how to best implement a technical solution. They work closely with the Solution Architect and the…

Technical Architect
Think of the TA as the leader of the software developers. This is someone who deeply understands the technical space and can speak authoritatively to the limitations and capabilities of the technical implementation.

Now, you may be thinking “Woah, there’s a LOT of people needed here. Are they all necessary?” Of course they are! For decades we’ve been assigning many of their responsibilities under one title: Business Analyst! How has that worked out for us? Have we gotten better systems? Are our end users happy? Are our developers excited to be part of a project that they had input to at the design stage, not just completing the potentially unrealistic requests of some requirement-gathering Business Analyst?

YES these roles are necessary, but they are useless unless all are stitched together with an attitude of collaboration and cooperation. No one group is more important than any other in the common goal of delivering the technical solution; all have their role to play.

The BABOK (Business Analyst Book of Knowledge) 3.0 is coming out soon, and includes the following definitions:

Design – A usable representation of a solution.

Requirement – A usable representation of a need.

“Usable” here scares me. Also they have two sections each titled “Requirements and Design Analysis” and “Requirements and Design Management”.

I fear that the current world view that Business Analysts are responsible for/own requirement gathering and solution design will continue and we’ll have the same issues as we do now on technical projects. Business Analysts are important and integral but we need to ensure we’re leveraging their skills and abilities in the right way in concert with other important roles.



Prairie Dev Con’s Evolution – Thoughts on Covering Speaker Expenses

Greg Young tweeted this recently…

image 

This started a really good Twitter discussion about whether conferences should cover travel expenses (airfare and hotel) for speakers, with some event organizers weighing in. Having run a successful conference for the last four years I wanted to share my thoughts and experiences around this (Twitter’s 140 character limit is very…well, limiting :) ).

Conferences are a collaborative effort between four groups: Organizers, Attendees, Speakers, and Sponsors. Each group has a certain expectation of each other in the context of the conference.

Attendees want engaging speakers who bring unique knowledge, skills, and experience; organizers who provide a great venue and amenities, and who respects the audience’s time and money being invested in attending the conference; and sponsors who are active participants and add an extra element of fun through on-site presence, swag, contests, etc.

Speakers want attendees who are positive, participatory and ready to learn; organizers who value the time and talents they lend to a conference; and sponsors active in conference events who may be affiliated with them (i.e. a speaker who is also a Pluralsight author).

Sponsors want excellent speakers who will help draw a large number of attendees; attendees who will engage with them at or through the conference; and organizers who look at sponsorship more as a partnership than simply a money-for-logo opportunities.

Organizers want attendees who appreciate the work and effort that goes into putting on a conference; speakers who’s professionalism and preparedness help form the culture and personality of the conference; and sponsors who recognize the importance of community events and want deeper engagement with attendees.

At my work we like to talk about a 3-legged stool analogy between customers, employees, and employer. The same analogy holds true with conferences, but with 4 legs instead of 3.

image

It’s this model that I’ve based Prairie Dev Con on, and one that continues to evolve as the conference does. For the last three years I’ve been fortunate to have speakers who invested in the conference through covering their own airfare expenses (I cover all hotel costs as well as a speaker’s dinner). Admittedly that was an imbalance that allowed me to work through my conference model and refine it; if not for those speakers over the first 7 iterations of Prairie Dev Con, it wouldn’t be the success it is today.

Going forward, and starting with the 8th Prairie Dev Con I just held last week, travel expenses for speakers (airfare and hotel) will be covered by the conference – as it should be. My model has matured and has been proven to be successful, and being able to provide speakers with the proper expense coverage is an important step to ensure Prairie Dev Con continues to offer top-tier talent to it’s attendees.

Now, I don’t want to call out any other conference because no two conferences are alike. Each has their own nuances, mission statements, cultures, and goals. But for conferences that charge a non-trivial amount for registration but don’t cover speaker travel expenses, I would challenge those organizers as to why.

The problem with having the legs of your stool at different lengths is that you’re constantly trying to balance. Ensuring that all our participant groups are having their needs met means that you have a solid base to grow from…and that small foot stool eventually becomes taller and taller as your conference grows and matures over time. That’s what I’ve seen with Prairie Dev Con, and ensuring speakers are taken care of is a huge part of that growth.



Orleans–Cloud Services at Scale

Putting this here as a growing data dump of links/resources around Project “Orleans”. What is Project Orleans?

Project “Orleans” provides a straightforward approach to building distributed high-scale computing applications, without the need to learn and apply complex concurrency or other scaling patterns. It was designed for use in the cloud, and has been used extensively in Microsoft Azure.

There’s a great story about how Orleans is used to back Halo and deliver stats and info in real time to gamers. You can read a great intro that explains what it is and how to get the bits for it here:

http://blogs.msdn.com/b/dotnet/archive/2014/04/02/available-now-preview-of-project-orleans-cloud-services-at-scale.aspx

There was also an in-depth session at Build this year focussing on the Halo implementation. No video as posted yet (10:45 PM CST on April 2), but I expect it to go up here at some point:

http://channel9.msdn.com/Events/Build/2014/3-641

Here’s a link to the CodePlex site for Project Orleans samples:

https://orleans.codeplex.com/

More links/info here as I find them.

D



Prairie Dev Con 2014 - Early Bird Pricing Extended

Prairie Dev Con 2014  - Early Bird Extension to March 21st!

Attending Prairie Dev Con is still one of the most affordable professional development experiences you can get as a software developer! 

Our Early Bird price of
$499.99 has been extended through Friday, March 21st! Remember groups of 3 or more still get an extra $50 off each registration!

Get all the information on how to register on our Registration page!

Incredible Lineup of Sessions!


We have an amazing lineup of sessions for Prairie Dev Con Winnipeg! Taking your feedback, we've focused the content on web, mobile, ALM, and development patterns & practices, with sessions on other topics as well! This is one of the strongest Prairie Dev Con session lineups I've ever seen, if not the strongest!

You can view all of our sessions on our website here!

Post Conference Workshops


We're offering three post conference workshops lead by leading experts in their field! The workshops are on Domain Driven Design (Donald Belcham) . Kanban & TFS ALM (Dylan Smith), and Angular JS (Matias Niemela)!

Check out our Workshops page for more details!

 

Thanks, and I hope to see you in April!

D'Arcy Lussier



Winnipeg Tech Community’s Loss – Thoughts on Dean Clarke’s Passing

It was one of the last two weeks in February when I spoke with Dean Clarke, president of Apptius. We both happened to be at the same client site and we talked about our respective work assignments, my upcoming conference in Winnipeg, and just general life stuff. On Friday Feb 28th I looked out the project team room and saw Dean talking to one of the client’s staff, friendly and smiling like he always seemed to be. I made a note to myself to follow up with an email on some items we had discussed.

On Saturday March 1st Dean passed away suddenly and unexpectedly.

There’s many lives that Dean has touched, foremost his family, friends, employees, and colleagues. Dean was also a huge reason for the Winnipeg tech community’s success over the years, something that many people may not realize due to Dean’s modesty; he always supported, always contributed, always asked how he could help, but never did it for his own personal celebrity or recognition.

If you enjoyed going to the .NET User Group in Winnipeg over the years you have Dean in part to thank. For years Apptius has been a financial sponsor of the user group because Dean recognized the importance of community. Some companies mull over community support – the cost, the benefits, whether it makes strategic sense. But not Dean. He was always willing to help because he saw it as the right thing to do.

If you enjoyed attending any of the many Winnipeg Code Camp events over the years, you also have Dean to thank. Whenever I’d talk to Dean about sponsoring the Code Camp the conversation never ended at how much money we needed for the event. It continued with “What else do you need?” Dean was the one who provided those “Code Camp Survival Kits” – plastic containers filled with snacks that were given to attendees for free. That, in addition to bottles of water, was all Dean’s idea and doing – he just wanted to do something nice for the community.

Dean wasn’t just someone who “provided stuff” for events, he was hands on. He offered to print out all the attendee nametags, plastic badgeholders and all. And when he arrived at the Code Camp, one of the first things he’d ask is “How can I help?” Here’s a picture of Dean manning the registration booth, something he did often at the Code Camps.

CodeCamp2009Dean

Dean was that rare example of true “leading by example”. A company President who never let his title define him; instead it was his actions and his interactions with people. I will miss Dean greatly not just as a leader in our technical community but as an amazing person who always had the betterment of others in mind. Dean was the embodiment of what the Winnipeg tech community is all about and he’ll be dearly missed.



It Was 2001, and I Had a Decision To Make

Rob Conery wrote a blog post today waxing philosophically about how his choice of technology in 2001 impacted his career. It’s an interesting read and one that I found mirrored my own journey through the 2000’s in many ways. There’s some things that Rob mentions that I don’t totally agree with but I’d rather have discussion than debate, so I’m going to offer my view of the .NET decade as I remember it.

It was almost 2001 and I had a decision to make.

Having realized that my teenage dream of being a McDonald’s manager was not conducive to a healthy or financially fulfilling life I began college in 2000. I was part of the second intake of the Information Systems Technology (IST) program at Red River College here in Winnipeg. We all learned Java, VB, OO analysis/design, and basic database theory. Then we had to pick a stream – Networking, Programming (C++, PowerBuilder), or E-Commerce; I picked E-Commerce.

Heading down the web path introduced me to basic HTML, CSS, and JavaScript. Classic ASP, and Java Applets followed. For my co-op term I worked on a VB 6 desktop application but still worked with Classic ASP at home and at work when I could. I embraced the web.

After graduation I got my first gig working for a guy who had the IT contract for a local construction company. He was hiring to staff a project to build an intranet web portal and it would be built using a new technology from Microsoft – ASP.NET. It was December of 2001.

Over the next year I fell in love with ASP.NET. It felt familiar due to my VB 6 course in college and co-op term. Drag and dropping the controls and the code-behind paradigm made “web” development incredibly easy compared to Classic ASP. We came up with some pretty crazy solutions on that project for things like almost-real-time chat/notifications, navigation, and (my big accomplishment) a system for filling out various forms in online web forms leveraging a rich text box for formatting and then passing it through an XSL-FO parser before finally rendering it as a PDF. In some ways we were building SharePoint before there was SharePoint…heady times!

Over the next few years I worked on a number of projects for a number of companies; some web based, some not, but ASP.NET stayed as a constant whether at work or relegated to home learning.

It was Microsoft’s World

Microsoft threw obscene amounts of money at the community in the early-to-mid 2000’s in a bid to drive developer adoption. .NET User Groups popped up everywhere, Code Camps and conferences sprouted up, and Microsoft’s own events were big deals. I got involved with our local user group, eventually leading it for a while and then branching out to run our code camp. I embraced this amazing Microsoft community that I was now a part of – through INETA (International .NET Association) I got to attend TechEd 2005 for free and its there that I met so many others who were active in the Microsoft community.

I became a Microsoft Most Valuable Professional (MVP) for ASP.NET, I spoke at numerous events on ASP.NET related topics, and continued building my personal network of friends/colleagues. Another TechEd, PDC, and numerous MVP Summits were added to my list of attended conferences.

Rob mentioned in his blog about how in his peer group the “MVP was everything”. For me getting into the program was a huge win both professionally and personally. More than the free MSDN license or swag or the summit, the friendships I’ve made and experiences I’ve had through the program are priceless.

And Then This Happened

Well, “This” happened early on in my MVP/Community days (2007ish). Microsoft hired some non-traditional devs to head up something in the ASP.NET group. Phil Haack, Scott Hanselman, Rob Conery all came on board and launched ASP.NET MVC which BLEW. ASP.NET. UP.

No really…as a developer on the outside of Microsoft, MVC was one of the biggest un-Microsoft things to come out of Redmond. Lead by Scott Gu, that team ushered in a new era of transparency and interaction that before had been unheard of from Microsoft (unless maybe you were into FoxPro). It also thrust ideas of unit testing, design patterns (and anti-patterns), and development best practices to the forefront as opposed to the “I did it without writing any code, wire up your code to your database in markup” marketecture we typically saw.

At first people were a little taken aback at first with the changes:

- What do you mean there’s no drag and drop?

- We code directly *in* the client-side markup? Isn’t this like Classic ASP?!

- Wait…so we don’t navigate to a page, but to a route?

So this is where I will call out something in Rob’s post. He said:

From 2002 up to 2008 or so the Microsoft web world was (and to a large degree still is) all about "Visual Component Development". What that means is you basically do a lot of drag and drop and let the components do the work for you (write HTML, hookup server code, CSS, etc).

Now I agree with that entire paragraph except “and to a large degree still is”. Yes, there are lots of Web Form code and projects that are still in production and still supported, but from what I’ve seen I would suggest that the ASP.NET developer community has shunned Web Forms in favour of MVC (just count how many Web Forms sessions get booked at any major conference). Not only did the advent of MVC change how developers saw ASP.NET, it changed how they saw web development and architecture. It caused developers to re-assess their prior notions of how web dev worked.

Rob mentioned how HMTL and CSS weren’t scary as they were to ASP.NET developers. This is an important point: ASP.NET Developers weren’t web developers, they were ASP.NET WebForm developers who happened to run their apps on the web. MVC forced ASP.NET devs to embrace HTML, JavaScript, and CSS – and those that did have been reaping the benefits ever since.

What If I Didn’t?

I’ve never questioned my choice of picking the E-Commerce stream in college. My friends that took the Programming stream ended up being colleagues and co-workers over the years anyway and they had to endure advanced PowerBuilder.

I’ve also never questioned my choice of Microsoft technologies. The 2000’s were a fantastic time to be a Microsoft developer, especially in ASP.NET. Even when I was still deep into Web Forms development, there was never a lack of projects or interesting work; MVC just made it that much more fun. The community I was fortunate enough to be a part of because of my involvement with Microsoft continues to be an incredibly valuable part of the 2000’s that I carry with me to this day.

But now its 2014 and those days of .NET glory are behind us. Microsoft has evolved, creating a new company with a new vision and new goals. It’s no longer about whether developers use .NET, its about whether they host their apps on Azure. The old lines drawn in the sand are gone, old enemies becoming strange bedfellows (example: Microsoft announced recently that Oracle products can be run on Azure). The flow of money to the developer community has slowed to a trickle and more focus is being put on virtual training opportunities. The consumer space with Windows 8 and Windows Phone are front and center, and the enterprise messaging is less about custom development and more about packaged solutions (read: SharePoint, Exchange, BizTalk, Lync), and hosted solutions on Microsoft’s cloud.

Yet web development has stayed consistent and is the most relevant today. WPF, Silverlight, and other desktop technologies have tried to supplant the browser and all have failed, with organizations favouring web-based clients that easily port between desktop, tablet, and mobile experiences. Microsoft’s messaging has shifted from winning the client with a proprietary technology to winning the middleware and backend services with cloud-based solutions, which given the speed of development in the JavaScript community makes perfect sense.

But for me, and for many other fantastic developers that I know, ASP.NET was the foundation that we all built ourselves on. For us putting years into ASP.NET didn’t stunt their growth learning CSS or JavaScript, it didn’t keep us from looking at design patterns or considering new/better ways to architect a web application, and it didn’t keep us from exploring competing technologies. Yes ASP.NET Web Forms had many faults, but its easier to see those now 13 years later and with so many other great technology options available.

Every journey begins with a single step, and I’m glad my first steps were within the Microsoft dev community and specifically with ASP.NET.

On the Other Hand…

Cold drinks, hot drinks, salads, sandwhiches, pizza, cookies, pies, fries, sundaes, cones. That was the McDonald’s order of assembly back in the 90’s. I still remember it – maybe I’d be head clown by now?



On Dreaming - So Don Belcham and I Walk Into a Bar…

So I’m at an Irish pub with Donald Belcham here in Winnipeg. It’s right on Portage Avenue, a few blocks from the MTS Center. It’s also amateur singer/songwriter night and there’s a stream of people ready to get on stage to perform. The mix is one part serious, another part live-karaoke…some hits and misses.

This guy gets on stage and while Don and I are talking he performs this awesome song – sort of Jack Johnson/John Mayer/Tragically Hip-ish.

At 9PM in the evening, Don tells me we should jet. First he decided to perform some poetry on stage first though, so I find the guy who sang and ask whether his music was available on a website or iTunes or something. He looked genuinely surprised that anyone would be interested. He said he thought it up on the drive up from Georgia (he had a Bulldogs sweater on). This launched into a whole discussion about my time in Atlanta this past September, going to the Falcons game, how the Thrashers moved to Winnipeg, etc. He thanked me for the kind words about his music, and then he left the bar.

And then I woke up.

Our subconscious is an amazing thing – this ability for us to create a truly virtual world for us to exist in while sleeping. People and places that we’ve never met or been to that are rendered in realism only our brain can construct; complex things that are truly a complex creation of our minds.

Like a song.

I can’t tell you what the song sounded like or the words, but there *was* a song. It had music and lyrics that made sense and was entirely concocted by my mind (assuredly taking cues from real-world experience to stitch it together, the same way visits to pubs allowed me to stitch together this imaginary bar on Portage Avenue).

Remember how I blogged about life lessons on risk? Many times we don’t risk because we limit what we can do. We, in our conscious world, live with the fears that our life experience has built within us. We relegate dreaming to our subconscious which is unhindered by those fears. In our dreams we can do anything.

But what if we could make our dreams part of our reality? Dreams can show us what we’re capable of. I’m not a musician, and yet I created a song. It’s when we realize that the only thing stopping us from achieving great things is our own implied fear – of failure, of rejection, of sucking, of difficulty – that we can move ourselves to do amazing things that we (sometimes literally) otherwise could only dream of.

We need to be a people of dreamers again. Imagine what we could accomplish…



MCSD Web App Certification Changes Already Coming

Larry Kaye blogged about some upcoming changes to the MCSD Web App cert. You can read the full blog post here, but in a nutshell:

Adding 70-483 Programming in C# as an option for the first exam towards MCSD Web (currently 70-480 Programming in HTML5 with JavaScript and CSS3 is the only one available)

70-486 Developing ASP.NET MVC 4 Web Apps and 70-487: Developing Windows Azure and Web Services will be updated to cover more recent technology releases, specifically MVC 5, Web API 2, EF 6, the Azure Portal, and VS.NET 2013. THe changes will occur in March 2014.

D



2013–Applied Life Lessons On Risk

I started 2013 with a blog post about a dream I had, one where nobody was willing to take action against some robbers at a diner. At the time I lamented how so many in the real world don’t take on more risks out of fear. At the time I was speaking from a very academic point of view – theory, but not practice. 2013 called me on that, challenging whether I really believed what I had written. I got roughed up after a hockey game trying to help defend some guys, I almost got left with a $5k bill from a guy I co-organized an event with, and we said goodbye to my father-in-law.

To Risk Doing What Is Right

My assault after the hockey game left me feeling weak, helpless, and pathetic. As a husband/father I should be able to defend my family yet I couldn’t even defend myself. I risked helping others and experienced what “no good deed goes unpunished” means. But after emotionally processing it, I realized that I’d jump in again in a heartbeat; so what do I do to change how that situation would have gone down? In this case I took up boxing and further committed to a healthier lifestyle. The lesson here is that when weaknesses are brought to light we can’t dwell and lament on them. Yes, we need to emotionally deal with having something personal exposed, but we pick ourselves up and strategize how to address it.

To Risk Trusting People

With the $5k bill story, I covered most of the legalistic do’s/don’ts on running a community event with a volunteer group in the original blog post. The risk here was in trusting people, and I got burned. What followed was a blanket application of “Fool me once shame on you, fool me twice shame on me” to everyone in my life. You know what’s harder than learning how to punch someone? Learning to believe that the majority of people out there are good and aren’t out to screw you. But for us to succeed in life we need people, and we can’t pull punches when it comes to placing trust in those we endeavour with. This is still a work in progress, in part because I’ve been burned in trusting others before, but the important part is there’s progress.

To Risk…Everything

In December my father in law Larrie passed away unexpectedly. The finality of death, the sudden removal of a loved one from your world, the sobering reality of what we all become once our heart stops beating, is absolutely and violently brutal. I’m bombarded with thoughts and questions on our human existence. Death’s sting is not a fear of pain but the loss of all the beauty we have in this life. Our death doesn’t stop the world from spinning, and we live on in the memories of our loved ones for as long as they live; eventually the ripple we make in life’s river fades until there’s no trace we made any ripple at all, another tombstone nobody visits.

I was in his apartment the other day as movers took the last of his items out. Once they left it was me and his empty apartment, those thoughts and questions filling my head and mixing with the raw emotion of losing a close family member. There was also a pile of books that the movers had found in his couch drawer. I picked one up, flipped through it and I found a card. On one side it said:

“Thank You for Sharing and Caring”

and on the other was this poem:

To Risk

To laugh
Is to risk appearing the fool

To weep
Is to risk appearing the sentimental

To reach out for another
Is to risk involvement

To explore feelings
Is to risk exposing our true self

To place your ideas, your dreams, before the crowd
Is to risk loss

To love
Is to risk not being loved in return

To live
Is to risk dying

To hope
Is to risk despair

To try at all
Is to risk failure

But to risk we must
Because the greatest hazard in life is to risk nothing

The man, the woman, who risks nothing or does nothing
Has nothing

Larrie’s was a tough life, the oldest of a large family where he was thrust into a parental role of his siblings early on. He worked hard, and played hard – a little too hard unfortunately which caused relationship issues. Looking back at his life though, I see how he risked so much of himself to try and make things right. He wasn’t always successful and was by no means perfect (none of us are), but his life ended as a loving father, an amazing grandfather, and until her death a few months prior a doting son to his aging mother. Larrie could have given up decades ago but didn’t. He saw the value in life, the value in others, and determined that risking something was better than accepting defeat and having nothing.

I want a life filled with experiences, memories, people, joy, and happiness. I also want it based on values and morals that place value in people and our shared experience of life. This last year has taught me that attaining that will require risk, pain, and hard lessons. And that’s ok, because sometimes its the things that we encounter in life that seem so negative at first which produce the thing we want most in the end. Happy 2014, I hope its a risky one for you.



ASP.NET Trends for 2014

I had a co-worker ask me about what areas of the Microsoft stack he should focus on for 2014, specifically around the development/services space. Here’s what I told him.

OWIN (Open Web Interface for .NET)

From the project’s GitHub FAQ:

OWIN, or the Open Web Interface for .NET, defines a common interface that decouples web applications from web servers.

OWIN defines the structure and requirements of HTTP request and response interactions. The assembly codifies the definitions in the spec to allow you to avoid using type aliases in all of your files.

The primary benefit is that by using OWIN, you decouple your application from a specific web or application server. This means you can run your application on broader number of platforms more easily. The Kayak web server, for example, runs well on *nix systems using Mono. The command line Katana.exe also allows developers using *nix systems to run .NET web applications without jumping into a VM.

OWIN is the cornerstone of a new era of “Middleware” (a buzzword you’ll be hearing throughout 2014). Microsoft already has a set of components for building/hosting OWIN-based web apps called Katana (check out the project page for Katana here).

Here’s a great article that gives an overview of Katana (and some background on why Katana is needed and where it fits in the ASP.NET ecosystem): http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana

Also here’s an article on how to get started with Katana: http://msdn.microsoft.com/en-us/magazine/dn451439.aspx

SignalR

SignalR is the go-to library for adding real-time-web features to your ASP.NET applications. As more applications move to a single-page model and/or leverage JavaScript libraries, real-time-web becomes more of a necessity and less of a nice-to-have. SignalR has become hugely popular and should be on every ASP.NET developer’s technology radar.

My buddy James Chambers put together a great list of resources around SignalR on his blog:

  • The source for SignalR basics – http://asp.net/signalr
  • Follow the SignalR tribe on the Twitter – @SignalR
  • Done your homework and still needing help? – http://jabbr.net (join the SignalR room)
    • ASP.NET Web API
      Simpler, lightweight, REST based services is where the web is going. Web API allows this to happen within ASP.NET MVC without the heavy lifting that WCF requires.
      Azure
    Azure is here to stay and Microsoft is going to continue making the cloud part of the development story here in the 2010’s. I don’t think traditional application/web hosting will go away immediately, but we will see an evolution of those business models. Azure definitely has the richest feature set of all cloud offerings from a development point of view and has huge horsepower in its development team headed up by VP Scott Guthrie.

D



ToysRUs.ca Bait and Switch – In Stock Might Not Mean In Stock

*Note: Scroll below to see updates to this blog post*

This morning I put in an order with ToysRUs.ca. I bought three items, all which were shown to be in stock. I qualified for the free shipping option.

image

I submitted my order and received the confirmation screen, where I was shown this:

image

This item was shown to be in stock when I ordered it, but after I processed the order it magically wasn’t?! And of course, because I fell below the minimum for free shipping I was now charged the shipping amount. I’d rather pay for product than shipping.

ToysRUs Canada, you need to fix this flaw in your system!

Update - Dec 11 2013

I tried to call on Monday to cancel the order. Both times I called I was quoted by the automatic system wait times of 25 and 35 minutes. That's right - 25 or 35 minutes to cancel an order because I couldn't cancel it online.

This morning I received a shipping confirmation via email. So for some reason I couldn't cancel my order online for 3 days?! Horrible! But wait, it gets worse...

They only shipped *one* of my items even though both were listed as being in stock. I had resigned myself to eating the shipping charge and just returning the items when I received them (note: I went to a ToysRUs furthest from where I live and they were fully stocked of all three items I wanted, so I just picked them up there), but I have a feeling I'm going to get hit with two shipping charges; not cool at all!

Watch for another update on this. I'm also hoping that the Toys R Us Canada Twitter account responds to my tweets, but it looks like there's a list of people they need to get back to.

Update - Dec 11 2013 11:17 AM

I came to work this morning to find my one item had been delivered this morning. Wait...so I get a shipping confirmation and a few hours later I get it delivered?! Shouldn't the shipping confirmation have been emailed WHEN IT SHIPPED?!?! Sigh...



How to Get Vine App for Windows Phone in Canada

[UPDATE] – It looks like the Vine app is generally available in the Canadian app store so you won’t need to go through the steps below. However, this method may be valid for other applications not available regionally through the app store.[/UPDATE]

I wanted to download the Vine app for Windows Phone, but I couldn’t find it in the app store when I browsed it on my Nokia.

I went to the app’s page on the app store where I saw this:

image

One of my Twitter peeps from Winnipeg, Len, commented that he was able to install it from the website. So I went back and noticed that there’s a “Download and Install Manually” link towards the bottom of the page, which will let you download the .XAP file directly.

So I emailed myself the link, opened it on my phone, and voila – Vine is now installed!

What’s the point of limiting apps by region if we can just manually download and install the file anyway? Weird.

D



Learn to Take a Punch, Learn to Counter, Keep Moving Forward

During a boxing workout a few months ago our trainer had us do something called “breadbaskets”. That’s where you hold your arms up and a partner punches you in your midsection – your breadbasket.

I put my arms up, and braced for impact. The trainer came over, saw I was a bit nervous, and coached me through.

I can see the fear in your eyes. Don’t be afraid to take the punch. Tighten your core, breathe through the hit. Don’t panic.

Over the summer we’d do counter drills as well. This is where a partner throws a punch, you defend but also throw one back – a counter punch. You never just sit back and take a beating, you deflect the blow and come back with one more powerful.

These lessons on fighting can apply to all aspects of our lives and any attempts at success that we have. I saw this image recently and agree with it 100%:

Success is never a straight forward line. It’s messy, its wrought with failures, its learning over time and applying those life lessons. It’s learning how to take punches and lose your fear, its seeing a punch coming and countering it, but most of all its not giving up and continually moving forward.

We do stairs at boxing, which is running up and down three flights of stairs. I’m not anywhere near incredible shape and after doing multiple stairs in a single workout you can feel gassed, tired, even discouraged after hitting the second floor and seeing everyone else running by you. But I keep going, even if I have to walk up those last few stairs to reach the top. I read a quote from Martin Luther King Jr. that I cling to throughout my day (and on stair days it definitely applies):

You want to be successful? Take the punches, but learn how to take them. Counter them. and no matter what, always move forward.



Publishing Websites From VS.NET 2013 to Azure

Scott Gu recently announced the release of the Azure SDK 2.2. This includes a tonne of new features for accessing Azure resources from within Visual Studio 2013. You can read Scott’s blog post here.

One feature is integrated Windows Azure sign in from within Visual Studio. I put a short video together showing how easy it is to publish a web application to Azure Websites. You can check it out here:

http://youtu.be/eiuhJbwhZsQ

(I couldn’t get it to display properly by embedding, definitely needs the wide-screen 720p view for best viewing)

And yes, you can access James Chambers Karaoke Fansite live on Azure!

Resources:

Azure SDK 2.2 https://www.windowsazure.com/en-us/develop/net/

VS.NET 2013 Express http://www.microsoft.com/visualstudio/eng/downloads#d-2013-express



Thoughts on Dexter Finale – Spoiler Warning In Effect

Tonight, at 11:00 PM central time, I found myself on a table in a kill room; one of the multitude of final victims of Dexter Morgan.

Oh, many will bemoan how the series ended. “It didn’t make sense!” “The writing was horrible!” “What a stupid way to go out”

We struggle to make sense of it all as we fight against the plastic keeping us attached to Dexter’s table.

But what should we have expected?

This final season wasn’t about Vogul or her killer son, it wasn’t about Hannah, it wasn’t about Deb…those were mere distractions to the underlying plot – the final conclusion to the question of what Dexter really was. Vogul, Deb, Hannah – all offered Dexter a gift: Humanity. Emotion, love, redemption – could Dexter live in a world that went against everything Harry had instilled in him?

We were all rooting for him. We wanted him to have a happy ending. We wanted it to end with Dexter, Hannah, and Harrison in South America, with Deb showing up to visit. Dexter would look down the beach and see Harry smiling approvingly, and we could go to bed happy knowing that they all lived happily ever after.

And we were fooled just like Rita, the police department, and for most of the series Deb. Because what we forget is that Dexter is a serial killer void of emotions and driven by a code taught to him by Harry. In this season he stepped outside that mold, tried out humanity, and realized that in the end it wasn’t for him. Even the scene where he ends Deb’s life – it wasn’t out of some emotional point of moral ground but out of duty to “protect his sister”. Dexter realized that what Hannah wanted and what Harrison needed he just couldn’t give.

Dexter is a serial killer and a psychopath. He’s not a good guy, even though we cheered him on as an antihero all these years. Dexter’s internal conflict was always between his surroundings and Harry’s code. Note that in this episode we didn’t see Harry once – because Dexter didn’t need him anymore. His conflict was resolved, he accepted who he was.

And so as the knife plunges in we look up asking why – why did it have to end the way it did? As a father, the biggest issue I had was understanding how he could just let his son go. What type of father would just abandon his son like that?! But I have a conscience, a moral compass, a love for my family. But Dexter…

The title of the episode was “Remember the Monsters?”. I think we forgot Dexter has been a monster all along.

Goodbye Dexter, its been a slice of life.