What To See At HIMSS AsiaPac15!

What To See At HIMSS AsiaPac15!

Healthcare IT is continuing to evolve; over the past several years we have seen a shift in healthcare away from several antiquated standards and technology to the adapting of new, lighter, and more usable technologies than ever before. Leading Healthcare IT is the Health Information Management Systems Society (HIMSS), a non-profit organization focused on “better health through information technology.” HIMSS AsiaPac15 is used to promote information technology in healthcare. You can find the full schedule for AsiaPac15 here: https://www.eiseverywhere.com/ehome/ap15/292940/

Here at Ascend, we are very pleased to see that after looking through the agenda, the focus of HIMSS AsiaPac 15 centers around healthcare mobility and healthcare data analytics and intelligence. Great stuff! So, what are we going to be looking for while we are there?

Solutions around Big Data and Healthcare Predictive Analytics

This is an ever-changing and ever-growing market. How can we collect our data, distill it, and organize it in such a way to make effective business decisions? How can we do this from both a payer side and a provider side?

Mobile Healthcare and emerging standards, including HL7’s “Fast Health Interoperability Resource (FHIR)”

FHIR is HL7’s newest standard for interoperability, from both a mobile and desktop perspective. We would love to look at an interoperability showcase and see the progress made towards facilitating secure and understandable healthcare communication across multiple platforms.

Patient Engagement through Mobile Technology

Whether it be a secure SMS message reminding a patient of their appointment time or the ability to track and map moods or diet-engaging patients in a fun and creative way is important to ensure quality of care.

Last but not least, a collaborative and fun environment!

HIMSS is a great place to meet new folks and network. While we are there, feel free to reach out to us! We will be wandering the halls and attending a variety of seminars. Come join us and learn how healthcare IT is being adapted in the Asian / Pacific countries.

See you there!

Co-Authored by Mike Brown & Ben Dickshinski

Designing Mobile Solutions for the Enterprise

Designing Mobile Solutions for the Enterprise

Probably nothing in this blog is news to anyone. In fact, I plan to get a little techie. At this point, nearly everyone is reading this blog post through their smartphone or tablet. It’s weird that only 5 years ago, the idea of an iPad, while not too farfetched (face it, we survived using our Palm Pilots) was still out of our mental reach. Mobile applications enable businesses to increase productivity and mobility (shock!).

Today, enterprises and even small businesses find it difficult to survive without a mobile application presence. This is pretty much general knowledge / information. So how can an enterprise / business build an application? What are the major strategies, pros and cons to each strategy for developing a mobile application?

Currently there exists three types of mobile development strategies, each with their strengths and weaknesses. A company / enterprise may have a mobile presence either through a mobile website / accessible through a mobile browser, a dedicated or native application, and finally a hybrid application. Choosing one of these strategies will largely depend upon the target audience (the users) and the desired application functionality. The sections below are a breakdown of each of these mobile development strategies, the tools for each, and when they are best used. As a business owner, you need to be assured your application reaches the most users and directly or indirectly benefits your business.

Mobile Website / Accessible through a Mobile Browser:

The mobile website or application is accessible through the mobile browser in the mobile device. Generally, developers utilize a combination of front-end languages: HTML 5, JavaScript, and Cascading Style Sheets (CSS) in developing these types of applications. They must live on a server somewhere (much like a website).

Pros:

  • Require less time to develop overall.
  • Can be accessed on any mobile device through the mobile browser. Independent of the platform.
  • Updates can be pushed live to the application without requiring users to download an update to the application.

