Updates from December, 2011 Toggle Comment Threads | Keyboard Shortcuts

  • Ian Leu 11:43 am on December 21, 2011 Permalink | Reply

    Using Ironspeed to develop a CRM system 

    Currently we are developing a CRM system using Ironspeed for a customer. The system we are developing has a lot of cool features, such as using AJAX autocompletes that populate several related fields on the form automatically whenever an option is selected. One of the difficulties we ran into was populating results into additional fields that are in an embedded table control.

    For a field on the main form you can use a simple javascript statement to apply the result value from the stored procedure to another element after the autocomplete item is selected. Since the ID of the design element is always there and doesn’t change you can write something like this:

    $get(‘<%# ProductDescription.ClientID %>’).value = results[0];

    In the table controls, however, you can’t use this statement because the elements are different for each row, and they are created on the fly. So we need to use getElementById, the problem with this is that the IDs for each row are slightly different and they change as more rows are added. We were able to get around this issue by taking the value of the autocomplete ID  in javascript and just replacing the unique value from this ID with the unique value of the ID we needed to populate, this way we know that we are applying the results to elements in the correct row (each element in the row has a number unique to that row baked into the ID).

    It can be accomplished with a simple function like this:

    function OnProductSelected(source, eventArgs)


    var results = eventArgs.get_value();

    var product = source.get_id();

    product = product.replace(“ProductAutoComplete”, “ProductDescription”);

    document.getElementById(product).value = results;


    In this example the autocomplete element is called “ProductAutoComplete” and the results we are getting from the stored procedure needs to be placed into the “ProductDescription” field.

  • Lisa 9:37 am on December 19, 2011 Permalink | Reply  

    New EU Cookie Law? 

    Cookies.. mmmm… Unfortunately, we are not talking about delicious edible cookies. We are talking about cookies that track your activity on websites.

    I was reading an article about a new EU cookie law that took effect in May of this year. Cookies are basically ways for companies to track your activity on their website. Have you ever been on a site and they make suggestions of other things you may like? This is because they see you have purchased an item and it may go with another. So, they bring that to your attention in hopes to that becoming an impulse buy. Take Walmart for example. You view a couple of items and leave the site. A couple of days later you visit Walmart.com again and if you look on the left side of the page it will display “recently viewed items”. These are the items you just viewed a couple of days ago.

    Well, EU has implemented a new compliance law stating that if someone visits your site, you have to ask them if it is ok to put cookies on their computer. Companies have one year from when the law took effect, to become compliant. Or else they could be fined a hefty amount of money.

    In one sense, I like it because then you can keep track of all of the sites putting cookies on your computer. In the other sense, that is one extra click I have to do in order to go to a website. I want to get to a site, do what I need to do, and then leave. I can always delete my cookies or set my browser to delete my browsing history and cookies every time I close my browser.

    Hmm.. So how are the average non-technical users going to take it? Are they just going to accept it and continue on or get scared and leave the site? When I get pop ups, I examine them, look them up, and go from there. My mom would either be calling me every 5 minutes asking if it is ok or would be scared to go on the internet.

    With that said..
    Are you all for the EU Cookie law?

    What methods would you use to inform visitors to your site?

    Do you think that it would confuse most of the non technical visitors?

    • Mark Steven 6:27 am on December 29, 2011 Permalink | Reply

      Now that there’s a bit more clarity over the intent of the legislation, and the what we need to do to comply, I’ve come around to the view that actually, it’s a good thing.

      The law could be interpreted as “Don’t drop non-essential junk on your user’s computers, particularly when it’s to abuse their privacy.” And I’d applaud that.

      It absolutely changes the paradigm of how cookies are used from now on though. Developers of web software, particularly for advertising networks and analytics, are going to need to find server-side solutions that answer their needs.

      Website opt-ins aren’t loved by users, and given the choice, most users say “no” or ignore the opportunity to opt in. So if you want “non-essential” cookie-dependant software to work at all, you’re a bit stuffed. It leave the multitude of Google Analytics users in an interesting situation: Google Analytics is entirely cookie dependant, and is not exempted under the regulations. In other words, users must explicitly opt in if you want to track them on your websites.

  • Ken Sobieski 2:05 pm on December 12, 2011 Permalink | Reply

    LotusScript for the VB Developer 

    So, you’re a VB developer and you need to modify a Notes app without much Notes knowledge? Hopefully you are not just a .Net programmer and have either some experience with VBScript because that will help quite a bit with LotusScript. If so, here are a few tidbits that may lessen your pain as you dig into the code…

      1. Notes is extremely flexible! (Maybe too flexible?)
        If you come from a structured data background, Notes can be a bit disconcerting. Notes documents are designed to mimic a real-world document; you may have a pre-defined structure but, if necessary, you can mark in some other information. If you run across a field in a script that you can’t seem to locate no matter how hard you look, it is quote possible that the field and data were created on-the-fly. Check your document events and shared scripts; chances are you’ll eventually find what you are looking for.
      2. Beware the variables
        If you work in an environment that demands explicit declaration of variables, you may find areas where implicit variable types exist. In Notes, Option Declare (or Option Explicit) must be speified to enforce explicit declarations. Without, you may find a script peppered with Variant types that “just show up.” (And, just in case, LotusScript is not case-sensitive.)
        LotusScript will also let you declare multiple variables on a single line, each with a different (or no) datatype. If you run across a scenario where the data type appears not to be defined, there may be two possibilities:

        1. The variable is implicitly cast as a Variant (Object) type or,
        2. The variable may be cast using shorthand declaration (e.g., aString$, anInt%, etc.):
          Keyword Suffix Data Type Range
          Integer % Integer -32,768 to 32,767
          Long & Integer -2,147483,648 to 2,147483,647
          Single ! Floating-point -3.402823E38 to 3.402823E38
          Double # Floating-point -1.7976931348623158E308 to 1.7976931348623158E308
          Currency @ Currency -922,337,203,685,477.5808 internal format to 922,337,203,685,477.5807
          String $ String ~16k characters
          Variant NONE Can contain any of the preceding, plus Date/Time, Boolean,and objects
    1. LotusNotes documents and mail are tightly integrated
      Need to send an email? There is no “special” e-mail function in Notes because it is inherent in the design. Simply tack a “To” and “From” to a document (at a minimum), invoke “Send” and, voila, you’ve sent an e-mail (assuming your mail is configured correctly). OK, maybe it’s not just that easy, but pretty close so, if you see a document with this going on, it’s becoming mail.
    2. A lot of (if not all) fields have indices
      When is a checkbox not a checkbox? When it’s in Notes! Don’t expect to find a “checked” property available to your script. Instead, a checkbox may have multiple values set and, if checked, you will need to check the value of the control. If multiple options are selected, they will be accessible by index (e.g., if a checkbox “LightColors” has options “Red”, “Yellow”, and “Green”, and each is selected, LightColors(0) will be “Red”, LightColors(1) will be “Yellow, etc.) if NO options are selected, index 0 will evaluate to an empty string (“”).
      Textboxes, too, may have indices. Index 0 will return the text in the box. If the textbox is multi-line, the indices will refer to each line, as defined by the delimiter (space, new line, comma, semi-colon or a blank line).

    More to come…

  • Joe Wichowski 2:58 pm on December 11, 2011 Permalink | Reply
    Tags: ,   

    Some (un)Intelligent design in Microsoft CRM… 

    It’s always a love-hate relationship with Microsoft to me.  I love the way it integrates with Outlook, Office, and the Microsoft stack of tools.  But here is a good example on their engineer’s not “getting it”.

    This is a screenshot of me going into Microsoft CRM, and selecting to “Set Regarding” an email.  First, the term “Set Regarding”.  What?  Couldn’t they use “Save to CRM” or something more intuitive for users?  I can’t begin to describe how hard that term is for us to explain to users during training.

    But that’s not the worst part.  When I select the email, I hit “Set Regarding”, and what do I see?  A complete list of Accounts, contacts, or Leads.  Shouldn’t it have automatically performed a “search” on the email addresses, found the best match, and simply limit the list to those found?  Instead I have to manually “Search” for my contact.  It could have been so much easier…  So silly…


    We have done what we can to “automate” this type of behavior in core MS CRM.  For example, all of our customers get a script added that automatically prompts the user’s for the Regarding and Required Attendees when they create a new appointment.  This is an automated macro, and save the users plenty of time.  However, it is something that should have been in there as “default”.  Without an associated Regarding (in our case, the Regarding is always the Customer) and Contact, the data is useless to report on.


    Although we can do this on the CRM form, the Outlook pop-up filter box does not allow us to customize it.  So, sadly, I will continue to have to first find customer “ABC”, then still run another query to find the contacts for customer “ABC”.

  • Joe Wichowski 9:22 am on December 9, 2011 Permalink | Reply
    Tags: ,   

    The Importance Of Centralized Workflow 

    I read an article on Yahoo News about the French tech company Atos – they are “stopping email” within their company, because the CEO believes only 10% is useful (and up to 18% is just spam).  After doing the math, I can’t help but wonder if I am right about what the other “144 useless messages” are.

    We often find email-overusage in companies that do not leverage proactive systems and workflow.  People are programmed to use what you give them.  15 years ago you probably gave them email, and at the time they were sooooooo happy – the end to the voicemail madness!  However, in the last 15 years, what additional tools have you given them to organize their lives?  We are asking employees to do more and more, but aren’t necessarily giving them the tools to accomplish all of this additional responsibility.

    When a client of ours explains to us that they have “email overload”, we often pitch a 2-step approach:

    1. Build proactive automation within their CRM system.  By pushing key information directly to users, in a just-in-time fashion, users are less likely to “ask” the status of issues, and will not arbitrarily “FYI” everyone on simple mundane issues and tasks.  Use metrics to measure everything, and when they fall “out of scope”, only then send an alert of an email.
    2. Build a centralized Workflow Portal to capture “everything else”.  This would be a spot to capture any work activities executed by cross-functional teams – collaborative proposals, new marketing or product initiatives, cost reduction projects, and so on.  These are the places where the “Social Enterprise” should live.  Don’t just set up a Wiki, put the Wiki directly within the scope of the project or initiative.

    To me, email is not the problem.  The true issue lies in the fact that team’s need a specific place to put information, and process for collaboration.  If none exists, they will leverage the tools they already have – email and meetings.  In my opinion, simply shutting off email at Atos will not solve the problem.  Instead, users will spend much of their day going desk to desk (or conference call to conference call) “CC’ing” information as they have done before.

  • Joe Wichowski 8:07 am on December 6, 2011 Permalink | Reply
    Tags: , , ,   

    The Azure pricing mystery… what about attachments??? 

    As a follow-up to my initial Azure post, I wanted to show that if you have an ASP.NET app that also has attachments (for example – PDFs archived against a PO work order tracking system), it really doesn’t affect monthly pricing that much.  For example, lets suppose we add attachments into our previous calculation.

    If we allow for attachments of 500kb, and each user either attaches (or downloads & reads) 5 attachments per hour, the total gigs transferred per month grows by about 50%.

    In addition, you also have to “store” those attachments in Azure.  If we assume storing about 50 new attachments per day, that comes out to about 6gigs of space per year (or 12 gigs over 2 years).

    But when we look at Azure pricing for the additional bandwidth and storage space, we see that it really only adds another $10/month.  Not a significant cost by any means.

    For Force.com, its also not an issue.  Their $50/user/month charge includes 612mb/user (or a little over 6gigs for our 10-user example).  So, essentially, the storage of attachments are “included” within the Force.com price (Force.com gives you a minimum of 11gigs storage space, so that should essentially cover our example 2-year analysis).

  • Kurt Higley 12:43 pm on December 5, 2011 Permalink | Reply

    Life without email? 

    I just read this article “Staff to be banned from sending emails“.

    Could you change the way you work and stop sending internal email within your company?

    Some things come to consider:

      1. Attachments. Some instant messaging applications allow attachments, but is that the best practice?
      2. Mobile access. Not all instant messaging applications have a mobile solution.
      3. Historical. Can the chat transcripts be saved? Are there any legal ramifications or requirements(i.e., HIPAA).
      4. Mail-enabled applications. Are these considered email?


    It’s a start, but email is going to be here for a while longer.
    Food for thought.

  • Joe Wichowski 11:37 am on December 3, 2011 Permalink | Reply
    Tags: , , ,   

    The Azure pricing mystery… 

    Microsoft has had their Azure online PAAS offering available for a while now.  And while it does promise some awesome capability (mainly, zero-hardware scaling), some of our customer’s can’t help but get confused every time they try to determine “how much” their app will cost per month before they go-live.  Many believe it will be too expensive.

    The compute and storage pieces are easy enough to calculate.  But it is the bandwidth that scares them.  Often “older” applications were not necessarily built to be lean.  Taking advantage of newer frameworks like ASP.NET MVC can help, but that often requires a complete re-write of the application – usually not a cheap option.

    Most of our traditional ASP.NET workflow-based web apps come in at about 100kb per page (including images).   If 10 users hammer at it most of the day, their monthly bandwidth would come to about 10gigs.  You can scale this out by adding another 1gig per user per month.  Here is my spreadsheet calculation:

    So, for a 10-user app, you are probably in the ballpark of $280/month (Medium instance, 6gigs database, 10gigs per month bandwidth).  That comes to $28/user/month.  Not bad really, when you consider the fact that with Azure you do not need to pay for a hardware/technician to patch and maintain your infrastructure (Microsoft does it for you automatically), nor do you have to pay for the server hardware itself, any Windows Server licenses, or the SQL Server licensing.

    What other options are there?  You can also go for Force.com – which allows you to build your own Salesforce.com-type applications.  But there, you will have to essentially rebuild your app from scratch, as there aren’t any “converters” available to port code from ASP.NET over to APEX (the Force.com language).  Also, there comparable sever is $50/user/month – a bit pricier, but perhaps the better option if you are going to rebuild your app.  Force.com is fairly easy enough for anyone to develop a basic workflow app.  With ASP.NET, you are probably looking at hiring someone since it is a traditional programming model.

    Is there value in Azure?  I’m telling my customer’s yes – if they have existing ASP.NET applications, and no longer want the complexity of having to maintain servers internally within their organization.  Azure offers a great “first step into the cloud”.

    What if your ASP.NET app has an extensive amount of attachments? Not much different really. Your monthly pricing will go up, but the major cost with Azure is in the instance and the SQL database – not the file storage or the additional bandwidth. But to clarify, I will re-do my calculation to detail that in a follow-up post.

  • Lisa 8:02 am on December 1, 2011 Permalink | Reply

    Windows Server 2008 Task Scheduler 

    Recently I was trying to set up a scheduled task in Windows Server 2008. I set it up to run later in the day and everything seems self explanatory. The next morning I checked to see if the task ran fine or not and I found out that it “ran” but it technically didn’t.

    In the history of the scheduled task it shows that it executed the task, but when I checked nothing had changed. I double checked all of my settings and everything seemed fine. I even executed the batch file in the cmd prompt and it worked just dandy.

    I noticed a field under the action tab when you are editing or creating an action, it says ‘Start in (Optional)’ I decided to try it and put in the directory of where the batch file was located. I then ran the task and it magically started working. Now, I know this doesn’t make complete sense because you already have to browse and locate the batch file under ‘Programs/Scripts’  But hey, it wouldn’t be Microsoft if it was made easy.

Compose new post
Next post/Next comment
Previous post/Previous comment
Show/Hide comments
Go to top
Go to login
Show/Hide help
shift + esc
%d bloggers like this: