Posts tagged with: EffectiveUI

Head Above Water

Friday, April 4, 2014 6:31 PM

NOVCollageWow. I was just looking and realized it has been almost 5 months since I last posted here. I’ve been really heads down on a project for National Oilwell Varco that we just delivered last Friday for their initial beta testing. The app is pretty amazing. It is used to visualize oil well designs in 2D and 3D and is built in pure HTML5 and CSS3 using HTML5 canvas for all of the visualizations and drag-drop interactivity. The app was built with AngularJS, KineticJS, ThreeJS, marking my first extensive use of all three of these libraries and had a back-end based on ASP.NET Web API. It’s the first line-of-business app that I’ve seen that makes extensive use of HTML5 canvas and I will definitely have more to say about this in the near future.

As for now, I’m just glad to be able to come up for air and catch up on everything else for a while.

By: shane


Be the first to comment on this post

Mobile Web, Hybrid, or Native Mobile – How Do You Choose?

Thursday, April 5, 2012 2:19 PM


Since my article in MSDN Magazine, “Develop Hybrid Native and Mobile Web Apps,” came out, I’ve received a lot of questions on how to decide what kind of mobile application to build: mobile web, hybrid, or native mobile? This is a really thorny question and one that doesn’t have a well-defined answer. I’ve spent a lot of time over the past week discussing how to go about answering this question with some of the members of the sales team at EffectiveUI and I’d like to share some of my process in the hope that it will help others with these decisions and spark a conversation to continue to refine the decision-making process.

I’ve just had a new post published on the EffectiveUI blog about these thoughts and I’d love to hear what you think.

By: Shane


Be the first to comment on this post

One Year at EffectiveUI

Monday, March 12, 2012 10:59 AM


EffectiveUIIt’s hard to believe, but I’ve been a full-time employee for a full year at EffectiveUI as of March 7th.  It’s been a great home for me and I’ve never felt this engaged and excited to go to work every day before.This is the first time in my career where I feel like I’m surrounded by all-stars and it is such an energetic and passionate team that I can’t help but be excited as well.  I’ve worked on some amazing projects and had the opportunity to learn a lot of new things. Since coming here, I’ve:

  • Learned HTML5 and CSS3
  • Become far more advanced in my understanding and use of JavaScript
  • Learned and become an expert in ASP.NET MVC
  • Worked on projects in diverse industries such as telecommunications, national intelligence, municipal asset management, education, and banking
  • Been published in MSDN Magazine

I really appreciate the opportunity I’ve been given to grow here at EffectiveUI and I look forward to continuing to grow and learn in the years to come.

By: Shane


  • Chad Bakeman 3/15/20126:17 PM Hey Shane - just wanted to say that I'm really glad to have you on my .NET team at EffectiveUI. Here's to more great years working together!

MSDN Magazine: Develop Hybrid Native and Mobile Web Apps

Friday, March 2, 2012 10:04 AM

MSDN Magazine: Develop Hybrid Native and Mobile Web AppsMy article on building hybrid native and mobile web applications has been published in the March issue of MSDN Magazine.

Mobile applications are all the rage these days. There are currently three major mobile platforms: Apple’s iOS  (iPhone and iPad), Google’s Android , and Microsoft’s Windows Phone , and countless variations within these platforms for the developer to consider. Focusing on any one of these platforms leaves 50% or more of the market unable to use your application, but the cost of building and maintaining the same application on each of the platforms quickly becomes problematic. A web application is another option, but one that leaves the experience diluted and leaves the developer without access to many of the native hardware capabilities. 

In one of my recent projects at EffectiveUI, I spent a lot of time thinking about how to solve this conundrum in a way that provides the best possible user experience while still being cost effective and maintainable. My solution was an application that is a hybrid of a native application and a mobile web application. I had the opportunity to share this solution, and provide a tutorial for building it, in an article for MSDN Magazine , “Develop Hybrid Native and Mobile Web Apps .” I truly believe that this approach is a “best of both worlds” solution that leaves the developer and end user in a better place.

I hope that my approach to this problem helps you in building your applications and I’d love to hear any feedback that anyone might have.

The main text of this post is also cross-posted on the EffectiveUI blog.

