Monday, August 18, 2014

Using "tel" as a URI scheme in web pages

With the explosive growth in website traffic originating from mobile devices, we are now using the "tel" URI scheme for hyperlinks of telephone numbers within our customers' HTML website pages. The use of the "tel" scheme for URI's indicates that an action should be taken congruent with the uses described in IETF RFC 3966. These map, in most cases, to the host operating system handing the event and actions off to the program responsible for initiating telephone calls on the device. Simply stated, this allows users of the webpage to click on the telephone number displayed on a webpage and helps their device dial the number more accurately.

While many devices detect and turn phone numbers into active links, using the scheme will greatly increase the accuracy of those user actions.
To do this successfully, simply use the following scheme within hyperlinks for phone numbers:


<a href="tel:+16048938347">(604) 893 8347</a>

When embedded in a webpage, the links look and behave as such:

Call us at (604) 893 8347.

The use of the plus sign and the country/area code helps the mobile application understand the context for the telephone request and dial from that context.  This helps calls be completed in most cases.

The RFC is available at http://www.ietf.org/rfc/rfc3966.txt.  It is worthwhile understanding more about the finer aspects of the syntax such as characters allowed and not recommended within the scheme.


Characters other than those in the "reserved" and "unsafe" sets (see RFC 2396 [RFC2396]) are equivalent to their "% HEX HEX" percent encoding.
The "tel" URI has the following syntax:

   telephone-uri        = "tel:" telephone-subscriber
   telephone-subscriber = global-number / local-number
   global-number        = global-number-digits *par
   local-number         = local-number-digits *par context *par
   par                  = parameter / extension / isdn-subaddress
   isdn-subaddress      = ";isub=" 1*uric
   extension            = ";ext=" 1*phonedigit
   context              = ";phone-context=" descriptor
   descriptor           = domainname / global-number-digits
   global-number-digits = "+" *phonedigit DIGIT *phonedigit
   local-number-digits  =
      *phonedigit-hex (HEXDIG / "*" / "#")*phonedigit-hex
   domainname           = *( domainlabel "." ) toplabel [ "." ]
   domainlabel          = alphanum
                          / alphanum *( alphanum / "-" ) alphanum
   toplabel             = ALPHA / ALPHA *( alphanum / "-" ) alphanum
   parameter            = ";" pname ["=" pvalue ]
   pname                = 1*( alphanum / "-" )
   pvalue               = 1*paramchar
   paramchar            = param-unreserved / unreserved / pct-encoded
   unreserved           = alphanum / mark
   mark                 = "-" / "_" / "." / "!" / "~" / "*" /
                          "'" / "(" / ")"
   pct-encoded          = "%" HEXDIG HEXDIG
   param-unreserved     = "[" / "]" / "/" / ":" / "&" / "+" / "$"
   phonedigit           = DIGIT / [ visual-separator ]
   phonedigit-hex       = HEXDIG / "*" / "#" / [ visual-separator ]
   visual-separator     = "-" / "." / "(" / ")"
   alphanum             = ALPHA / DIGIT
   reserved             = ";" / "/" / "?" / ":" / "@" / "&" /
                          "=" / "+" / "$" / ","
   uric                 = reserved / unreserved / pct-encoded

Each parameter name ("pname"), the ISDN subaddress, the 'extension', and the 'context' MUST NOT appear more than once.  The 'isdn-subaddress' or 'extension' MUST appear first, if present, followed by the 'context' parameter, if present, followed by any other parameters in lexicographical order.

Wednesday, August 06, 2014

New Neo4J Training - Vancouver, BC

I will be conducting another Neo Technologies sponsored, one day training class on August 29th, 2014 for the Vancouver graph database user group (join us here).  The class is designed to maximize the learning over the 8 hour course and teach students what graph databases are, how they differ from RDBMS systems, the data model (or lack thereof), Cypher - the query language and how to build and use graph databases (the bulk of the class).

About Neo4J

Neo4J is the world's leading graph database, meaning it is used by more customers than any other graph database.  It offers several advantages over fixed schema databases, especially for startups given the immaturity of their data models.  Neo4J does not require a schema like Relational DataBase Management Systems (RDBMS).  Instead, Graph databases save data as "Nodes" that are connected with "Relationships".  Nodes and relationships both have "properties" which si how humans think about concepts in the real word.  Nodes may be arbitrarily added or removed without re-writing an entire database schema, a true savings of costs and effort.

The Neo4J implementation of a graph database has become the industry standard.  Cypher itself, a language similar to the Structured Query Language (SQL) has become a sort of Pseudo standard within the space.  The course will cover the basics of Cypher and some advanced topics like sorting and filtering return values.