Cons:

  • Do not allow for access to a lot of mobile features, including:
    • Multi-Touch
    • Graphics
    • Accelerometer (the component built into your smartphone / tablet measuring tilt and motion, shaking, etc.)
    • Camera
    • Contacts
    • Local storage
    • Navigation
  • WIFI / Internet connectivity required (your application is acting as a thin-client accessing the application through the browser)
  • Screen sizes (JQuery libraries would have to be correctly implemented / configured allowing the application to properly fill the screen.

When to use:

  • Shopping / ecommerce websites
  • Static text websites
  • News sites

Dedicated / Native Application:

Native applications are apps which are developed using a dedicated programming language for a mobile device. Applications are distributed / purchased through an “App store”. Generally, developers use application programming languages such as the Android SDK and Java libraries (for Android), and Objective-C / X-Code for iOS based systems.

Applications built using either Objective-C or Java will only work on the device OS they were originally developed for, so an application based in Java could not be run in an iOS environment. Luckily, developers foresaw this problem occurring for native applications, and developed Cross-Platform mobile development tools. We’ll explore these more in the Hybrid development approach. When developing a native application, you will have to figure out how it can be built-out and accessed across multiple mobile devices.

Pros:

  • Native applications can access all aspects / features and make the best use of the mobile device (remember all those things above that the Mobile site couldn’t access? Well the native app can!)
  • Best performance wise. Processing is done using the mobile device hardware.
  • Can be accessed without WIFI / internet connection

Cons:

  • Takes a LONGGG time to develop a native application.
  • Requires a great deal of development resources / experience when compared to other development strategies
  • Native applications may be required to go through an app store and subject to constraints / approvals.

When to Use:

  • Intense processing applications (i.e. Games / dashboards)

The Hybrid:

A hybrid application is an application which contains the look and feel of the native application, but utilizes HTML 5, JavaScript and CSS libraries. This front-end code is wrapped in a framework (such as Apache Cordova). This allows the application to access features / functionality native to the mobile device. Recently, frameworks such as Unity3D (for gaming), Appcelerator (www.appcelerator.com) allow users to code in a variety of languages in order to achieve a mobile application usable under multiple OS’s, this allows users to develop native applications faster. So, why build the hybrid application?

Pros:

  • Make the best use of everything from Native applications.
  • Generally less time to develop than a Native app

Cons:

  • Performance: often times these apps suffer from performance and a great deal of time in development is spent optimizing performance on the mobile devices.
  • Must go through extensive testing to ensure screen sizes and functionality is maintained across multiple devices.

When to Use:

  • Pretty much anytime a Native application can be built

Conclusion:

Mobile applications can be built in a variety of different ways to fit the needs of the users and the business. How does your organization value mobility? What kind of mobile solutions have you built in the past?

Sprinting to the Requirements

Sprinting to the Requirements

It has been a while since posting on this blog. Apologies to my readers, Ascend has been growing at a rapid pace thanks to our Agile project management and software development methodologies. As we continue to pick up steam, it is important for us to remind ourselves and others the importance of Agile project management. Also, please enjoy the Vince Vaughn business stock photos. I always found these to be hilarious.

Do Agile Projects Need Requirements Analysts?

Within Agile projects, project roles associated with a traditional Waterfall based Software Development Life Cycle (SDLC) are given at times new names, and new definitions. Many agile projects have team members wearing multiple hats at any one time, for instance a SCRUM Master, a common role within an Agile / SCRUM project, may also be the lead developer or architect.

The Requirements Analyst is the important in-between for the business owner / client and developer. They help facilitate, elicit, capture, translate, and communicate requirements between the business owner / client (who gives the requirements) and the developer (who incorporates or builds the requirements into a system). The Requirements Analyst, for all sense and purposes, is a necessary step in the development process. Often times, developers cannot be a requirements analyst, as they are more focused on building the system, not capturing the details of the system to be built. This is not always true, but often times, at least in my experience, a developer would rather troubleshoot his code for hours than spend time in a meeting trying to figure out what a business owner or client is conveying in regards to the system.

When are Requirements Captured?

One of the major differences found between Agile and traditional Waterfall methodologies is the use of iterative development to achieve a desired product for the customers. As a requirements analyst in an agile project, requirements are captured iteratively within a Sprint or iteration of the software. Unlike a traditional SDLC, the business owner / client does not need to know all the requirements upfront. Only the broad scope, or vision of the project is defined, with all requirements captured adhering or mapping to this vision.

As the project progresses, the team can see the software take shape. As the software takes shape, the client can provide feedback and experience the way the requirements were interpreted and implemented. From a requirements analyst perspective, they continue to capture the client’s or business owners’ needs (and may I emphasize needs, not wants), and ensure these points fit within the vision of the product.

How are Requirements Captured?

Prior to the beginning of a project, the Requirements Analyst must understand the stakeholders, both from a political and systems usage perspective. Requirements will need to be implemented, and many may be given by different stakeholders. Subsequently, if a Requirements Analyst does not understand the different kinds of users / stakeholders, the system will not be properly designed. Stakeholders must be defined in the vision.

Within each iteration, additional requirements are captured. Requirements are captured into User Stories. A user story represents a statement of a piece of functionality a user wants to see. It replaces the traditional “The System Shall…” statements. User Stories are captured from the users’ point of view, and speaks to the typical piece of functionality a user would like to see in the system. The template looks as follows:

As a <user> I want to <do something> so that <something happens / goal is satisfied, etc.>.

These User Stories are captured, stored and prioritized in the Product Backlog. User stories can be captured using traditional requirements gathering techniques, including interviews (single one-on-one and group), focus groups, and surveys.

What Modeling Techniques are Used?

One of the main points / principles of the Agile Manifesto is the delivery of “Working Software over comprehensive Documentation.” What does this mean? Well, according to the Agile Manifesto, it is better for us to develop software, which is working, rather than analyzing, re-analyzing, and continuing to develop out documentation, which may have little or no use to the project itself.

Several of the Agile prescribed modeling techniques include building out a usage model, UML models, and a user interface prototypes.

  • Usage Model: Exactly what it sounds like, it is a collection of user stories or use cases on how the system will be used. Often times these are documented in either documents, cards, and subsequently prioritized.
  • Unified Modeling Language (UML) Modeling: Many of the UML Models and diagrams go to painstaking detail to describe how a system shall function. Rather than spending time ensuring all these painstaking levels of detail, it is often better to use a Class Diagram, for object orientation and to describe an object’s methods & properties. The Use Case Diagram is another excellent UML diagram, showing how different users will interact with the system.
  • User Interface Prototypes: Getting the system to look correctly is arguably as important as getting the system to function properly. A UI Prototype / Diagram conveys to the client / business owner how the system will look when it functions. The UI Prototype also allows developers to visually see how the system may look. It is important to note that UI Prototypes should have an accompanying explanation to each of the elements, speaking to their functionality and purpose.

Conclusion

The requirements analyst is a necessary and important role within both traditional Waterfall SDLC project teams and Agile project teams. They are the liaison between the business owner / client and the developers, capturing, eliciting, and documenting requirements. The requirements analyst uses a variety of techniques to ensure the requirements are captured correctly, developed, and implemented per the business owner’s / client’s expectations. Whether working in an Agile or Waterfall SDLC environment, it is important to always note the Requirements Analyst represents the voice of the client, and is an important role which helps the system tasks / user stories “get to Done.”

MAGFest 2015 Indie Showcase: What do we want to see?

MAGFest 2015 Indie Showcase: What do we want to see?

We recently had the pleasure of registering to attend MAGFest 2015. For context, MAGFest is a 4-day event where video games from all generations, including independently (indie) developed video games are exhibited. There’s music, parties, and a great artistic outlet for many folks. If this sparks your interest, information can be found here: http://magfest.org/howtoattend.

So, after speaking with several folks who have attended MAGFest in the past and have been involved in the Video Game development community for a while, one of the highlights of MAGFest is the Indie Showcase. The Showcase provides Indie Game developers the ability to demonstrate their sweat, blood, and tears to the world. I’ve attended several Indie gaming events in the past, and these are by far some of the coolest folks I’ve ever met.

MAGFest

From a guest perspective, I can definitely think of several items I hopefully get to see when I visit in January. I know it’s a little far out, but man I cannot wait to see what they’ve accomplished!

  • Xbox One & PS4 Indie Development: Since Microsoft and Sony opened their doors to be more Indie friendly with their new platforms, several new titles and platforms have been developed. Now over one year later, it’ll be interesting to see how developers have leveraged the new graphical and gameplay capabilities built into the next gen.
  • Mobile Indies: One of the largest platforms for playing video games are already in our hands. The iPhone / Android platforms both have a large amount of mobile video game applications. Unity along with other gaming frameworks provides the ability for developers to develop and transfer their games onto mobile platforms. Without of course having to do all that awful objective-C programming!
  • Indie Panels: More indie panels and discussion boards. Fostering a community of indie developers and indie gamers is important for the future of video games. MAGFest already does a great job at this, and we’re hoping to see more panels / discussions / happy hours.

All in all, we thinks this is going to be a great show and would not miss it for the world! Looking forward to seeing you all in January. Bring a coat!

Logo Source: MAGFest
Project Agility and Managing Your Client

Project Agility and Managing Your Client

I’ve been in several IT projects where the client controlled, or attempted to control every aspect about the project. They are the client, and they deserve a say in the project, especially since they hold the purse strings. However, I’ve often seen times where the client dictates the vision when not really understanding the technology, openly argues with consultants / managers over failed delivery, and just plainly gives people a headache.

This relationship goes both ways, with the consultants often times exacerbating this relationship by providing unrealistic deadlines, limiting communication to monthly progress reports, or withholding information from their clients. This client – consultant relationship goes both ways, but it can be salvaged. How can you prevent your team and the client becoming antagonistic towards one another? Well, using an Agile Methodology in your projects is something that definitely helps. Here are some ideas around how to use Agile and some of its project management tools to establish or improve your relationship with your client (or suggestions you can give to your consultants).

Yeahhhhhhhh Open Communication

Many activities in Agile Project Management are meant to be open, with lots of communication involved! Opening up your Sprint / Release planning sessions to the client allows your client to see what your team is working on, the major milestones coming up, and the core team dynamics. With this level of open communication, the client sees the total picture of the development effort. Using tools like JIRA, Trello, TargetProcess, the client can see which tasks are assigned to specific resources, and how they are progressing along.

Check Points

Monthly reports are a little too few and far between, especially when you are in crunch time. Establish a weekly check point where you sit down with your client and speak to the core milestones. Discuss roadblocks and possible ways to get around them, highlighting the costs and risks of each approach. Include your client in your daily standups with your team, let the client see your progress on a daily basis.

Be Up Front, Communicate your Shortcomings

If you are going to be late, communicate this immediately and effectively to your client. Do not let the deadline come up unexpectedly. Internally, review your project schedule every week and see where you are in completing your milestones. Functionality which may not make it to this release may be negotiated to get to the next release.

Stop with the blame game

Teams need to stop looking inwardly asking the question “Who is to blame?” If functionality is not delivered on time, it is not one resource who is to blame, it is the team. It goes across the management level to the developers, analysts, and testers. Resolve issues internally before they go over to the client, and develop a team which is self-managed and accountable.

Conclusion

So what’s important? It’s communication to your client and having a relationship where surprises are communicated up front, and the team works together to achieve a common goal. Involve the client (and clients…you should know when you are too involved) in your standups, sprint calls, and release planning activities. Open communication, above and beyond that Monthly Status Report and the Mon

Video Game Engines: A look Back

Video Game Engines: A look Back

In 2004, three of the largest and hottest video game titles were released to the general public, all with similar, yet very different next generation engines. Game engines provide a framework for the graphics and overall abilities a video game may be able to handle. These engines in particular would go on to define an entire era of Video Game history, and spawn the next generation of video gaming graphics, abilities, and eventually leading to the large indie video game development community that exists today. The games I’m referring to are Doom 3 (id Tech 4 engine), Half Life 2 (Source Engine), and Far Cry (CryEngine 1).

The id Tech 4 engine was made famous for its implementation of “Unified Lighting and Shadowing” and “MegaTexture”, providing graphically rich environments and beautifully lit on screen objects and characters (particularly those blood splattered monsters). While this engine was re-used for several other id titles (particularly Wolfenstein), it would remain the weaker of the engines, lacking some of the abilities the other engines would later feature. I still thought Doom 3 was fun, smacking zombies with a flashlight always left me satisfied.

Good Stuff

Source Engine, which powered Half Life 2, Counter Strike (Source), Left 4 Dead, among others was one of the most popular and powerful engines of its time. Its main differentiator was not only the advanced texturing, but also the frighteningly realistic physics engine. The engine brought to life untold of horrors in Ravenholm, blew terrorists across the screen in Counter Strike, and of course blowing chunks out of zombies. I’m not sure how many times I wanted to pick up a can and drop it into the trash can at the beginning of HL2, but wow was that an amazing introduction!

CryEngine 1 was originally developed as a technology demo for the Nvidia video cards being released in the early 2000’s. Eventually, folks saw the potential and turned it into a full-fledged gaming engine. The CryEngine, responsible for Far Cry 1, promoted the High-Dynamic Range Rendering (HDR) functionality and per pixel shading, providing the ability to render complex computer graphics.

While everyone has their personal favorites, there’s no doubt the Source Engine made strong headway into the gaming world during this time, and went to define a generation of game play. Developing for many of these engines often required a lot of hardware and an experienced team. While many indie developers eventually received some access to these engines (now they are available to the public), they were normally reserved for modifying the existing video games already built on these engines.

It”s interesting in how just one generation, many developers have become more open with their technology, enabling the growth of indie video game development. Compare these engines to Unity3D. While Unity3D lacks some of the bells and whistles, the openness Unity3D emphasizes provides greater outreach to gamers and fostered the growth of the indie gaming community.

What are you looking for in the future? Improved lighting? Physics? Or the ability to quickly pick up an engine and use it to build the next best seller?