By: Shane


  • Ruurd Eijzinga 3/15/20123:48 AM Great article, is there a version for vs2010 ?
  • Shane Church 3/15/20127:48 AM @Ruurd: All of the ASP.NET MVC and Windows Phone 7 code samples in the article are for Visual Studio 2010. The Android project requires Eclipse and the Android SDK and the iOS code requires Apple OS X and XCode.
  • Ruurd 3/15/20128:20 AM sorry, but I get these errors EffectiveUI.MSDN.Web.csproj' cannot be opened. The project type is not supported by this installation. EffectiveUI.MSDN.Phone.csproj' cannot be opened. The project type is not supported by this installation. I am running vs2010 sp1
  • Shane Church 3/15/20128:48 AM You will need the ASP.NET MVC 3 components for the Web project from You will also need the Windows Phone 7.1 SDK for the Phone project from
  • Kushil Abeyguna 3/25/20123:51 PM Good article. I think many people already have been developing hybrid (HTML5/JavaScript running in a native wrapper) mobile application using open source frameworks such as PhoneGap (which supports six mobile platforms). But I never thought of developing these native shells by myself. This is a good eye opener for most people like me as they would have never thought that their favorite frameworks do a "similar" thing to the above in their native wrappers. Good work indeed. I do not have to stick to a bridging framework like PhoneGap anymore.
  • Shane Church 3/27/20129:18 AM Kushil, (cross-posted from Comparing this solution to one like PhoneGap (now Apache Cordova) is a matter of degree. To me, the big difference in the solutions is that Cordova is designed to allow a HTML/JavaScript developer to build a device native application. For that to happen, some of the HTML and JavaScript have to be deployed to the device itself and there remains a dependency on the Cordova JavaScript APIs for native hardware access. On the other hand, the solution I present in the article takes a cross-platform mobile web application and provides it with access to native functionality as needed. The hybrid technique that I describe in the article provides a much finer level of control over the user experience when compared to Cordova and also has the advantage of being accessible on devices that do not have the native application installed. As I stated in the article, none of these approaches are inherently better than the others and you really need to make sure that you keep the business and end user goals in the forefront when choosing a technology stack for a mobile application.
  • ALex 3/29/20121:25 AM Hi Shane, this seems like a very useful approach! Thank you. Having to write just 1 Web Application and still have access to the ressources of the device can save a lot of time. But I am wondering if this approach could also enable the webapplication to be accessible offline? What do you think?
  • Shane Church 3/29/20123:49 PM Alex, Depending on how you architect the site, you could likely make large portions of the site available offline using the HTML5 ApplicationCache interface ( It really depends on how dynamic the data in the site is as to how much you could make available offline. I think it would be extremely challenging to make the entire content of anything other than a completely static site available offline. More likely, you could use the HTML5 ApplicationCache interface to speed loading of portions of your app by caching images and CSS files on the user device. I hope this helps!
  • ALex 3/30/20125:58 AM Thank you very much. I think the approach you are using and the new things that are coming like SPA on mvc 4 ( will be very powerful!
  • Mark L 4/16/20129:35 PM Hi Shane, I've just downloaded the sample code from your article, but the Android code doesn't compile as it appears to be missing a referenced library. I get this error: Project 'EffectiveUI.MSDN' is missing required library: 'C:\Users\Shane.Church\Documents\Cartegraph\httpmime-4.1.2.jar' Any chance of posting an updated sample code package that includes this library? Or am I being a numb nuts and it's already there? "
  • Shane Church 4/17/20121:28 PM Mark, The httpmime-4.1.2.jar is part of the Apache HttpComponents project at You can download the HttpClient 4.1.3 (GA) release binaries which include httpmime-4.1.3.jar and update the reference in Eclipse.

What does Industry Knowledge mean?

Friday, February 10, 2012 2:59 PM

MeetingThis week for our all-staff meeting at EffectiveUI, our CEO gave a presentation on what we’ve learned from the customer experience research that we have been doing in order to continue to improve the experiences that our customers have with us and to strengthen those relationships.   She used a word cloud of terms that our customers had used to illustrate both what we, as a company, are doing well, and what areas our customers perceive a need for improvement in.  One of the phrases in the areas for improvement that stuck out to me was “industry knowledge.”  She explained that our customers were looking for us to show more knowledge of their particular industry so that we could help guide them more effectively.  This got me thinking more on what “industry knowledge” means for a software developer.

One of this things that I’ve said at numerous interviews in the past is how I think that Computer Science is a great generalist’s degree.  Having a degree in Computer Science is like having a degree in problem solving.  I can say with 100% certainty that I’ve never solved a computer problem for the sake of solving a computer problem.  Any problem that I’m addressing is directly related to the needs of the business and the computer is simply a tool to accomplish that goal.  I have to be able to understand the business problem in order to be successful.

In my career, I’ve developed software for the nuclear environmental cleanup, laboratory operations, time and attendance tracking, financial services, mine safety, telecommunications, real estate, and municipal management industries.  All of those different industries span a career of just 14 years (counting my internship during college).  In each project, I find myself needing to rapidly learn the business of my client in order to develop software that actually works for them. 

Going into each of these projects, I usually know almost nothing about the industry or the business model.  For example, I was asked in my interview at the Mine Safety and Health Information if I had a mobile device, continuous miner, and conveyer belt in a mine, what could the mobile device tell me about the continuous miner and conveyor belt.  Having never had any contact with any mining equipment, I had a hard time coming up with a very detailed answer, but I asked a lot of questions to try to figure out what might be useful.  If I can’t understand the conversation, I have no hope of understanding the problem well enough to build a solution.  I have to be conversant in my client’s language in order for me to understand them and for them to trust my ability to deliver the solution that they need. 

With all of that being said, I will never be the subject matter expert that my client is.  I will always have to rely on them to some degree to be able to tell me if I’m pointing in the right direction.  So how do I gain the industry knowledge that customers are asking for and demonstrate to them that I truly care about them and their business? 

First, I listen and I ask a lot of questions.  I have learned to be assertive about asking questions about terms, acronyms, and interactions that I don’t understand. I’m not shy about interrupting a customer if need be to ask them to explain a term or a concept that I don’t understand or I am not familiar with.  I paraphrase the answers to make sure that I truly understood what they were trying to communicate.  Through these questions I learn more about the company, the industry, and the business problems.

Second, I draw pictures.  Diagrams are a software engineer’s best friend when it comes to understanding complex systems and business models and the relationships between them.  Drawing a diagram of the problem space really helps me see the bigger picture.

Third, I read a lot.  I read on a broad range of topics, both work related and not, to be able to understand a wide range of problems and ideas.  Having this breadth of knowledge helps me see parallels between the customer’s current problem and others that might be related.  I can say that I’ve solved a similar problem before or that I’m familiar with a similar concept, easing the customer’s concerns about lack of knowledge in their particular space.

Finally, I liberally search online.  There is definitely a skill to locating the right information online and building a search to find it.  It’s taken a lot of practice in critical thinking and information analysis to be able to separate the really useful information from the sheer volume of other noise online.  The best result is usually not the first one.

This ongoing learning process about new problems and industries is one of my favorite things about being a software engineer.  I consider myself very fortunate to be in a position where I get the opportunity to be constantly learning new things and taking on new projects.  It’s important to me that my customers feel that I understand their business, their problems, and value them as a customer and learning their business is critical to accomplishing this.

By: Shane


Be the first to comment on this post

MSDN Magazine

Monday, December 5, 2011 2:42 PM

MSDNMagazineSmallLogoA few weeks ago, I submitted an abstract of an article on the Cartegraph mobile prototype that I worked on for EffectiveUI to MSDN Magazine.  The concept is about addressing the costs of building a mobile application for all of the rapidly proliferating mobile platforms (iPhone, iPad, Android, Windows Phone) by building the application primarily as a web application using ASP.NET MVC 3 and jQuery Mobile while still being able to leverage native hardware features like the camera, GPS, or accelerometer.  A few minutes ago I got a phone call from Dr. James McCaffrey of Microsoft Research and author of MSDN Magazine’s monthly Test Run column.  The magazine editors liked the abstract, had asked him to review my submission from a technical perspective and he had a few clarifying questions that he wanted to ask.  He really liked the idea and is recommending to them that they move forward with the idea toward publication.  He commented that the abstract was really well written and also offered some advice about how to catch the readers with the concept in the first few sentences of the article.  Hopefully, with any luck, I’ll have a byline in MSDN Magazine here in a few months.

By: Shane


  • Ryan Comingdeer 2/29/20124:21 PM I read your article today in the March MSDN issue. I love the concept of MVC 3 powering mobile apps. Today I do most of my web apps in MVC 3 and I do a ton of Mobile apps using Phonegap and JQuery Mobile. However, one very important note that you didn't mention in your article was that if you develop the app the way you suggested, Apple will NOT approve the app to the public iTunes store. You would be fine on Windows and Android but the Apple team does not allow an app to be just a browser pointing to a website. We have had this issue a number of times with PhoneGap even if the files reside in the app. For some reason, Apple wants to make sure the app is utilizing some portion of Native code before it gets approved. Very sad, but very true. Have you been able to work around this issue?
  • Shane Church 3/2/201210:00 AM Ryan, With this proof of concept application, we didn't go as far as publishing to the app store. A modification that could be made to make it pass Apple's scrutiny would be to make the login page native on the Apple platform.

Agile Development Best Practices

Friday, November 11, 2011 1:36 PM

CartegraphLogoI spent Monday through Thursday in Dubuque visiting the Cartegraph offices again.  We were out there again to talk through common agile software development process mistakes, discussing the mistakes that they were making and how to improve their process. 

Some of the high level points we were highlighting were:

  • It’s about getting real software in the hands of users as soon as possible
  • Avoid “water-scrum-fall”
  • Start by building what you know
  • Allow for feedback & course correction
  • Don’t lose sight of the big picture
  • Don’t do product owner by committee
  • Estimate using relative story points
  • Don’t confuse tasks with stories
  • Don’t spend too much time on architecture
  • User experience (UX) matter and needs to be an integral part of each sprint
  • Agile/scrum is not an obligation

I really think the first and last points are probably the most important for most development organizations.  I realize that agile and/or scrum is the big buzzword for development methodology at this point, but the reality is that agile isn’t a fit for every organization.  There are a number of cultural issues that can make agile development unsuccessful in a given organization and it is important to have the self-awareness within the organization to recognize and correct those shortcomings or choose a different methodology that suits the organization better.

By: Shane


Be the first to comment on this post

Fight the Famine

Tuesday, October 18, 2011 12:55 PM

Fight the Famine by 15 Million Elephants is a new project by EffectiveUI that is part of the 50/50 Project to launch 50 projects in 50 days to raise £ 1 million for famine relief in East Africa.  The idea behind the project is to enable people to raise awareness and donations through their email signatures.  It’s pretty humbling to think that there are more people suffering from homelessness and famine in the countries of Ethiopia, Djibouti, Somalia, and Kenya than the population of New York or Los Angeles.  Read more about the EffectiveUI effort at and get the emblem for your email, web site, or social networking profile.

By: Shane


Be the first to comment on this post


Friday, October 14, 2011 9:56 AM

CartegraphLogoI spent this past Monday through Thursday in Dubuque teaching HTML, CSS, JavaScript, and jQuery to our clients at Cartegraph.  It was a good trip and the class went really well.  I think they learned a lot and it was a really good group to work with.  I did a combination of lecture style training and interactive workshops where I gave the class a series of tasks for them to complete.  The slides I presented are shared below:

By: Shane


Be the first to comment on this post

Updated (Finally!)

Monday, October 3, 2011 2:12 PM

Our familyI’m finally updating my site here and I can’t believe it’s really been more than 2 years since I did anything.  And what a crazy 2 years it’s been!  Just a sampling of what’s happened in the last 2 years:

  • July 2009
    • Hailstorm hits our house and causes nearly $24,000 in damage.
  • September 2009
    • My friend Nick and I are in a bike crash together.  I broke both bones in my right forearm and chipped a front tooth.  I ended up with 2 steel plates and 14 screws in my arm and spent 3 days in the hospital.
    • Found out Andrea was pregnant!
  • June 2010
    • Our first son, Ethan Russell Love-Church is born on June 28th.  He has meconium aspiration and has to be transported to Children’s Hospital in Aurora where they put him on a heart/lung bypass machine for 5 days.  He ends up spending 23 days in the NICU before being released to come home.
  • July 2010
    • One week after Ethan is born, while in the hospital with him, I am laid off by CNSI.
    • Grandpa Ideker passes away on July 29th, just one week after Ethan is released from Children’s Hospital.
  • September 2010
    • I get a job working at EffectiveUI.  I have never had this much fun going to work every day or been this challenged on a regular basis.  It is a great environment for me.
  • August 2011
    • Yet another bike accident.  This time I was hit by a car.  Fortunately I’m ok, but the bike was totaled.  I ended up getting a new 2012 Trek Madone 4.5 to replace the 2008 Trek Madone 4.5.  It’s a great bike, but I’m still sad that all I have left of my 30th birthday present from Andrea is the pedals and the water bottle holder.

Those of you that know me well will also know that this isn’t a full accounting of everything that’s been going on, but this is the list for public consumption.  Hopefully I’ll be able to post more regular updates here in the near future.

By: shane


Be the first to comment on this post