There are still seats available as of the time of this article.  if you will be in Vancouver at the end of August, please come out and learn some Neo4J.  The cost covers the logistics so the course is basically almost free.

Sin up here -> http://vancouver.eventful.com/events/intro-neo4j-vancouver-/E0-001-073046613-1













Tuesday, August 05, 2014

Senior vs. Junior Programmer (Developer) Definition

We have been asked many times to define the differences between Senior and Junior programmers. While there is no exact answer, this blog post attempts to clarify what we look for when hiring developers at different levels.

The labels “Senior” and “Junior” are difficult to comprehend as they can sometimes be bestowed on the same developer depending upon the context of assessment. A developer may be considered “senior” with respect to the .NET development platform while at the same time be considered “junior” at HTML5 and some of the more recent related technologies. Experience clearly plays an important role in working with multiple technologies as well. Developers who may intrinsically understand the internal nuances of a complex platform like J2EE may be lacking the full practical experience that only comes from using multiple versions of the language and migrating from one to another. In some cases, a developer who is knowledgeable about topics in great depth may actually lack the full breadth of experience. This latter experience augments the deep knowledge of more specific facets since the entire evolution of one part of that language may be a reaction to a shortfall or persistent problem a previous version had. Such context-specific assessments require those who assess developers to remain somewhat flexible in their own judgments concerning experience vs theoretical knowledge. Both help a developer get the whole picture of each language or platform.

Of course, the differences could be explained with a bit of humor. The following diagram helps non-developers understand the differences in mind-sets between the two groups.



To begin to place some formal constraints around the differences, the descriptions can be summarized as follows:

Junior developers are still acquiring many of the skills their senior counterparts possess. The reality is that the senior programmers only achieve the extra skills through experience and perseverance. Many of the skills cannot be taught in a classroom as real life experience is required to guide the developers knowledge bases. Junior programmers are often given tasks to do, but are seldom handed projects. A task takes no longer than a couple of weeks overall and often is not delivered as a customer-ready deliverable. The junior programmers often do not gather requirements and in many cases are not provided the details of “why” they are doing a certain task. They typically do not talk to customers or if they do, the interactions are often very limited. A junior programmer will not feel comfortable training other developers nor will they lead teams. They often need reviews from senior developers. On version control systems, an administrator will not provide the credentials or bestow the rights to “destroy” code or projects and are not permitted to over-write the work of others. They typically dream of working on bigger projects and are well situated to handling smaller tasks but cannot provide customer-ready solutions to business problems.

By contrast, a senior developer is given projects to do as opposed to tasks. Some projects can last up to 6 months and require the senior developer to gather requirements. They often will be part of the team that talks to customers directly and will develop “solutions” to those problems and explain their ideas to the customer. Senior programmers tutor juniors and provide paths for juniors to keep acquiring new knowledge. A senior developer will usually have “destroy” rights on version control systems and uses them to help others learn the errors of their ways. The senior developer dreams of designing, not coding but hacks all the time.

The following chart outlines some other fundamental differences we typically use to delineate a senior programmer from their junior counterparts.


Task
Junior
Senior
Codes up a given library
Yes, task does not require knowledge of entire application.  When given the task, the API will be constrained and specified.  All work will be to ensure the library works as intended.
Yes but can also engineer the library. This means defining the API and parameter list, understand what classes or libraries may call it and how it has to be architected (static classes?  Prototypes with concrete classes inheriting?  Method signatures?)
Understands the method signatures
No – is only proved with the specification and the API signature.
Yes, additionally, the senior developer can architect the class to accept multiple parameters and figures out the correct order, data types and tests.
UML
Junior Developers are not required to interpret UML of an entire system
Senior developer must understand the system architecture.  In addition to the class function, needs to understand the class relationships and methods. Typically uses class new diagrams, sequence diagrams and use case diagrams as well as other similar artifacts.
Class methods
Juniors usually scope everything to private.
Can determine how to mutate the access modifier to public, private, protected etc. based on class use and function. Understands the rationale behind the decisions.
Knows when to develop simple API’s vs complete web services
No
Yes

Data types
Does not understand which data type to use if not told.  Does not differentiate big endian vs. little endian types.
Can study a system and determine which data types are optimal for each API call.
Multi-thread experience
Basic – understands the concepts.
Advanced – uses keywords like “volatile” to denote variable uses when multiple threads may be trying to mutate values concurrently and knows how to mitigate these scenarios.
Multi-thread experience
Does not understand thread controllers
Uses thread controllers to ensure optimal operations for all class instances. Can take advantage of multi-core processors.
Abstract vs Concrete
Basic knowledge, often tries to implement abstract classes resulting in errors.
Understands when to prescribe abstract classes as prototypes and how to create concrete classes that may be instantiated based on the abstract classes.
Naming conventions
Basic
Ensures consistent naming conventions are used throughout a project.  Will flag the project if it is apparent that no one else has specified this vs the Jr. Developer who will not see the need.
Unit Testing
Has some UT skills.  Occasionally writes test is not too busy.
Uses Test-driven development and is a strict user of unit testing to ensure code can survive a code audit.
Frameworks
Has experience on one or two
Can decide which framework/version to use based on functional requirements.  Knows how each one performs, where strengths/weaknesses are in each framework
Localization
No – often hard codes values and binds them to buttons, frames etc
Yes – knows that any long lasting system requires localization and knows it is easier to do it once at the beginning of the project than trying to reverse engineer it in later.
Architecture
Can understand some drawing/specifications but needs to have a source of knowledge to ask questions
Reads UML like their native spoken language.  Comfortable interpreting UML into code.
Architecture process
Codes first to get a head start. Can only be given tasks and not projects
Does architecture first properly to ensure the system will work as required.  Can be given entire projects and will write any missing architecture docs to ensure others have documentation.
Documentation
Does not write
Knows it must be written and ensures it is done along the way.
Durability
Writes code.
Writes code to be maintainable over time.
Problems
Brings problems to Sr. programmers
Finds solutions to problems
Estimates
Guesses.  Cannot envision all code in their head without writing some so cannot be accurate in estimates.  When given, estimates are often provided in < 1 hour
Can estimate a complete project, Designs complete code in mind before starting to code in order to provide a realistic estimate.  Estimates take at least one week and asks many questions to ensure complete understanding of requirements.
Motivation
Needs to be motivated
Knows how to motivate other coders to complete the project and produce quality code.
Vision
Only sees what is in front of eyes
Can foresee problems others do not yet see and knows the best ways to eliminate them.  This work is often unrewarded as the product owner often thinks the problem never was, does not appreciate the Sr. Coders work in avoiding it all together.
Coding
Thinks users will only use the software as intended.  Writes code, discovers problems, fixes code, repeats multiple times.
Knows users will abuse the software and use it for other things.  Ensures components will gracefully fail without bringing down the entire system. Eliminates points of failure.
Knowledge
Asks “what is the difference between junior and senior developers?”, assumes they are senior and forges ahead in the wrong direction.  Naïve and optimistic.
Knows the difference but does not rub in in others faces.  Tries to help junior programmers. Humble.  Has scars from many IT projects.
Optimizations
Will often write code once and deliver it to project code base.
Will try to write code in more than one manner to determine which code runs best and will then optimize it for the solution requirements.

Friday, July 04, 2014

I hate Platform as a Service

I sit here today at work and listen to someone describe "Platform as a Service" to me.  It rubs me as badly as "Data as a Service" or any other *aaS acronym.  Why?

The OASIS Reference Model for SOA, the base standard for Service Oriented Architecture, describes the facets of a service in an abstract manner.  Part of the core service model is the "data model" associated with a service.  This data can be anything.  It may represent data that empowers a platform, software or any other item.

The service model itself is agnostic to what the data represents.  This is because the service should not care what the data is.  The services only job is to facilitate its consumption.  The proliferation of *aaS acronyms must stop unless we are planning to have Everything-as-a-Service or EaaS.

Stop it.

Wednesday, June 11, 2014

A Perspective on the new Canadian Anti-Spam Legislation

If you are a business operating within Canadian borders and you are involved in sending electronic messages to your customers, you must take the time to read the following advice. There are actions that you MUST undertake prior to the new law coming into effect on July 1. 

A quick overview of Canada’s new Commercial Electronic Message (CEM) legislation. 

Canada has recently adopted a new anti-spam legislation. The law is described in detail on this page (http://fightspam.gc.ca/eic/site/030.nsf/eng/home). This new law goes into effect July 1, 2014.

We have prepared this brief overview of the new legislation as a service to readers and also as a public service to help those who seek an understanding of the new legislation. This article is not meant to be a substitution for proper legal advice and if you have any questions about the legal nature of this legislation, it is your responsibility to contact a legal professional.

What is the Anti-spam legislation? 

Canada’s new Anti-Spam law was passed in December, 2010 and comes into effect July 1, 2014. The CRTC has published final regulations related to Canada's anti-spam legislation. A copy of the regulations can be found on the CRTC website. The name of the law is the Telecom Regulatory Policy CRTC 2012-183. 

The Regulations prescribe the form and certain information to be included in commercial electronic messages (CEMs), and requests for consent with respect to the sending of CEMs, the alteration of transmission data in electronic messages, and the installation of computer programs.

The Regulations also define SPAM as “any electronic message” – text, sound, voice, image – sent to an electronic address for the purpose of encouraging participation in a commercial activity. It includes email, but also texts, tweets and instant messages.

It is not clear to Technoracle how Twitter or Facebook posts will be interpreted as spam.

How does it affect Canadians? 

All Canadian citizens or companies with a presence in Canada that send electronic messages as described above are subject to the laws starting July 1, 2014.

What is defined as “SPAM” under the new legislation?

Without diving into the specific text of the legislation, SPAM is defined as any Commercial Electronic Message (CEM) sent to an electronic address without consent of the recipient.

What are the legal remedies and penalties for violations?

Fines of up to $1 million for individuals and $10 million for corporations are possible. Additionally, the law will also allow those affected by a contravention of the law (such as getting spammed) to launch an action in court against those who have violated the law. Once into force, the private right of action will allow an applicant to seek actual and statutory damages.

Who will enforce it? 

There are three federal agencies that will enforce the new legislation. The Canadian Radio-television and Telecommunications Commission (CRTC), the Competition Bureau and the Office of the Privacy Commissioner of Canada will be responsible for enforcement.

What does the regulation specifically prescribe? 

First and foremost, the Regulations prohibit sending Commercial Electronic Messages (CEMs) unless the recipient has given express consent, or falls into a category where there is implied consent or one of the exemptions applies. It also prescribes the form and certain information to be included in commercial electronic messages (CEMs), and requests for consent with respect to the sending of CEMs, the alteration of transmission data in electronic messages, and the installation of computer programs. Most importantly, an unsubscribe mechanism must be in place that allows any recipient to unsubscribe and stop receiving any further CEMs.

What constitutes express consent?

The recipient has to opt-in, not opt-out. The request must be clearly identified. A pre-checked opt-in box or an unchecked opt-out box will not do. The recipient must take a positive step to opt-in. Silence does not mean consent. The onus to prove consent is on the sender.

NOTE: Technoracle has a Consent Module (an HTML5 module) that can link an individual to an express consent event.  The entire transaction is hash-tied to you can prove later that your customer opted in.  If you wish to get an overview of this technology, it is available from duane (AT) technoracle (hyphen) systems.com.

What are the other requirements for getting express consent?

  • Explain the purpose for the request. 
  • Name the person or organization, or on whose behalf, you are seeking consent. 
  • Give your name, mailing address and phone number, email or website address. 
  • Provide an unsubscribe option which is readily performed and will take effect within 10 days. 
Are there any exceptions where consent is not required?

There are certain conditions that provides for exemptions under the new law. Briefly, these are:


  • If consent of the recipient can be implied 
  • For communications that are within the domain of a business 
  • Where there is an existing business relationships and/or the CEM is relevant to the recipient’s role, function or duties. 
  • If the electronic messages is sent in response to a direct request for information. 
  • To enforce a legal right or obligation. 
  • If it relates to an existing transaction. 
  • If you are a customer inquiring about a business activity. 


Is there a time limit on consent? 


  • Express consent does not expire but can be withdrawn. 
  • Implied consent often depends on a specific relationship between the parties and therefore ends when that relationship ends. It can also be withdrawn at any time. If you are relying on this, it would be a good idea to seek legal advice from a qualified attorney. 
  • CEMs to which an exception applies may only be sent within the time limits set out in the Act.  
These vary depending upon the type and nature of the communication.

What qualifies as an ‘existing business relationship’? 

Recipients are considered as having an existing business relationship for purposes of the legislation, if the recipient of the communication has:

  • Bought or leased goods or services from you within the past twenty four months; and/or 
  • Made an inquiry about a contract, purchase or other financial transaction within the past 6 months.
When may consent be implied?

Some message recipients have an implied consent to receive messages. The exact nature of this consent has not been interpreted within the courts and individuals relying on this exception are urged to seek legal advice. Consent may be implied, as defined within the legislation, where the recipient is:

  • an individual with whom the sender has a personal or family relationship; and/or
  • the recipient is an individual or entity engaged in a commercial activity and the CEM is solely related to that activity. 
  • the recipient has conspicuously published an email address or given you one and the CEM is relevant to the recipient’s business role (the ‘publication’ exception); and/or 
  • the recipient has disclosed his or her electronic address to you, has not indicated any wish not to receive unsolicited CEMs and the CEM is relevant to the recipient’s business role (the ‘business card’ exception). 


In all the above cases, if the recipient requests that you not send further messages, such requests supersede any implied consent and consent will have been deemed as withdrawn on a permanent basis or until the recipient sends communications to the contrary.

Are any non-business relationships exempted? 

The following situations may be considered exempt, as long as the recipient has not expressed a communication that you stop sending them messages.
  • if the recipient has made a donation or gift or volunteered or been a member of your club, association or voluntary organization within the past 2 years; or 
  • if the CEM is sent by or on behalf of a registered charity and the message is primarily for raising funds for the charity.


Any other notable exceptions?

You can send a CEM to someone who has been referred to you by a third party, provided the third party has a family, personal or business relationship with both you and the recipient.

What do I need to do before July 1, 2014?

If you are a customer of Technoracle, you are entitled to a free consultation for thirty minutes to ask any other questions. Customers also may have their consent-linking module installed on their website for an introductory price before July 1.

NOTE: Remember that Technoracle Advanced Systems Inc. is not a firm practicing law in the Province of British Columbia and is not a substitute for any legal opinions you should seek if you have outstanding questions. All the information provided hereinafter is strictly provided as a non-legal practitioner perspective and our interpretation of the new legislation.

We use two local law firms that we recommend:

- Venture Law Corporation (contact Alixe Cormick)
- Boughton Law Corporation (Contact Claudia Losie)

Without limiting the generalities of the foregoing,  Technoracle would advise that any persons or other entities engaged in the dissemination of electronic communications to review the following:


  • Review your current internal practices and guidelines for sending CEMs and which ones will comply with CASL. Ensure that any staff involved with these activities is informed of the changes and has a chance to ask any questions they might have to clarify their understanding. 
  • For all existing email lists, you should assess whether or not you have valid consent, either express or implied, from any recipients. If you do not, it is recommended that you refrain from sending further emails until you can obtain such consent. 
  • If you don’t have consent, decide if you fall within one of the exception, and when they lapse. You should set reminders to ensure you comply with the time constraints on any limitations. 
  • Decide whether you should try to get an express consent, which remains valid until withdrawn, before July 1, 2014. 
  • Make sure your form of consent meets the requirements. If you require help with this, Technoracle or Hot Tomali can set up the proper email channels and forms of email that comply with the legislation. 
  • Ensure that your policies and procedures are in compliance. Once more, we are here to assist you with compliance and can configure your email marketing to meet the requirements. To find out more, contact duane at technoracle-systems dot com.

Tuesday, April 01, 2014

Mayoral Candidate puts forth new transportation plan!

In a surprise move, Olympic Bob-sledder Kaillie Humphries has put her hat in to the next Vancouver Civic elections as a mayoral candidate.  Capitalizing on her brilliant performance in the 2014 Sochi winter Olympics, where she and fellow Canadian brakeman Heather Moyse won the Gold medal, she has announced she will enter politics in her newly adopted home city of Vancouver.  She will run as an independent in the next municipal elections.

As she opened her announcement speech with an emotional statement, she quickly alluded to her desire to serve the people of Vancouver by taking a new approach to regional transportation.

Building on the notion of bike lanes being prevalent in the region, her plan introduced a relatively new form of transportation;  Rocket powered Bobsled.   The idea has been discussed in many areas of the country from Ottawa to Calgary yet it is a new idea for most Vancouver residents.  Bobsled tracks would be built beside existing bike lanes to provide space for bobsledders to practice their sport while alleviating traffic on main corridors.   The City of Vancouver has already endorsed the idea stating it solidly believes that building the bobsled corridors will entice many people to get out of their cars and into bobsleds.

Early prototype of Rocket powered sled testing in Burnaby, BC


Seen above, a prototype of a rocket powered bobsled is both eco-friendly and provides a very cost effective and comfortable transportation medium.  The initial transit corridors are meant to co-exist with the bike routes used, starting primarily in the downtown core.  City of Vancouver Councillor Geoff Meggs, Vice-Chair of the Standing Committee on Planning, Transportation, and Environment, has noted that the plan will reduce stress on our congested streets and provides a new way to commute that will attract hundreds of new users.  He expects many of the current cycling population will also move over to the newer and more environmentally friendly form of transportation.  He stressed that the pilot will involve some street modifications to provide for the snow making machinery on the Hornby Street route.

Map of first Rocket-powered Bobsled Routes (Courtesy City of Vancouver)
Kaillie announced her plan to the delight of many however some in the audience were not as supportive of the plan.  One resident noted that building more alternative vehicle infrastructure comes at the cost of automotive freedom.  Despite alarming statistics on global warming and the need to reduce CO2 emissions, some still feel it is an inalienable right to use automobiles.  To react to the comment, a spokesperson for the City of Vancouver responded "Boyahh! Who's your daddy?".

Construction of the new lanes is expected to begin almost immediately after the next municipal election.  The lanes should be open by late fall 2014.

Friday, March 28, 2014

I am seeking .NET, PHP Developers and Project Managers

My new agency is growing fast. The side effect of producing many successful ad campaigns is that the underlying technical infrastructure to handle the extra traffic has to be increased. Many of our clients are seeing a growth in both new opportunities and new functionality. This has fueled a recruiting drive for us. We need to fill these positions now.

 We require the positions outlined below.  Above and beyond the skills required, we seek people who understand the dynamics of working in a fast paced, creative environment. Experience in handling multiple clients and projects at the same time while being focused on delivering high quality work on a consistent based is our desire. If you can juggle flaming chainsaws while riding a unicycle backwards over an open pit of hungry sharks (with or without frigging laser beams), then this is the agency you will love. We work hard and play harder.

To respond, please go to the web page at http://www.hottomali.com/contact/job-postings and fill out the job application form for the position you like.

 Note: To fast forward your .NET position application:




Position #0145 - .NET Developer Required

We are looking for a skilled .NET Developer to join the Hot Tomali team. This is a highly technical position and you need to have a minimum of 3 years working full time in .NET development. Must be familiar with the following technologies:

Primary Skills: Expert .NET SOAP based Web Services Sitefinity (accreditation is a bonus) C# programming and basic architecture skills Integration and Database skills

Min 3 years: Github, NodeJS, Angular, HTML5

 Read the full post and apply at http://www.hottomali.com/contact/job-postings/.net-developer-required-position-0145


Position # 0144 - PHP Developer

A Senior / Experienced PHP programmer is required for our team. Successful candidates must have at least five years experience developing production web applications in PHP, including Content Management Systems (i.e. WordPress, Drupal, etc.) and version control systems (i.e. GitHub). Hardware or sever side administration experience is an asset. A University degree in computer programming is a minimum requirement.

Primary Skills: Expert: PHP 5+, jQuery 1.8+, CSS3, HTML5, MySQL, PostgreSQL, Angular and NodeJS.

Min. 3 yrs (production): Symfonic, Code Igniter, Smarty. Working knowledge: Github, Subversion, NetBeans 

Read the full post and apply at http://www.hottomali.com/contact/job-postings/php-developer-position-144 


Position #0143 - Project Manager 

We require a skilled Project Manager to bridge the Hot Tomali team to it’s functional requirements and manage progress. You will bring your solid agency track record managing integrated marketing programs including website builds, online and offline advertising campaigns, and internal development projects. You will be the very valuable conduit between our client services team and our internal resources and contractors, taking responsibility for delivering excellence in every task we undertake with our clients.

Primary Skills: Project Management Experience Agile Development Microsoft Project of other Project Software

2+ years of online or advertising agency project management experience Proven experience in directing production teams to keep them on budget and schedule while continually motivating them to create valuable solutions for our clients 

Read the full post and apply at http://www.hottomali.com/contact/job-postings/project-manager-position-0143

Friday, February 07, 2014

RACI and Natural Language

There are many patterns for communication modelling how real world collaboration works is sometimes difficult.  One of the hardest things for a human being to do is to think about how they think. When we talk to people and start a conversation, they naturally do a few subtle things that are missing from email. This is how a conversation in person usually goes:

Person1: Hello. (introduction if necessary)
Person2: Hello
P1: I wanted to talk to you today to get your input into our current marketing campaign. I am responsible for making the final approval.
P2: sure
P1: Specifically, by Friday I have to launch the new campaign and we still don’t have a final logo chosen.
P2: So how can I help
P1: If you have time, I’d like it if you could review the choices and provide input on your favourites and why
P2: No problem. When do you need it by?
P1: Is tomorrow ok? It should take 5-10 minutes

Note that P1 has relayed the exact same model as RACI here.  Person 1 have stated a project, a deadline and more importantly has informed Person 2 of exactly what they are expected to do with the information.  There is a lot of subtlety going on here.  So why is email ineffective for the same purpose?  Simple, both speaker and listener do not share a context of the collaboration.  A lot of very subtle communication is done via body language.   In real time communication, a person can detect if the other does not seem to have the information by noting inquisitive looks or blank stares and fill in the blank.

The email version of the above is:

***********
Dear P2:

Check these design out and let me know what you think. We have to launch friday.

P1
**********

This gets lost in the inbox of course. The natural flow of language will be important to observe as we launch. One hypothesis is that email is relatively inefficient at conveying knowledge since it is often an asynchronous exchange and messages that arrive can be easily taken out of context. This, of course, is well known.

So how does RACI help?  Even if using RACI does nothing more than simply structure the roles for people, it provides that context around the communication and collaboration thread.  Individuals are empowered with the information of why they are being included in the collaboration.

RACI matrix software can also help structure this communication in a manner that is unambiguous and has the capability to facilitate decisions being made in a timely manner.  RACI is a good model.

Thursday, February 06, 2014

Hacking the Enterprise – Collaborative Intelligence

In this first blog post about Hacking the Enterprise, we will to introduce the concept behind the Whispr platform we are working on.  The concept of hacking the enterprise is about unlocking the knowledge within your human capital and building highly efficient communications models to allow you to make decisions and get business done.    The value of roles, clearly defined lines of communication and process is becoming universally recognized as the single most important factor in building effective teams.   It seems almost illogical that such a quintessential component of an enterprises’ success has been long neglected yet nothing much has changed with respect to the way people work together in the last four decades.   To understand more about Hacking the Enterprise and optimizing the effectiveness, we have to look back to 2001.

Research started to look at the failures of effective team communications after the tragic events of September 11, 2001 when an internal audit of communications and knowledge sharing was spearheaded by psychologists who sought to understand where the intelligence community could have done better.   The Harvard based team was led by the late Richard Hackman and they approached the work with a question of what made certain intelligence units functionally effective while others were not.

Richard’s team interviewed, observed, surveyed and watched hundreds of individuals operating across sixty four different intelligence organizations.  By watching them up close, he learned how most are viewed as solo or individual contributors yet have to function within the greater collective by collaborating with their colleagues.    Throughout all this research, the team identified a comprehensive list of factors and models that seemed to be factor’s in the cohesiveness and effectiveness of groups.  Within the context of the intelligence community, these groups can sometimes be ad hoc and survive only to address a very specific decision.  Cultural, regulatory and other factors cannot always be accounted for within this context however there were some startling revelations that had a much broader applicability of use.





Graphic courtesy Julian Partridge (via Flickr – CC License)

While the work is summarized in a book aptly named Collaborative Intelligence (http://www.amazon.com/Collaborative-Intelligence-Using-Problems-Business/dp/1605099902 ) Richard’s team noted that the critical factor wasn’t as simple as just having a set of static team members, a clearly defined vision statement nor was it singularly due to human endearments or egos.   It turned out that the single strongest predictor of group effectiveness was the amount of help that analysts gave to each other.

As with most enterprises, the highest-performing teams place a great emphasis on collaborating, coaching, teaching, and consulting with colleagues.   Those who shared little resources and did not effectively communicate with their colleagues for enhanced problem solving embodied the anti-pattern of this success.  Hacking the enterprise is a conceptual hack embracing the collective pattern of good collaboration to facilitate these good patterns.  Much like a set of synaptic relays making connections to each other for the first time in a small child’s brain, hacking the enterprise is about bridging gaps in knowledge and communication.

Individuals and enterprises benefit the most when they freely contribute their knowledge and skills to others and do so with clearly defined roles.   Whispr is build on that premise and facilitates the hacking the enterprise mentality by allowing ad hoc teams to create powerful, focused task forces to solve specific problems and preserving that knowledge.

So what is the call to action? Whispr is a platform that allows distributed teams to set up decisions (“Whisprs”) and add contributors based on the roles defined in a RACI Matrix.   Whispr is open for a very limited time for alpha testing at http://whis.pr.   If you have a decision to make and have a distributed team, this is the perfect tool for hacking your enterprise.   You can signup at http://whis.pr/signup. Those who come in now can use it for free for a limited time.

Wednesday, February 05, 2014

Great Video on RACI and ITIL

ITIL is a Registered Trade Mark of the Cabinet Office in the United Kingdom and other countries. ITIL is an acronym that stands for Information Technology Infrastructure Library. ITIL itself is a familiar territory for any RACI practitioners.

The RACI matrix is similar to the ITIL Process Map in the manner it provides a summary of roles and levels of responsibility in IT Systems management processes. The video below is a very good creation that documents the consistencies and similarities between the approaches.

For more information about the ITIL Responsibilities Matrix, check out the link below: http://en.it-processmaps.com/products/itil-raci-matrix.html

IT Process Maps YouTube Channel: http://www.youtube.com/user/itprocessmaps

Monday, February 03, 2014

Decision Analysis

Making decisions is something that RACI and DACI help with, yet provide very little in terms of electronically searchable knowledge.  Many RACI practitioners believe the true value of using RACI is in making the decision.  An equal or perhaps greater value might be inherent in the searchable database of knowledge resulting from using a RACI platform for decision management like Whispr.  Past decisions can yield a wealth of valuable knowledge.

Let’s look at an example to help understand the value.  Imagine a small development shop that regularly helps out a company with their IT needs.  During the course of operations, the company listens to the suggestions of the development shop and as a result, embraces a specific technology platform or programming language for a product or service offering.  This has happened in real life many times over.

Over time, development of the IT goes well but eventually the small development shop does out of business.  The larger company now has a lot of IT investment but very little knowledge about why things were done a certain way.  Since the smaller development shop no longer exists, there is no one left to answer important questions.

A new IT development shop comes in to help the larger company.  During the course of their familiarization process, they become aware that there are several choices that have been made and ask why.  Without any knowledge preservation, they have no way to perform a comprehensive analysis of the past decisions and have no idea of the reasons for various decisions.

Decision Analysis is facilitated by keeping an archive of your decisions, the context in which they were made and the knowledge of who helped drive the decisions and for what reasons.

This is just one minor example of how analysis of past decisions can be a valuable part of your enterprises future.

Monday, December 30, 2013

RACI Definition and Software

While many people who are interested in RACI, there is literally no definitive source of knowledge on this topic.  Unlike SOA, which has the OASIS SOA Reference Model RACI has no normative definition.  This blog post will help explain why and how this can be mitigated.

This blog is not trying to become that authority however, we will continue to share what we know as it evolves.  Think about this as a point of reference.  You can use it as a common resource to explain your own definition of RACI or DACI.  If you disagree with some of the content on this site, at least you have a point of common reference to start with to explain how your definition varies.  We also encourage your interaction by leaving comments to help the community change it’s thinking  This pattern can be best described as a reference model requirements process.

In order to define RACI, there are really a few different components.  In no certain order, here are the concepts.

1. The Roles – RAC is a role assignment matrix.  the roles are used within a process of problem solving (ie – decision making).  A normative definition of roles would be an integral part of any RACI definition.

2. The RACI process – when solving processes, there are specific methodologies and processes that may emerge as best practices.  We have our ideas but invite others to help define this. Much like UML as a two dimensional syntax and a methodology (even Rational Rose makes this distinction with the Rose Unified Process or RUP), RACI has a process and methodology that make it much more useful.

3. Specifications and constraints for software – RACI does not have a normative specification.  Most commercial off the shelf (COTS) software is developed based on a specification.  Sometimes this is done as a reference implementation of a specification.  Compliancy experts usually go through a formal specification and look for IETF RFC 2119 keywords such as “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” and use these words to create formal constraints and test conditions that any compliant software must be capable of supporting. Since RACI does not have that level of granularity defined, commercial and enterprise RACI software for RACI such as Whispr, do not have the luxury of that level of speciosity, the authors had to develop their software based on their perceptions.

4. The cardinality of the roles and the rules governing how they are assigned.  For example, can a “Consulted” party also assume the role of Approver?  This is not specified.  Over the next few months, we will attempt to share our experiences of trying this different ways.  Again, our ways are not correct, we will just share them with you via this blog.

5. The nuances and effects based on the size of the problem tackled. It has already become apparent that the use of RACI is much different when trying to account for a decision in a 10 person company with 3 people making the decisions than a 5,000 person enterprise with 3,000 contributors.

6. Best practices and implementation notes.  As with any standard or idea, there are associated best practices that emerge as practitioners learn from their experiences.

To be transparent  we, the writers of this blog, have developed our own software for RACI named Whispr.  We are not trying to push our software in this blog, rather trying to help others discover the benefits of RACI and allow all RACI consultants to advertise their services on this forum.  The reason we developed the RACI software is that we noticed after leaving a consulting gig for RACI, customers tended to fall back into their old patterns.  The software, Whispr, helped keep them in their practice on a daily basis.

While we will write about Whispr, we will also offer to write up information about any other RACI or DACI software that exists.  This blog is not our exclusive forum to promote what we have done, rather an independent forum for all RACI and DACI practitioners to share their experiences and wares in this area.

After all, business as usual is no longer an option as email inboxes continue to grow while productivity flails.