Archive by Author | Rich

Get on the phone!

There have been a couple of interesting articles lately about the things startups can and should do to get and keep customers, and to build loyalty.

In particular I thought that this article – (Dial up: Why startups should use the phone) was interesting, and highlights something we try to do at InGenius.

We definitely use the phone here at InGenius – we call potential customers as quickly as possible when they contact us, and we walk every customer through installing and configuring the software (which takes about an hour in most cases), and help them get up and running. We’ve found that this personal touch really makes a difference and starts to build a bond of trust between our customers and ourselves.

Another recent post by Paul Graham (Do things that don’t scale) and 37Signal’s Jason Fried’s excellent post highlight the same ideas – get out there and get in touch with your customers!

 

Displaying BinaryCanary.com Web Site Status on a Geckoboard

Our company uses Geckoboard.com to display the status of a ton of Salesforce.com related information, as well as info we pull from Trello.com, Fogbugz.com, and BinaryCanary.com.

Geckoboard

BinaryCanary.com is a website monitoring company that allows us to monitor all our online properties, and alerts us if there are any issues. BinaryCanary.com has an API that we can query to determine the status of each of our monitors.

We wrote a small PHP script which is polled by Geckoboard.com every 3 minutes, and checks the status of all our online properties. The returns a simple XML file, which is then displayed by Geckoboard.com in a text window.

We are able to use simple HTML like <table> and <font> to make the text display green for sites that are up, and red for any sites that are down.

The widget isn’t very pretty, but it packs a ton of information into a small space, and we can easily see any sites that are red. (Sorry, I had to blank out some of the text…)

Binary Canary

Binary Canary Widget

Here’s the PHP file we use to generate the XML for this widget.

And, the Geckoboard Widget settings are:

Geckoboard Text Widget Properties

Geckoboard Text Widget Properties

Adding a phone number field to Salesforce.com Opportunities

We recently had an InGenius Connector Enterprise customer who wanted to have clickable phone numbers associated with each opportunity.  By default, opportunities don’t have any phone number fields.

The customer’s workflow was that they wanted their workers to go through the opportunities, and call each one every few days, until the sales was closed.

The Solution:

We advised the customer to add a field to the opportunity of type “Phone.”  We called this field “Account Phone.” Since this field is of type “Phone,” it will automatically be converted to a “click-to-dial” field by InGenius Connector Enterprise.

We then added a trigger to the Account that detects any changes, and then loops through all the opportunities associated with this account, and updates the “Account Phone” field in all the opportunities.

This way, the opportunities all have a clickable phone number field that stays in sync with the phone number field in the Account.

The Trigger Apex Code:

trigger UpdateOpportunityPhoneField on Account (after insert, after update) {
  // Loop through all account updates in this trigger (there will generally be one)
  for(Account acct: Trigger.new) {
    List<Opportunity> oppList = [SELECT id, Account_Phone__c FROM Opportunity WHERE Accountid = :acct.id AND Account_Phone__c != :acct.Phone]; // Find all the opportunities for this account.
    for(integer i = 0 ; i < oppList.size(); i++){
      oppList[i].Account_Phone__c = acct.Phone; // Update all opportunities with the new phone number.
    }
    update oppList;
  }
}

Things to be aware of:

  • The solution uses some Apex code to accomplish its magic. You’ll need an appropriate Salesforce.com subscription to use this solution.
  • The code loops through all the Opportunities each time an Account is changed. This could use up your Apex allowance.
  • If the user edits the Account Phone field in the Opportunity, this is not copied back up to the Account. You could add a second trigger for this, if needed. If the user edits the Account Phone field, the changes will be wiped out the next time the Account is edited. Another alternative is to make the Account Phone field read-only in the Opportunity Layout.

Nice overview of all of Microsoft Dynamic’s 4.0, and 2011 Update Rollup releases

If you use Microsoft Dynamics, you’ll understand that it can be complicated to know if you are running the latest version, and when to update. Additionally, Microsoft released a broken update Jan 12, 2012, which forced some users to have to completely re-install.

Microsoft released a blog entry recently, in order to clear all this up:

Microsoft Dynamics CRM 4.0 and 2011 Update Rollup Release Dates, Build Numbers, and Collateral
http://blogs.msdn.com/b/crminthefield/archive/2012/02/10/microsoft-dynamics-crm-4-0-and-2011-update-rollup-release-dates-build-numbers-and-collateral.aspx

Project Management with Trello

At InGenius we typically have quite a few projects on the go, and a lot of very busy developers.

One of the difficulties we face is project tracking. Making sure that:

  • every developer is working on the most pressing items,
  • our QA department knows what to focus their testing efforts on, for each build,
  • our sales people know when new builds, with new features are coming out.

We’ve tried many tools for keeping track of our projects, including:

  • Complicated spreadsheets, with a grid showing each developer, and all projects, saved in a common directory,
  • using Yammer.com and asking developers to yammer about what they’re working on,
  • Daily meetings, making sure everyone’s focused,
  • Online tools like Basecamp.com,
  • Using our Wiki to say what developers are up to, and should be doing,
  • Whiteboards at each office, with individual developer priorities,

And, none of it worked very well. Developers don’t like meetings, don’t like yammering, don’t like anything that gets in the way of what they should be focused on.

Last fall, we started using Trello.com, a new FREE online product from Fog Creek Software – the same people that build the terrific Fogbugz bug tracking system we use here at InGenius. We’re all thrilled with the results!

Trello is a deceptively simple application. It presents you with a page called a “board”, and the board contains multiple lists.

Each list can have a title, and multiple entries, known as cards. You can learn how to build a website, and you can re-order lists by dragging them as well.

Cards are the basic unit within Trello. Cards generally move up and down in a list, and from list to list, within a board.

Each card has a title, and when you click on it, it flips over to reveal a description, and a set of notes. People can add comments to a card, assign labels, assign a card to a particular worker, or vote on a card.

At InGenius, we use a similar setup to Fog Creek’s development board – we have a main board for all the development in our company, and have lists for:

  • Known Issues,
  • Ideas,
  • Next Up,
  • In Progress,
  • Implemented,
  • a list for each release.

Items generally move across, from left to right as they progress from ideas, to being implemented, to getting moved to a release.

Using Trello has been a godsend for both the developers and senior staff at InGenius. We can now easily see, in a single view, everything that’s in progress in the company, and can easily move cards around to indicate their priority.

Developers can easily make notes about their progress, which we review in a once-a-week meeting to make sure everyone’s on track. Each card contains a description of the bug or feature. Developers can easily add notes about their progress, and can move a card to the “Implemented” list when they’re done.

And, our QA staff can easily look at the lists for each release, to see which new features have been implemented, so they know where to focus their testing efforts.

Trello has become the focus of our developer meetings, allowing us to keep the meeting to 15-20 minutes and make sure everyone is on the right track.

We’ve learned a few tricks as we’ve used Trello.com:

  • Don’t overload Trello with too many items. In our case, we keep the “high level” items in Trello, and leave most of the detail work in FogBugz. The items we track in Trello are generally the things that we’ll highlight in each product release, and major, customer-affecting issues. The balance between Trello and your bug tracking tool is hard to determine.
  • make sure that card titles are succinct and descriptive
  • Make sure that developers update the cards regularly
  • Use labels to show which cards are bugs, and which features have been tested, or need documentation updates,
  • Assign cards to developers by dragging developer icons over to a card,
  • Use Trello in developer meetings as a focal point, and to show the team how the tool should be used,
  • Encourage higher management and sales to use Trello too.
  • Have a look at Trello’s development board for ideas and tips – and it’s fun to watch features move across, and out into a release!

Of course, Trello is not yet perfect, but new features are being implemented every week.

Our wish list includes:

  • Ability to move lists from board to board,
  • Better functionality in the iPhone and iPad applications,
  • Better management of company members, and management of which company members are allowed access to a board (this is already much improved)
  • Tighter integration with FogBugz

 

Automatic creation of Salesforce.com leads from product registrations

Our company recently started using Salesforce.com as its CRM system. We’ve all been astonished at the change it has made to almost every facet of our business. We’re on top of leads, interacting with customers, and tracking every call now using our integration between InGenius Connector and Salesforce.com.

But, we wanted to do more – we wanted to set up a system where we could call customers who have downloaded our software, and help them with the installation and configuration of the application. As with most telephony applications, it can be complicated to set up because of the many different types of phone systems out there.

So, we came up with a plan:

  1. User obtains a trial key from any of our download pages,
  2. The registration system sends an email to the user, with their trial key,
  3. The registration system also sends an email to a special email address at Salesforce.com, containing the registration info,
  4. Some custom Apex code at Salesforce.com parses the email, and creates a lead, and a task showing what the user downloaded.

Details:

So, here’s what we did, in more detail:

1) Create Email

We modified our registration system to send an email when a trial key is requested. The email looks like this:

Subject: [Trial Key]
Source:AUTOMATION
 Campaign:
 FirstName:Bob
 LastName:Smith
 Email:bob@bob.com
 Phone:555-1212
 Company:Bob's Baker
 Country:Canada
 Industry:
 Dealer:YES
 Product:IC
 Coupon:11111-22222-33333-44444-5555
 Platform_OS: Windows
 Platform_CRM:Salesforce.com
 Platform_TELEPHONY:Asterisk

2) Create Apex Class

We created an Apex Class to handle the incoming mail. The class parses the incoming email, then does the following:

  1. Checks to see if there’s a contact with this email address,
  2. Checks to see if there’s a lead with this email address,
  3. If not found, then create a lead with the user’s info,
  4. Create a task with the details of the product the user has downloaded. Creating a task is convenient because we can automatically handle the case where a user trials more than one product – they just get created as tasks on a lead/contact.

The Apex code looks like this:

Note that the variables ending in __c are custom variables in our Salesforce.com installation.

global class InGenius_Integration_Registration_Email implements Messaging.InboundEmailHandler {
 global Messaging.InboundEmailResult handleInboundEmail(
   Messaging.InboundEmail email,
   Messaging.InboundEnvelope envelope) {
    Messaging.InboundEmailResult result = new Messaging.InboundEmailresult();
    String EmailPlainText= '';
    string EmailSource;
    string EmailCampaign;
    string EmailFirstName;
    string EmailLastName;
    string EmailEmail;
    string EmailPhone;
    string EmailCompany;
    string EmailCountry;
    string EmailIndustry;
    string EmailDealer;
    string EmailProduct;
    string EmailCoupon;
    string EmailPlatform_OS;
    string EmailPlatform_CRM;
    string EmailPlatform_TELEPHONY;
    Boolean found = false;
    ID ContactId;
    Lead insertedLead;
    System.debug('Email Received from: ' + envelope.fromAddress + ' (' + email.subject + ')' );
    // Ignore emails with the incorrect subject
    if( email.subject != '[TRIAL KEY]' ) {
        System.debug('Email rejected: Wrong Subject(' + email.subject + ')' );
        return result;
    }
    try {
        EmailPlainText = email.plainTextBody;
        String[] emailbody=email.plainTextBody.split('\n',0);
        System.debug(emailbody);
        // THIS IS NOT a terrific way to parse the email, but it works...
        // If the email format changes, by even ONE character, this will fail.
        EmailSource =             emailbody[0].substring(7);
        EmailCampaign =           emailbody[1].substring(9);
        EmailFirstName =          emailbody[2].substring(10);
        EmailLastName =           emailbody[3].substring(9);
        EmailEmail =              emailbody[4].substring(6);
        EmailPhone =              emailbody[5].substring(6);
        EmailCompany =            emailbody[6].substring(8);
        EmailCountry =            emailbody[7].substring(8);
        EmailIndustry =           emailbody[8].substring(9);
        EmailDealer =             emailbody[9].substring(7);
        EmailProduct =            emailbody[10].substring(8);
        EmailCoupon =             emailbody[11].substring(7);
        EmailPlatform_OS =        emailbody[12].substring(12);
        EmailPlatform_CRM =       emailbody[13].substring(13);
        EmailPlatform_TELEPHONY = emailbody[14].substring(19);
        if( EmailDealer=='YES' )
            EmailDealer='Dealer';
        else
            EmailDealer='End User';
        System.debug(EmailSource);
        System.debug(EmailCampaign);
        System.debug(EmailFirstName);
        System.debug(EmailLastName);
        System.debug(EmailEmail);
        System.debug(EmailPhone);
        System.debug(EmailCompany);
        System.debug(EmailCountry);
        System.debug(EmailIndustry);
        System.debug(EmailDealer);
        System.debug(EmailProduct);
        System.debug(EmailCoupon);
        System.debug(EmailPlatform_OS);
        System.debug(EmailPlatform_CRM);
        System.debug(EmailPlatform_TELEPHONY);
    }
    catch( exception e4 ) {
        System.Debug('ProcessTrial Failure: Could Not parse email');
        return result;
    }
    // Try to lookup any contacts based on the email from address
    // If there is more than 1 contact with the same email address,
    // we just use the first match
    try {
        // Does a contact exist with this email?
        List<Contact> contactList = [Select Id, Name, Email From Contact Where Email = :EmailEmail Limit 1];
        if( !contactList.IsEmpty()) {
            ContactId = contactList[0].Id;
            System.Debug('Found Existing Contact:' + contactList[0].Name);
            found = true;
        }
        else {
            // Does a Lead exist with this email?
            List<Lead> leadList = [Select Id, Name, Email From Lead Where Email = :EmailEmail Limit 1];
            if( !leadList.IsEmpty()) {
                ContactId = leadList[0].Id;
                System.Debug('Found Existing Lead:' + leadList[0].Name);
                found = true;
            }
            else {
                // Create a Lead with this email
                Lead leadToInsert = new lead(
                    FirstName=EmailFirstName,
                    LastName=EmailLastName,
                    email=EmailEmail,
                    Company=EmailCompany,
                    Country=EmailCountry,
                    Industry=EmailDealer,
                    Status='Working - Key Issued',
                    Phone=EmailPhone,
                    LeadSource=EmailCampaign,
                    Product__c = EmailProduct,
                    TrialKey__c = EmailCoupon,
                    Phone_System__c=EmailPlatform_TELEPHONY,
                    Users_CRM__c=EmailPlatform_CRM);
                insert(leadToInsert);
                ContactId = leadToInsert.Id;
                System.Debug('Created Lead' + EmailFirstName + ' ' + EmailLastName + ' ' + EmailCompany + ' ' + ContactId);
                found = true;
            }
        }
    }
    catch (exception e2) {
        System.Debug('ProcessTrial Failure: Could Not Create Lead:' +  EmailFirstName + ' ' + EmailLastName + ' ' + e2);
    }
    if( found ) {
        try {
            // New Task object to be created
            Task[] newTask = new Task[0];
            // Add a new Task to the contact record we just found or created above.
            newTask.add(new Task(
                Description =  EmailPlainText,
                Priority = 'Normal',
                Status = 'Key Issued',
                Subject = EmailProduct,
                Product__c = EmailProduct,
                RegistrationCoupon__c = EmailCoupon,
                //IsReminderSet = true, // optional, set a reminder
                //ReminderDateTime = System.now()+2, // Set reminder for 2 days in the future.
                WhoId =  ContactID));
            insert newTask;
            System.debug('New Task: ' + newTask );
        }
        catch (exception e3) {
            System.debug('ProcessTrial Failure: Create New Task Failed: ' + e3 );
        }
    }
    else {
        System.Debug('ProcessTrial Failure: Could Not Create Lead:' +  EmailFirstName + ' ' + EmailLastName);
        return result;
    }
    result.success = true;
    return result;
 }

3) Configure Email Service

Once the Apex class is created, then you need to go to Develop -> Email Services and add a new Email Service to handle the incoming mail. This is where you’ll get the unique email address. Note also, that you may have to adjust the permissions, and adjust settings for which emails you accept mail from. By default this is quite locked down by Salesforce.com.

4) Last Step:

We hired Katy! Katy looks after calling customers when they’ve downloaded a trial version of our software, and make sure that the install goes smoothly. Thanks Katy!

Further Notes:

  • We are planning to add additional code to update the contact once a user purchases our software.
  • We are planning to improve the email parsing.
  • We had quite a few issues getting the debugging to work reliably at Salesforce.com. It is not clear how to enable debugging, and how to extract debug logs.

InGenius Connector and TAPI

TAPI (Telephony Application Programming Interface) is an API provided by Windows computers for the control of telephones connected to your PC. There’s a great overview of TAPI at Wikipedia if you want to learn more.

InGenius Connector, and its cousin Mitel’s Unified Communicator Express can use TAPI in two ways.

  1. InGenius Connector can appear as a TAPI telephony provider to CRM systems,
  2. InGenius Connector can make use of TAPI to control your desktop phone (Connector as a TAPI consumer).

InGenius Connector as a TAPI provider for connecting to CRM systems

 

This is also called the TAPI Plug-in, and is an optional component of InGenius Connector and Unified Communicator Express. This feature is enabled for an existing installation of our product by simply entering a license key. When you’ve done this, InGenius Connector will now appear in the list of TAPI devices that are available on your computer, when you use a TAPI enabled CRM.

This mode is commonly used with CRMs such as Act, Maximizer, and Outlook and many custom CRM systems. From within your CRM, select the InGenius Connector from the list of TAPI devices on your computer, and your CRM will now be able to place calls using the telephone connected to InGenius Connector. You’ll also be able to see the caller ID for incoming calls, and the CRM will be able to pop the appropriate CRM contact automatically. Note that the functionality provided varies between CRM’s. Some CRM’s may not provide the screen-pop functionality, for instance.

On the telephone side of things, the TAPI Plugin is commonly used with Mitel phone systems (using Unified Communicator Express or Unified Communicator Advanced, with the appropriate InGenius plugin), as well as users of Polycom phones, Aastra Phones, Asterisk PBX’s, and Broadsoft PBX’s – systems which are generally quite difficult to control via TAPI.

Using InGenius Connector with a TAPI-enabled phone system

The other way to use TAPI with InGenius Connector is to set up a phone profile within InGenius using the TAPI phone profile (which will be available within InGenius Connector in the first Quarter of 2012). In this case, the customer has a phone system that provides a TAPI interface, and want to use the features of InGenius Connector to control their phone system, or they want to use an InGenius Connector CRM integration with their phone system.

Users will have to install InGenius Connector, as well as the TAPI service provider which is provided by the telephone system manufacturer. In the case of Cisco, this is available for free, and can be downloaded by the Cisco Call Manager administrator.

We are currently developing TAPI support for Cisco phone systems, and will be certifying other phone systems soon.

Our customers generally use this option to connect their TAPI-enabled phone system to Salesforce.com, Microsoft Dynamics CRM, and Sugar CRM.

InGenius at HIMMS11

I’ll be down at HIMMS11 next week in Orlando, checking out the latest and greatest in Medical Applications for Telephony and iPhone/iPad. We’re specifically looking for cool iPad applications for the medical profession, as well as new telephony applications for the medical field.

We’ll be at HIMMS from Tuesday to Thursday – but taking off Thursday afternoon to head over to Titusville for the launch of STS-133 at 4:50pm. You can get in contact with me at Rich@ingenius.com.

Get ready for a new Tweex.TV!

InGenius’ first iPad major application is getting ready for its second release this week! We’ve had a lot of fun with the updates – deciding about colours and UI elements, and a lot of soul-searching about which features make it into the build, or wait for the next build. In the end, we’ve decided to just to builds more frequently, instead of cramming everything into fewer, larger releases.

That said, our release this week will include:

  • A brand spanking new colour scheme,
  • Tweet Filtering! Our app can now filter out those obnoxious “Me Too” tweets, and even adapts dynamically to the amount of twitter traffic to filter more agressively if there are a lot of tweets flowing by. Among other things, we skip repeated retweets, short tweets, and any that contain any of our blacklisted words.
  • View trending topics by region – you can now select a specific region to see trending topics. It’s kinda cool to see what topics are trending all over the world. Our app makes it easy to check this out!
  • We’ve cleaned up the ads – moved them from embedded in the tweet stream to a dedicated ad location at the bottom of the screen (you can easily upgrade to get rid of ‘em eh)
  • And lots more! (behind the scenes UI improvements, better refreshing, better show selection, etc)

Keep an eye out for the new Tweex this week at the Apple App Store!

Tweex.TV’s first Release!

You’ll want to head over to Tweex.TV to have a look at the new InGenius Twitter client!

So, what makes Tweex different?

  • Tweex is a Twitter client designed for people who like to watch TV, and enjoy following along on Twitter at the same time! This phenomenon is becoming more and more prevalent, and we think Tweex makes it really easy to Tweet and view Tweets about your fave shows.
  • Tweex presents you with a list of TV Shows, Events, Conferences etc. Simply choose what you’re watching, and you’ll see the appropriate Tweet stream appear in our app.
  • And, Tweex is smart – it monitors which hash-tags and usernames are relevant for the show you’re watching, and will provide them for you as suggested tags! Cool!
  • Tweex makes it easy to Tweet about shows too. It presents you with your current #hashtags when you’re tweeting, and inserting them into the text of your tweet is as simple as clicking on a button!

If you’re an iPad owner, check us out over on the Apple Store!

How the Application Framework for SpectraLink phones came about

We’re really excited about the Application Framework we’ve built for SpectraLink phones. This product adds a whole new range of capabilities to the handsets, and adds a whole new way of developing applications.

We’re seeing a TON of interest in this product at the Team Polycom event in San Diego (Feb, 2010), especially among Hospitality sales people and dealers.

We’re announcing this framework with two initial applications: A directory application, and a Set to Set texting application.

Fig. Texting application, and directory app – with search window, and some pinned contacts.

The project started when we were asked to develop an emergency broadcast system for use in a large cruise ship. They needed a way to display messages on all passenger phones, and on all the SpectraLink phones used by the crew on the ship. We used an InGenius product called Broadcast Alert to handle the creation of the broadcasts, and we built this framework to handle information display on the handsets.

We wanted to implement scrolling text on the handsets, and we wanted crew to be able to respond to messages – to acknowledge receipt, and to possibly request assistance. The standard handset display only allowed a few lines of text, and user interactivity was pretty difficult.

We ended up switching to using the handsets in a graphical display mode – which allows us full control over the contents of the display, and we can display icons, and buttons in addition to text – text in whatever font we choose!

We designed an extremely sophisticated algorithm to manage display updates – the algorithm determines which pixels on the phone have changed between updates – and only sends the differences. This GREATLY reduces the communications traffic, and makes this display updated mechanism feasible.

Then we built a really awesome notification app to handle the broadcast alerts…

Then, things got really out of hand, and we went nuts and built something we think is just awesome!

So, what is the InGenius Application Framework for SpectraLink phones?

We’ve created a system that instantiates a small virtual operating system for each of the SpectraLink phones in the system. (And we’ve tested this with thousands of phones, on a non-beefy server.) Each of the tiny operating systems allows you to control the phone’s screen and ringer, and can respond to button presses. We have a nice library of system calls that let you write to the screen using text, graphics, and icons, gather input from a user, etc.

Basically, using standard .Net tools like Visual Studio and C# developers simply write a very small app that runs on one phone. The Framework then replicates this app across all the phones! We’ve even built a sophisticated simulator that allows developers to create and debug apps in .Net – then easily release them to real phones.

The OS supports multi-tasking – so all the apps you have running on your phone run simultaneously, in the background. In our testing, we’ve written alarm clock apps, timers, broadcast alert apps etc, and they all run smoothly in the background – and can jump to the foreground when required.

Apps can easily talk to each-other – making it easy for apps like our Directory app to start our Texting app and pass in the current contact…

We’ve built in a login system – so users can securely share phones. When you log into a phone, your apps resume, with all your data and program states intact. Your apps can even keep running while you’re logged off  – so any texts or messages you may have received will be available when you next log on! The log in system is ideal in situations where phones are shared – like Nurse call stations, or big box retailers.

There’s a passthrough for legacy OAI applications – commands not meant for our framework are simply sent along to the legacy apps.

Check out the details on our product page.

Finally, here’s a view of the Simulator!

Apple Store opening in Ottawa!

I received an email from Apple yesterday announcing the grand opening of the Ottawa Apple store!

Hurry down to the Rideau Center at 9:30 am Saturday July 18th for the Grand Opening! Free T-Shirts for the first 1000 people there!

Email from Apple re Apple Store Ottawa

Email from Apple re Apple Store Ottawa

Pogoplug looks pretty cool! Terrabytes of data when you’re on the go!

Looks like Pogoplug is now shipping. It’s a cool $99 device that plugs into your home or office LAN, and has a USB port for a USB Disk drive – or a bunch of USB drives. You access your data through a password protected web page – and can upload or download files. An easy way to make a bunch of data accessible over the Internet – to computers or even your iPhone!

Pogoplug

Apparently there is some sort of plug-in architecture where Pogoplug will be extending the functionality of the unit over time.

We are trying to buy one to play with – but shipping charges to Canada being roughly $50, we’re holding off for a bit until we’re on a trip to the US and can get it shipped to our hotel.

Looks pretty cool though – check ‘em out!

Traveling through Ottawa? Check out this Airport Art!

Ottawa photographer Olga Novoa is displaying some of her recent work at the Ottawa airport – but you’ll need a boarding pass to see. 

Give yourself an extra 20 minutes when you’re next traveling to check it out!

 

Exhibit 05

Exhibit 05

 

 

Details:

OLGA NOVOA PORTFOLIO PHOTO EXHIBIT 09
Ottawa Macdonald-Cartier International Airport
YOW Art Gallery – The domestic/international holdroom.

Starts: April 7, 2009.
Open Daily and Nightly including Saturday, Sunday and Holidays.
Closes: After 12 weeks / Daylight hours are best for viewing.

If you are not a lucky traveler during the months of Spring please visit
http://tinyurl.com/photoexhibit and make sure to read the Polaroid tags.
You can also visit the actual display at the YOW gallery via
http://tinyurl.com/YOW-gallery

For more information about the artist, photographic services and prices
please contact:

OLGA NOVOA
Photographer & Graphic Artist
_____________________________
EVOLUTION | PHOTO & DESIGN
Ph: +1 613 601.1150
Ottawa, On.
C A N A D A
http://www.olganovoa.com/
info@olganovoa.com

SimplER released! Emergency Notification for Mitel 3300 systems

We’re thrilled to announce the general availability of InGenius SimplER for Mitel 3300s – a simple emergency notification application that emails the appropriate First Responders whenever someone calls 911 (or up to 5 emergency numbers).

InGenius SimplER is designed to work with Mitel’s 3300 systems.

Not only do you know that someone called 911, you also know who that person is and where they sit so that you can respond fast.

How Does SimplER Work?

1.      User initiates emergency call.

2.      SNMP trap picks up the emergency call at the 3300 switch.   SimplER server is notified.

3.      SimplER initiates look-up in Active Directory.

4.       SimplER generates email to appropriate First Responders.

Google failure: Google doesn’t stage changes????

googlelogo

Like many people we were surprised early Saturday morning when Google decided to display a warning for EVERY search result. My wife called immediately, thinking that our kitchen computer had been infected by some crazy virus.

According to Google’s own blog, the problem was with a file that lists all the “dangerous” web sites on the Internet. Apparently one of the entries in the file was simply “/” which was interpreted as “every site” – so Google flagged every single site on the Internet (including it’s own sites like youtube.com) as containing malware.

Now, what’s crazy about this is the fact that it happened at all. Most web developers we know, and certainly every site InGenius manages for customers goes through a pretty rigorous process before being updated. We maintain:

  • Development Systems,
  • Staging Systems,
  • The Live site.

Developers work on the development systems – making changes, and testing their work. Once they’re happy with it, the changes are uploaded to a Staging server, and the whole site is tested, paying particular attention to the new features. Only then, when everything is perfect, are the changes migrated over to the Live Site. And, everything undergoes an immediate smoke test, and a complete test as quickly as possible.

So, it appears that Google doesn’t follow this sort of simple process – that they don’t stage changes, but instead simply roll them out to their main server!!! Unbelievable!!!!

I’m sure some changes will be made to their processes:

  • An automated check of the new malware file to look for entries that can cause a repeat of the problems they experienced,
  • A staged process, where the changes are tested before they are rolled out to the live system,
  • A search for other “single points of failure” in Google’s systems. Where else could similar issues bring down all of Google??!!!

It sure would be fun to sit in on some of the meetings I’m sure will occur at Google on Monday morning. Hopefully whoever is responsible is not fired – you can be sure they won’t be making a mistake like this again…

InGenius exhibiting Mitel solutions at IT Expo

Internet Telephony Logo

We’re heading off to IT Expo tomorrow (Booth 501) to show off our new Mitel product line, including:

  • Unified Communicator Express
  • InGenius Broadcast Alert
  • InGenius App Builder
  • InGenius simplER

So, what the heck is this stuff?

Mitel Unified Communicator Express

The marketing blurb goes like this:
<blurb>    Mitel Unified Communicator® (UC) Express is a lightweight, serverless unified communications client that connects your Mitel business phone with Microsoft Outlook, Microsoft Active Directory, Windows Live Messenger, and Windows Desktop Search on your PC. Productivity enhancements like click-to-dial, incoming caller ID pop-up, PC-based missed calls and speed calls list, and personal (Microsoft® Outlook®) directory integration. Available at Mitel.  </blurb>

UCX is cool, because it’s a PC telephony client done right. It can optionally run right in your Windows taskbar, and can even be fully utilized from the tray icon. We have spent hundreds of hours trying to make the UI simple, yet extremely functional. You won’t find a huge app popping up every time the phone rings, or when you want to make a call – simply type in a few characters of the name of the person you want to call – and the app will find the number and dial. Nothing pops up or distracts the user.

Unified Communicator Express

UCX is the new version of Mitel’s Integrated Office Companion. UCX is an incredible upgrade to IOC, adding many cool features such as:

  •  Multiple phone profiles: If you have phones at your office, home, and on the road, you can set up phone profiles. UCX will automatically sign onto the phone appropriate for your location,
  • Support for Mitel 5330, 5340, and the new 5312 and 5324 phones,
  • Excellent support for Vista,
  • And, we’re very excited to announce that UCX will soon have a built-in softphone, which you can use when you’re away from your desk.
  • UCX is also extendable through TAPI, or our plugin API which we can adapt to your CRM solution, even if web based like salesforce.com. It’s a powerful tool for all employees, not just sales or call center agents.

InGenius Broadcast Alert

Broadcast Alert is a mass notification system that can send alerts to 10’s of thousands of your employees, via alerts that pop up on their PC’s, and their Mitel phones. Features include:

  • PC client that’s easy to role out in large installations,
  • PC client can display an alert, including an audio alert, and text and graphical instructions, and can even completely lock out the user’s PC – so the user is compelled to leave their office.
  • Alerts can be displayed on Mitel’s 5300 series phones – currently supported on the 5340 and 5330 models, and soon on all 53xx phones.
  • Alerts can be sent to user specified zones,
  • Each Zone can have a custom exit instructions and graphic, allowing you to specify exit instructions for each floor of a building, or each building on campus,
  • The system is EXTREMELY easy to maintain – new clients show up in the right zones automatically, without any administrator involvement.
  • Users automatically change zones if they are mobile – so a laptop user will automatically join the zone of whatever building they are in as they move about the campus.

InGenius Application Builder

Build HTML applications for your Mitel and Polycom phones using a wizard based online tool.

App Builder is an online tool that makes it easy to create HTML applications for the hospitality industry, with other verticals coming soon.

You simply follow through the wizard, then click on download to obtain a sophisticated HTML application customized for your property.

We’re excited to be demonstrating new support for Polycom phones at IT Expo. Polycom’s phones include colour models which are perfect for use with App Builder. Stop by and check it out!

InGenius simplER

simplER is a great product for users of Mitel’s 3300 series of switches. simplER monitors your 3300 looking for calls to 911 or any other emergency numbers you specify. When it detects an emergency call in progress, simplER looks up the caller in your Active Directory database, determines the caller’s location and name, then alerts approriate first responders for that office area, building floor, or campus building.

As the name implies, simplER is incredibly easy to configure and maintain, and is extremely flexible in it’s notification options. You can customize the notifications that are sent, and easily manage the notification groups by simply creating Active Directory groups following a simple naming convention.

simplER is an essential tool for EVERY Mitel 3300 system installation.

New and Exciting Stuff we can’t talk about here!

We’ll be highlighting some other exciting new stuff at IT Expo – including solutions for Asterisk users, advanced SIP softphone functionality and more. Please stop by at booth 501!

We’ll be posting photos and more blog entries from the show. Keep checking back for more exciting news from the show!

Balsamiq Mockups is a great design tool!

A few weeks back I noticed that Alec Saunders had some great things to say about Balsamiq Mockups, a UI design tool that makes it very easy to create mockups of web and PC user interfaces. We had a big web redesign coming up, so I decided to take Balsamiq for a spin…

The app is built using Adobe Air, which means it is cross-platform and works great on both Windows and OS X. Installation is painless on both platforms. And, it really opened my eyes to the power of Adobe Air (I had pretty much thought all it could do was host web pages outside a browser…)

The app is a riot to use. There’s a large ribbon across the top that contains all the UI elements you can use. Drag ‘em onto the canvas, and build a UI in a few minutes. 

One of the app’s features is a hand-drawn look – which means you can avoid focussing on the nitty gritty details of the design, and instead get the overall layout right. You don’t spend hours wasting time on pixel by pixel spacing, and whether some text should be bold, or a different font. It’s like you’re working with a talented artist who can throw together really great sketches very quickly.

And, the app is smart too. The table layout tool is particularly nice – you just type a few rows of text, and it automatically lays it out in a nice table – and automatically converts things like [ ] into checkboxes. Nice.

The app is keyboard friendly as well. It’s not obvious, but there are plenty of keyboard shortcuts such as typing “/” to get to a text box where you can simply type the name of the UI element you want added to the page.

The developer is extremely responsive to user requests, making extensive use of the GetSatisfaction.com site for user suggestions, soliciting advice for how to implement new features, and responding to any issues.

The app is missing a few things, though enhancements are in progress… The app can’t save “projects” of multiple pages. You have to load each page of your design one at a time (although multiple pages can be viewed in the tabbed interface). You can’t add links or automation to your pages – so clicking on things never actually jumps to the new page (like working with a real paper mockup, you just flip to the next page), and you can’t add your own custom elements to pages. One feature I’d like to see is some UI elements for iPhone applications. Many of these features are in development now.

Balsamiq Mockups is a highly recommended application!

exportdialog

mytube

Blog Blazers – How to blog, and what to expect if you do!

Our friend Stephane Grenier has just finished writing a new book “BLOG Blazers” in which he interviews 40 well known bloggers – asking an interesting series of questions of each blogger.

My favorite question: What was your most successful blog post ever? – It’s very interesting to read everyone’s responses to this question, and to remember reading some of those posts in the past.

Stephane has managed to interview some really huge names: Seth Godin, Manolo Blahnik, Jeff Atwood (Coding Horror), DanLyons (Fake Steve Jobs), and Alex Papadimoulis (Daily WTF) – Stephane even manages to interview himself!!!

You can buy the book directly from Stephane, or you can find it on Amazon… 


 

Congratulations Stephane! It’s a great book.

Review: Griffin iTrip AutoPilot

I picked up an Griffin iTrip AutoPilot FM Transmitter a few weeks back, hoping to be able to listen to the tunes, and charge my iPhone at the same time. I bought it a a Roger’s phone outlet here in Ottawa – a bit pricey at about $100.

Turns out the device has a few issues: 

  • Biggest complaint: It absolutely SUCKS at transmitting audio to the FM radio in the car. The signal is WEAK WEAK. And, if you drive for over a mile or two, all of a sudden, the signal is lost as new, more powerful stations come in. Even though the new stations are very far away. Basically, you will hear TONS OF STATIC all day long on this thing.
  • Terrible search function – could be European model? It has a built-in search function which is supposed to find an empty channel. It does, but does it poorly. The channels it finds to broadcast on are NOT the default channels used in Canada. It wouldn’t surprise me if Griffin was selling us a European version of the device since we’re in far away Canada, clearly a European country…
  • The device doesn’t remember the last channel it was broadcasting on. So, every time I hop in the car, I have to reset it to the station I want to use. Very annoying.

Beware of this device.

UPDATE: I contacted Griffin as suggested in a comment. Explained the issues – and a new iTrip is on its way. They agreed that it appears that Roger’s (The Canadian iPhone carrier) stores are carrying the European version of the iTrip (at least they were when I bought). So, check this out before you buy. I don’t know how to tell the difference, except that the European version finds stations on even numbers, not odd (ie, 106.2, not 106.1), and does not save the transmit frequency when power is lost. Further updates when the new unit arrives. So far, excellent service from Griffin.

UPDATE 2: Received the new device from Griffin, and many of the issues are fixed. The unit now searches better, and remembers the last station it was tuned to. This makes it MUCH more functional. However, I still have problems with the transmit power. I understand it’s transmitting at the maximum allowed power, but something in the design is not working. I’ve tried the device on 3 different cars, and in each I’ve had to hang the iPhone over the rear view mirror by its wire in order to get a consistent usable signal strength. If the device is simply sitting between the front seats in the car, or is on the floor, the radio can’t pick up its signal at all. So, close, but not quite there yet.

Follow

Get every new post delivered to your Inbox.