Sunday, December 27, 2009

Attended scholarship ceremony in Saigon, 90 scholarship, 6 schools, many performances

Thursday, December 24, 2009

Christmas Eve in Saigon is like New Years in New York. A big celebration that everyone came to. I caught some videos:

Wednesday, December 23, 2009

Receiving holiday wishes from orphan children is a very special gift. I will share them with you here:

Sunday, December 20, 2009

SFO to Tokyo, no problem, Tokyo to Saigon, a snap, Saigon to local orphanage, a challenge...

Thursday, December 17, 2009

New SAS publication report for Strategic Analytic Review. Sounds intriguing but not sure if I would pay to get it.

Wednesday, December 16, 2009

SFO to NRT, Tokyo. I have to check out sushi there :)
SFO to NRT, Tokyo. I have to check out sushi there :)

Tuesday, December 15, 2009

Just received confirmation of paper acceptance so I will be presenting at SAS Global Forum in Seattle on SAS iPhone App

Monday, December 14, 2009

Starting to test out SAS on my new DELL Adamo, World's thinnest laptop. Pretty cool. :)

Sunday, December 6, 2009

Is the pace of Web technology passing me Up? Keeping up with iPhone innovations can be a challenge yet fun.

Is the Pace of Web Technology Pass me Up?

The pace of innovation got even faster with what I refer to as Web 3.0. Back in the 90's when Web 2.0 was being established, there was a gold rush for websites. Every company including their cousins and grandma it seems was creating their own websites. The website became the new identity complementing the the physical address. It became so ubiquitous that if your organization does not have a website, it does not exist. The majority of sites started out as HTML based sites describing products and services. As web 2.0 evolved, the user's experience became more interactive. Companies such as Google, and utilized the interactive functionality to make the web experience more like running applications on your desktop.

I am witnessing an evolutionary shift from Web 2.0 to 3.0 with the advent of iPhone App. It is analogous to the 90's but rather than asking: "is there a website for that?", it has become: "is there an App for that?" As I was noticing this trend, I observed all the companies and products that I consumed to see if they "have an App for that." I start my morning at Starbucks and sure enough they were a couple of Apps for that. I later frequented Wal-Mart on my way home... there is an App for that. I checked out Target, the answer was yes once more. It was becoming like the websites but perhaps during the early days.

A few weeks ago, I stop by Walgreens to process some photos and noticed that the two main things they offer were prescription refills and photos. I did not find see that there was an App so this presented an interesting opportunity. People shop for other things but these two items seem to distinguish it from other stores. I did not see an iPhone App at the time so I did an experiment to see if I can prototype an App for Walgreens to see if they might find it useful.

Since I often stop by Walgreens to process my photos, I thought it would start there and provide a method to place photo orders directly on my iPhone.

This would organized pictures in albums which is similar to their website. I can then view my album and then place an order to my local store for processing prints.

Another useful thing I thought was to be able to place prescription refills. Walgreen does have this nice feature as an automated phone service but the iPhone can be a good alternative.

It can assist in filling out the prescription number since it contains the store code.

The list of store close to your current location will make it more user friendly for the selection. The store location can also provide the ability to get driving directions.

Lastly, I thought there can be a smarter way of handling discounts and coupons. This can key off of what you have selected before to provide intelligent targeted advertisements.

Once the coupon is selected, you can also just put your iPhone in front of the scanner of the store clerk and it will automatically apply the discount. I was able to put together this prototype rather quickly with the help of my of my programmer team member. We changed the title bar and navigational button to have the red colors to match the general theme of the Walgreen brand. It was a fun experience.

I then contacted Mark Wagner at Walgreens to see if we can share with him this experiment. He had member of his team follow up with me noting that they had already just completed their iPhone app and it has almost the exact same features as my prototype. I was a little disappointed to see that our prototype did not get a chance to see the light of day but I am glad to see that our guess as to what a Walgreen App would be came pretty close to what they internally implemented.

The experiment did not turn out exactly the way I expected but it did confirm a couple of theories that I had. The most important lesson for me was that many if not all organizations that deal with customers will have an iPhone App. That means just about all companies since if you don't have customers, that would be difficult to be sustainable. I also see that companies
are moving fast towards their having a mobile device or iPhone strategy since there are about 100,000 apps now and it is growing fast. This does parallel with the ubiquitous website back in the 90s. There are some things about iPhone apps that are distinctly different as compared to Web 2.0. The immediacy of having the information on you at all times rather than having to be at your computer even when you are mobile it its main obvious difference. Since it has the ability to understand your current location, it adds a new dimension for providing information that is context sensitive to where you are. The combination of these location based technologies deliver "augmented reality" which is a new class of software allowing for real time experience related to your location. I see that this is building upon Web 2.0 and technologies of yesteryear yet taking it to new levels. It is fascinating to witnesss the fast pace of innovation in this dynamic time.

Friday, December 4, 2009

SAS to deliver Troubled Asset Relief Program (TARP) info on the web. Nice... Will they have an iPhone App for that?

Wednesday, December 2, 2009

Comparing SAS to Oracle and SAP is like comparing apples to a fruit salad...

Monday, November 30, 2009

How does independent SAS compete with Big Blue as IBM tries to take customers in analytics software?

Wednesday, November 25, 2009

In two weeks, over $1.5K, over 100 teddy bears from New York, San Jose going to Saigon :) Happy Thanksgiving.

Sunday, November 22, 2009

SAS leadership is important in the Asian Pacific region. It is good to see some recent development from SAS.

Saturday, November 21, 2009

We just received over $1K now for the orphans. This will go a long ways with the US dollar relative to VN. :)

Friday, November 20, 2009

Invited to present running SAS macros on iPhone at HASUG in New London, CT in Feb 2010. What is fun to do in CT?

Thursday, November 19, 2009

For the best company that everyone never knows about, award for Leader in BI industry is well deserved.
Participating on a panel discussing CDISC DEFINE.XML in SSF today. How more geeky can that be? :)

Wednesday, November 18, 2009

Just placed an order for DELL Adamo advertised as being available before Christmas. My delivery date with overnight shipping is 12/30 hmm...

Tuesday, November 17, 2009

Will SAS integration with other analytic databases such as Teradata, IBM and AsterData be done through SAS/Access?

Saturday, November 14, 2009

It is a great start with $670 raised for the orphans. It is good to see such kindness and generosity...

Friday, November 13, 2009

How do you make the mundane, boring and time consuming task such as creating CDISC SDTM SUPPQUAL fun? do it on iPhone

CDISC SDTM Suppqual Domain on iPhone

I was working on a project requiring the creation of many SUPPQUAL data which are supplemental qualifiers data domains within the CDISC data model. The majority of this effort is to identify the SUPPQUAL variables and its related identification variables. You would then need to transpose the source data into the vertical structure for this special purpose domain data structure as specified in SDTM. This does not require a rocket scientist, so I have created an interface on the iPhone where you can create this SUPPQUAL data and then get a preview of the resulting dataset.

The video I have recorded below will illustrate how this can be done with relatively little effort.

Tuesday, November 10, 2009

Latest CDISC DEFINE.XML style is generated from an iPhone App. Style over Substance... :)

DEFINE.XML Style Sheet on iPhone

"A style does not go out of style as long as it adapts itself to its period. When there is an incompatibility between the style and a certain state of mind, it is never the style that triumphs."
Coco Chanel

I was working on updating the style sheet of the DEFINE.XML and incorporated this update to the iPhone BI Flash version as well. This means that DEFINE.XML can be generated as before but not it has the option to have the style sheet that contains the colors that was chosen by the CDISC SDS team. This video illustrates how the DEFINE.XML with this style can be generated.

Friday, November 6, 2009

SAS programming on an iPhone? I refer to this as the Web 3.0 of SAS programming.

Web 3.0 of SAS Programming

SAS programming has changed and adapted to the fast changing computing environments. When I first started programming SAS years ago, I had used editors such as VI on Unix and TPU on VMS among a myriad of editors the PC. I refer to this form of developing and editing using these editors as version 1.0 of SAS programming. SAS’s strengths lies in its analytical tools used for exploring and analyzing data. To take advantage of these tools, I then started to use SAS display manger interactively and then Enterprise Guide as a way of developing SAS programs. These tools provided more data exploration capabilities so I am referring to this as version 2.0 of SAS programming. I see that we are about to enter a new era in SAS programming that can be accomplished anywhere with mobile computing which will be known as version 3.0 of SAS programming. In this case, you can be anywhere away from your office yet still having the ability to edit your SAS programs, submit it and review its output. I will describe the steps that I took to accomplish this.

Step 1 – Grant Permissions
The first step is to get access your SAS programs on a mobile device like an iPhone. The assignment of permissions to the SAS programs is applied on the SAS application server where the SAS programs and data reside. This can also be accomplished through a web browser as shown here.

Step 2 – Open and Edit Program
Now that permissions have been granted, I then access the SAS program directly on the iPhone. I first select the library in which the program is stored at:

Once I selected a specific program, I then tap on the “Edit” button to edit the program with an editor not too much different than how I edit emails on my iPhone.

Once the edits are complete, I then submit or run the program by tapping on the “run” button.

Step 3 – Review Edit History
Each time I edit or submit a program using this method, it will automatically create a copy of the current version. This also records my user name and the time in which I performed this edit for a complete audit trail for better change management. The history of the changes are therefore available through reports which I can also generate directly from my iPhone.

By running one of these reports, I can review the history of all the edits that anyone in my team has applied and have the ability to roll back on the server to an older version if that is required.

Editing SAS Programs 3.0 Summary
This process illustrates how a SAS program can be edited through a mobile device such as an iPhone and then submitted with complete version control. This does not mean that I no longer have the ability to edit your SAS program in EG or use your favorite text editor. This is an added tool which complements my existing set of tools and methods I use so now I can gain greater flexibility having the option to perform powerful SAS analytics anywhere with an iPhone.

Thursday, November 5, 2009

Are we going to see SAS referenced in movies as protagonist use analytics to safe the day?

Saturday, October 31, 2009

Thanks for the Teddy Bears for the orphans... They make a fun impromptu Halloween Costume... :)

Thursday, October 29, 2009

880 freeway is a crawl near collosiem. may be a while to fremont.
Attending bay area SAS group meeting in Oakland at Kaiser. I wonder if the traffic would be OK due to bay bridge, should have BARTed.

Tuesday, October 27, 2009

The more clouds become private, the more it looks like mainframe 2.0. SAS is paving ways with their private cloud.

Monday, October 26, 2009

Preparing iPhone App to run SAS programs for BASAS meeting at Kaiser on Thursday. Almost having running now :)

Friday, October 23, 2009

Validating the latest DEFINE.XML file for CDISC SDS team using many off the shelf tools. Full report is at:

Thursday, October 22, 2009

How do you pack teddy bears into a small box and deliver them from San Francisco to Saigon for orphan children? video:

Wednesday, October 21, 2009

SAS has suggestions for mobile service providers as it relates to data traffic. Is this a prelude to its iPhone App?

Friday, October 16, 2009

Helping review the DEFINE.XML against latest CDISC 3.1.2. Still reviewing the XML but some findings for the data:

Wednesday, October 14, 2009

Verifying for valid date variables in CDISC format used to be a chore. Now it is mildly fun on an iPhone.

Verifying CDISC Date Values on the Go

I have analyzed data which contain date variables for years and in the past, they were stored as numeric date variables in SAS format. However, more recently, my date variables are stored as characters since it is often stored in ISO format according to CDISC standards. This makes it challenging to verify since I can not easily apply computations upon a character date value.

I therefore have been using a macro named "datetest" which perform a series of checks against the date values to see if it is invalid. Things it catches include examples such as the month being 13 or the day is missing. There are times when I needing to look at many datasets and it is useful to perform this verification on the go on an iPhone. I will share with you this approach in applying the date test on an iPhone as shown in this video.

Sunday, October 11, 2009

"Bears 4 Kids", an effort by one person to change the lives of orphans on the other side of the world.

Friday, October 9, 2009

How do I view the latest CDISC DEFINE.XML when I am not in front of my computer?... try viewing it on an iPhone.

Generating CDISC DEFINE.XML on iPhone

The data definition or DEFINE.XML is a very useful road map to any data transfer and is particularly important in an electronic submission to the FDA. I had worked on a few projects where as we were preparing the DEFFINE.XML, the meta data or attributes of the data was constantly being updated. This can be simple changes like variable labels or more detailed comments describing how a variable is derived. In this case, it is a challenge getting the latest version of the DEFINE.XML to gain a better understand regarding the latest changes. This became the impetus for making the DEFINE.XML available via the iPhone.

The Definedoc was originally a SAS macro that only ran on a SAS server. I then adapted this to be executable on an iPhone. This will allow a user on an iPhone to dynamically execute and get the latest DEFINE.XML upon request and viewable on the go. This means that I can get the view of the latest update that my analyst has worked on at any moment even when I am on the road through my iPhone. I will illustrate how this is done through a video which you can see below.

Wednesday, October 7, 2009

Going to catch a Vietnamese American movie "Passport to Love" this weekend. It is rare to see major release like this...

Tuesday, October 6, 2009

was just invited to speak at the next SAS user group meeting on Oct 29 on How to Run SAS Macros on iPhone.
was just interviewed by for an up an coming article on running SAS Macros on iPhone.

Monday, October 5, 2009

Just received a confirmation on our first SAS iPhone App approval from Apple App Store for "BI Flash"... wooo hooo....

SAS iPhone App Approved

I just received a confirmation email from Apple's iTunes store where they process iPhone App applications. It gave me the status of "Ready for Sale" which I am interpreting that my application has been approved. There was no "Congratulation" flair but just matter of fact. The information it provided was:

Application Name: BI Flash Application Version Number: 1.0 Application SKU: 1234 Application Apple ID:327568191

When I reviewed the AppStore, it was not there. They did mention that they will process the contract and things will not be live until that is complete. After a couple of hours wait, it became live. I then found it on the App Store and installed it as:

iphone_pic by sytruongus.

I had intended to list it under our company name but somehow it has it under "sy Truong". There has been quite a few updates since the binary has been uploaded for approval as well. I will plan to update all fixes and enhancements so hope that will be updated real soon.

Saturday, October 3, 2009

Editing an article for Pharmaceutical Journal on SAS Toolkit...

Thursday, October 1, 2009

When you are out and about and just have a sudden dire need to check on your data standards on an iPhone... :)

SAS Data Attribute Standards with DIFFTEST on iPhone

One of the most common mistakes in creating data in a standard format is not adhering a standard variable attributes. Verifying this by visual inspection can be a challenge since it is easy to define one variable with a particular length or label on one dataset, while a slightly different attribute on another. This difference can be tested by what I refer to as a DIFFTEST. This can be performed as a SAS macro or on an iPhone.

So when you are out and about and just have a sudden dire need to check on your data standards. :) I have recorded a video which illustrates how this can be performed on an iPhone.

Trying to book a flight to Vietnam. If I fly out SFO on Nov 29, it is: $693 but Dec 18 is $1,255. What a difference, yikes.

Wednesday, September 30, 2009

What do you do when standing in line at Starbucks? ... why check your clinical data against CDISC standards :)

CDISC Verification on iPhone

CDISC guidelines helps clinical data comply to a standard intended for submission to the FDA so it is important to ensure that you comply with all the guidelines. If you were to review the CDISC guidelines, you will see hundred of pages of rules which your data must comply with. To do this review manually would be time consuming and most likely lead to errors due to not being able to catching the details.

The part that I find challenging about reviewing data against CDISC has to do it multiple times as data is being developed. There are times when I need to review the latest update and I am not at my desk. I have found a solution for this when I am out and about, I can review the latest data on my iPhone. This allows me to see how standardize my data is and I see the status of my CDISC effort at any moment even standing in line at Starbucks. :)

I capture a YouTube video as to how this is done which you can see below.

Monday, September 28, 2009

Performing stability analysis according to FDA guidelines on an iPhone? Sounds like an odd combination but it works.

Performing Stability Analysis on iPhone

I was finishing up performing an analysis for a client developing a SAS macro to perform stability analysis. There are some good guidelines for this since the FDA has clearly defined how this is done. I found the article on the FDA website entitled "International Conference on Harmonization (ICH) - Guidance for Industry: Q1E Evaluation of Stability Data" to be very useful. Once I was able to get a SAS macro to perform this task, the next challenge is to have this available on an iPhone so the user can access the latest analysis anywhere on their iPhone.

Rather than going into a verbose description here, I recorded a video to illustrate this to you. I find that the iPhone which is a multi-touch graphical user interface can be best explained by showing so hope you find this video useful.

Sunday, September 27, 2009

How do you use Social Networking? Here are interesting factoids on how uses of these technologies based on numbers.

Friday, September 18, 2009

2009 Annual Conference Proceedings for WUSS09 are now available at:
meeting with volenteers for VNHELP charity concert and LA last week was sold out and Santa Clara tickets almost out.
Building a data warehouse for Congress Bailout with SAS? The outliers on this analysis should be intriguing.

Tuesday, September 15, 2009

Does some one at Apple review every App sent to AppStore? My first time experience...

Does some one at Apple review every App sent to AppStore?

I recently submitted an iPhone application to the apple developer program to be approved. This was my first time so the hoops that Apple had me jump through were interesting. The initial application had general information which seems pretty normal. These included things such as:

  • Application Name: BI Flash
  • Application Description: BI Flash delivers business intelligence to information to the iPhone. It takes SAS macros, programs or data on a server and delivers this to iPhone. The user can register the programs or SAS libraries, and then make this available to specified users who can then view this through BI Flash on the iPhone. This is executed in real time so the user gets always the latest data.
  • Primary Category: Business
  • Keywords: Business Intelligence, SAS, Analytics
  • Application URL:

These seem pretty standard since they would probably use this for the AppStore. The next step is pretty interesting since it asked for me to check three categories including: None, Infrequent/Mild or Frequent/Intense. The description for the categories included:

  • Cartoon or Fantasy Violence
  • Realistic Violence
  • Sexual Content or Nudity
  • Profanity or Crude Humor
  • Alcohol, Tobacco, or Drug Use or References
  • Mature/Suggestive Themes
  • Simulated Gambling
  • Horror/Fear Themes
  • Prolonged Graphic or Sadistic Realistic Violence
  • Graphic Sexual Content and Nudity
I can see how Apple would quickly identify those high profile applications due to indecent content. I don’t want to get into the politics of how Apple screens their Apps but I just put “None” on all my applications.

I then uploaded the binary for my application along with a large 512x512 icon, a screen shot. It took Apple a couple of weeks for them to review my app. Since they receive thousands of apps, I wonder if they even check it at all. I was surprise to find out that they did do a detailed review. They found two things that they wanted to change due to that fact that “it does not adhere to the iPhone Human Interface Guidelines as outlined in the iPhone Developer Program License Agreement section 3.3.5.”

The first part is when the application is tested without a network connection; it just presented a blank screen. Apparently, I missed these guidelines which suppose to display a clear message detailing what the user is suppose to do. I created a screen that is more friendly now:

The second point is that the small icon of the application does not match the large icon.

They have very specific guidelines. I had our graphic artist work on these at different stages of the application so they appeared different so they thought it would confuse the user. I thought these suggestions were very good and I do appreciate that someone actually took the time to do a review.

I then updated the large icon as shown here:

I just submitted an updated version so they sent me a friendly but generic message that someone is reviewing it and will send me a message of any additional request. I will keep my fingers crossed but hopefully this round will take less than two weeks.

Monday, September 14, 2009

Just moved to our new office. I was able to retain the last four digit of our phone number :) The new contact:
How do I connect my iPhone to a SAS server? A four step description explains the process.

Thursday, September 10, 2009

How do you go about validating data transformed from legacy to CDISC SDTM and ADaM? Here are some recommended steps.

Validating Transformation to CDISC SDTM and ADaM

You have just finished transforming your data from your operational clinical database into SDTM and ADaM, now how do you go about validating this? In general you want to have a method that reviews both the structure according to the guidelines and the values of the data to ensure that nothing is changed from what was collected. The following steps uses SAS tools to validate and ensure the integrity of your final CDISC data.

  1. Transformation Model Validation- A transformation model documenting the source data and how it was transformed confirming the destination and source variables.

  2. Data Value Subset Review - An automated report printing out a subset of the data before and after the transformation is reviewed and validated.  This may catch truncation.

  3. Categorical Aggregate Review - An automated summary report is generated summarizing the frequency counts of categorical variables verifying the counts are the same.  This catches missing or dropped values.

  4. Continuous Aggregate Review - An automated summary report is generated summarizing the min, max median  counts of continuous variables verifying the counts are the same.  This catches missing or dropped values.

  5. CDISC Rules PROC CDISC - SAS tools such as PROC CDISC provides a short list of deviations or guidelines that may have been violated.  This review is applied programmatically and a report is generated.

  6. Variable Lengths - An evaluation of all variable lengths and a report is generated with recommendations on standardizing lengths for variables across all data to adhere to standards.

  7. Deviation Summary - A summary report documenting all deviations and their resolutions.

  8. Test Plan - A formal test plan document is used to document all the related tests and deviations.

  9. CDISC Builder Rule Test - An 18 criteria check list.  The list are shown here with an example report shown below:
    1. Required Fields: Required identifier variables including: DOMAIN, USUBJID, STUDYID and --SEQ.
    2. Subject Variable: ( For variable names, labels and comments, use the word "Subject" when referring to "patients" or "healthy volunteer".
    3. Variable Length: ( Variable names are limited to 8 characters with labels up to 40 characters.
    4. Yes/No: ( Variables where the response is Yes or No (Y/N) should normally be populated for both Yes and No responses.
    5. Date Time Format: ( Date or Datetime must be in ISO 8601 format.
    6. Study Day Variable: ( Study day variable has the name ---DY.
    7. Variable Names: (3.2.3) If any variable names used matches CDISC variables, the associated label has to match.
    8. Variable Label: (3.2.3) If any variable labels match that of CDISC labels, the associated variable has to match.
    9. Variable Type: (3.2.3) If any variables match that of CDISC variables, the associated type has to match.
    10. Dataset Names: (3.2.3) If any of the dataset names match CDISC, the associated data label has to match.
    11. Dataset Labels: (3.2.3) If any of the dataset label match CDISC, the associated dataset name  has to match.
    12. Abbreviations: (10.3.1) (10.4) The following abbreviations are suggested for variable names and data sets.


      Descriptive Text

      AEAdverse Events
      BMBone Mineral Density (BMD) Data
      CMConcomitant Meds
      DADrug Accountability
      DCDisease Characteristics
      DVProtocol Deviations
      HUHealthcare Resource Utilization
      LBLaboratory Data
      MBMicrobiology Specimens
      MHMedical History
      MLMeal Data
      MSMicrobiology Susceptibility
      OMOrgan Measurements
      PCPK Concentration
      PEPhysical Exam
      PPPK Parameters
      SCSubject Characteristics
      SESubject Elements
      SKSkin Test
      SLSleep (Polysomnography) Data
      SLSigns and Symptoms
      STStress (Exercise) Test Data
      SUSubstance Use
      SVSubject Visits
      TATrial Arms
      TETrial Elements
      TITrial Inclusion/Exclusion Criteria
      TSTrial Summary
      TVTrial Visits
      VSVital Signs
    13. SEQ Values: When the --SEQ variable is used, it must have unique values for each USUBJID within each domain.
    14. Label Casing: For Dataset labels and variable labels, all non trivial words (more than three characters) must start with a capital letter with the rest of the characters lowercase.
    15. Required Values: ( For required fields such as the ones specified in number 1, check to see if there are values.  If there are any missing, values, report the observation number where it is missing.
    16. Similar Parenthesis:  For labels with matching values inside parenthesis such as (Yes/No) within the same dataset, it will check to see if the variables have the same type and length.  If not, it will report the differences.
    17. Required Variables: ( A Required variable is any variable that is basic to the identification of a data record (i.e., essential key variables and a topic variable) or is necessary to make the record meaningful. Required variables should always be included in the dataset and cannot be null for any record.
    18. Expected Variable: ( An Expected variable is any variable necessary to make a record useful in the context of a specific domain. Columns for Expected variables are assumed to be present in each submitted dataset even if some values are null.

Wednesday, September 9, 2009

Can compact digital camera and one person replace network news? I experimented video blogging at a conference to see.

Video Interviews at WUSS 09 Conference

New media has made it possible for a non professional like me to become a reporter. I did an experiment at a recent conference in San Jose. I took my Canon Elph which is normally used for taking pictures and switch on its video mode. It is so small that members that I interviewed barely noticed it was there. I then talked to the attendees at the conference in their area of expertise similar to what I use to do in the traditional blogging days where I would write up the blog based on the interview. The difference this time is upon completion of the interview, I would upload the videos directly to YouTube and whoa.. la... there it was. I did not edit it or do anything.

I realize that while holding the camera on my hand, it was not on a tripod so it was perhaps not stable and I was looking at the person I was talking to so the composition was not optimal but this adds to the whole amateur video blogging experience. This experiment of one man on the fly reporting was interesting. I hope to do it again at future conferences.

I will include some of the videos below for your viewing.

Claire Castell

Claire Castell, Mgr. Information Mgmt| Consumer and Small Business Deposit Risk at Wells Fargo shares the history of WUSS and its name.

Marci Russell

 Marci Russel, Web Project Manager of SAS Institute talks about Online Support at WUSS 2009 conference


Lora Delwiche

Lora Delwiche author of Little SAS book shares Debugging Techniques


Art Carpenter

Art Carpenter talks about SAS Macros at WUSS 09 in San Jose Art is a consultant for Caloxy, California Occidental Consultant

Michael A. Raithel

WUSS Opening Session Keynote Address by Michael A. Raithel It's not Easy Being a SAS Programmer

Vincent Delgobbo

Vincent DelGobbo, Senior Systems Developer for web Tools Group at SAS Institute talks about SAS export to Excel XML format at WUSS.

Heather Brown

Heather Brown, Senior Recruiter, Advanced Clinical Services LLC

SAS delivered as a SAAS. Perhaps SAS can just add another "A" to their name when on the web. :)

Saturday, September 5, 2009

Can SAS Macros run on an iPhone? This video shows how it can be done with parameter selection on the iPhone.

Wednesday, September 2, 2009

Claire Castell shares the history of WUSS and how it got its name. An interview at WUSS09 in San Jose
Lora Delwiche author of Little SAS book shares Debugging Techniques at WUSS09
Marci Russell, Web Project Manager of SAS Institute talks about Online Support at WUSS09 conference

Tuesday, September 1, 2009

Art Carpenter talks about SAS Macros at WUSS09 and his fifth book in San Jose. I interviewed him in training room:
Michael Raithel delivers keynote address at WUSS09 in San Jose. Video clip available here:
Vincent DelGobbo talks about how BASE SAS can export data to MS Excel in XML format. Interview at WUSS09
Attending WUSS09 in San Jose. Experimenting with video interview with my friend Heather Brown.

Sunday, August 30, 2009

Just recorded a video on how you can view a SAS dataset on an iPhone.

Saturday, August 29, 2009

Heading to Fairmont hotel in San Jose for WUSS conference. Trying to stay cool from south bay heat. :)

Friday, August 28, 2009

Preparing to teach CDISC Course and present new SAS iPhone App and conduct workshop at WUSS

Thursday, August 27, 2009

SAS Macro Ran with ERRORs on my iPhone. How SAS Logs can Help...

My SAS Macro Ran with ERRORs on iPhone. The Beauty of SAS Log

SAS macros are script files that execute SAS instructions similar to other SAS programs.  It is commonly used to automate tasks since the macros can perform repeated tasks with parameters that can be selected by the user.  On the iPhone, this can appear as a list screen with selection choices so the macro can be performed on the server from the selected values on the iPhone.  The SAS programmer that loads the macro on the server will configure the macros with different type of parameter selection type including the following examples:
  1. On Off Selector
    These are similar to check boxes where it can be set to on (checked) or off (unchecked).

  2. Short Text and Passwords
    The single text entry allows users to enter any text value to the entry.  A similar entry type is the password which will mask the entry so that the text is hidden.

  3. Check List
    This include a check list where the user can select one value from a list of valid values.

  4. Text Auto fill 
    This allows users to enter text but provides a list of valid values to choose from if what the user typed matches what is in the valid list of values.

  5. Date Time
    These are preset valid date and time selections.  This uses a spin controller with preset for date and time.

  6. Distinct Value Spin Control
    The spinner control can combine values from multiple data sources to then formulate one value.  The date and time above illustrates three spinners while this price range illustrates two.  You can have it show one to four spinner controls.

In the case of a macro, the parameters of the macro will correspond to a selection by one of the controllers above. The values of the controller are populated by values from a dataset stored on the server.

Macro Selection
The macros are stored in libraries which correspond to folders on the server.  If you have been granted permissions, you would be able to select the library and then view all the macros in the selected library. 


Each macro will have a macro short name which is also the name of the file on the server followed by a longer label.  The user can select it by selecting anywhere on the row corresponding to the macro.  If you wish to select macros from a different library, you can select the library displayed at the top.

Once you select the library, you can then return back to the Macros screen by selecting the "Macros" navigation button at the top.

Executing Macros
Once you have selected the macro, you will then be presented with all the parameter selection pertaining to the macro.  You can scroll down if this extends beyond one screen.   


Upon completion of selecting all parameters, you can then click on the "Run" button on the upper right.  This will enter all selected values and execute the macro.  If thee macro has an error, then the log is displayed.


If the macro runs successfully, then the results will be displayed.  Results can be in one of the standard SAS output format including: ASCII (LST), PDF, HTML, Excel (XLS), MSWord (DOC).  An example very simple SAS ASCII LST output is shown below.

Monday, August 24, 2009

It looks like today is the last day to register for the WUSS conference. I am such a wussie and wait until 11:58 pm :)
Who are artists performing at a benefit concert in September? I started a new blog for this good cause.

Sunday, August 23, 2009

Social Media Revolution? hm.... I just saw this video which purports that we are in the midst of a revolution.

Friday, August 21, 2009

What a challenge keeping data standards for the latest CDISC guidelines. These are findings even for standards group.
How do you view SAS datasets on an iPhone? You chunk it....

How do you view SAS datasets on an iPhone? You chunk it.

Data Overview
SAS datasets are stored in libraries on the server similar to how files are stored in folders. Each library is associated with a different folder on the server which contains one or more datasets. You then have the option of selecting the library which contains datasets you wish to view. The screen that lists the available datasets can be accessed through the "Dataset" navigational button at the bottom of your screen.

This will list all the available SAS dataset from the specified library. You can then view the contents of the data by selecting on dataset from the list. This is accomplished by tapping anywhere on the row of the displayed dataset name.

Selecting Data
The main dataset screen displays all datasets that you have access to in the specified library. The list displays a short dataset name followed by the more descriptive dataset label below each dataset. You can select a different library by selecting the library name at the top of the dataset view to display the library selection screen as shown here:

Once you select the library, you can then return back to the main Dataset screen by selecting the "Datasets" navigation button at the top. From the list of datasets on the dataset screen, you can view the data by selecting anywhere on the entire row of the dataset name and label. This will then navigate you to the dataset view screen which displays the detail values of the dataset.

The libraries and user access to the libraries are similar to how SAS libraries are created with LIBNAME but managed in the library management tools by an administrator.

Viewing Data
SAS datasets can be very large. BI Flash will break down the data into viewable screens of 20 rows at a time. Upon the selection of the dataset from the main dataset screen, you will be brought to the data viewer.

You can navigate to specific observation of the data by selecting the navigational next and back arrow buttons at the bottom of the viewer. The slider also allows you to quickly jump to a specific segment of the data quickly. You can also tap on the current observation number (1-20) to then be presented with a list of the data chunks. This allows you to navigate across larger sets of data.

The list of "chunks" of data can be scrolled through by swiping vertically. This will allow you to scroll through the entire observation list and select on the specific chink of data to be viewed. Upon selection, it will display data viewer with the data with selected observations.

You can also configure how the variables are to be displayed. These options are available through the button shown here:

This button is a toggle which flips the screen between the data
viewer and the configuration screen shown below:

The options include the following.

  1. Formatted - This will apply any SAS formats or user defined format with the associated format catalog upon the view of the data.

  2. Variable Attributes - This will display the variable label, length and related attributes similar to what you would see in a PROC CONTENTS.

  3. Variable Names - The column header will display the variable name as part of the title.
  4. Variable Label - The column header will display the variable label as part of the title.
  5. Data Block - Defines the chunk size of the data which will be viewed to optimize viewing experience for large datasets

More details are available at BI Flash User Manual....

Thursday, August 20, 2009

Our CDISC team is debating between two DEFINE.XML styles: Green or Minimal. Which one do you like?

Wednesday, August 19, 2009

How do you have SAS macro parameters display on the iPhone? The iPhone has some unique new GUI controllers.

Tuesday, August 18, 2009

Its nice to still get snail mail call for papers for SAS Global Forum in this day and age. :)

Friday, August 14, 2009

Finalizing DEFINE.XML for CDISC SDS Metadata Team. Almost there. The latest version can be viewed at:

Tuesday, August 11, 2009

Preparing to teach CDISC class tomorrow in San Jose. Looking forward to CDISC enlightment… :)

Monday, August 10, 2009

Most Overlooked Variable Length Error for SAS CDISC Data, Why do electronic submissions fail?

Most Overlooked Variable Length Error for SAS CDISC Data

The FDA review of an electronic submission requires the merging of submitted data to confirm that the source produces the same aggregate results of the submitted summary analysis. This can only be accomplished if there are clearly defined keys between the datasets and that the keys have standard attributes. A common error that would occur is that the length of the key fields is slightly different. For example, the study identifier (STUDYID) of one set of data is set to length of 7 and another is set to 10. When the two sets are merged, some of the variable values will be truncated leading to errors. An evaluation if key field lengths are crucial in standardizing the key field lengths.

CDISC standards are very helpful in getting the variable attributes such as names and labels standardized. It however, does not enforce the standards of lengths leaving it up to you to evaluate and come up with the correct length for each study submitted. The following steps are recommended to standard your key field lengths to avoid truncation errors.

Step 1
Identify all datasets within all your studies being submitted that contains the same variables. An example is that you are submitting three studies and each study has about 15 datasets. In this case, there are common variables such as STUDYID, DOMAIN, USBJID that are in more than one dataset. If any variable that exist in more than one dataset, they should be included in this analysis.

Step 2
Determine the longest character length value of each variable across all datasets. So for example, if your verbatim variable AETERM has a text value with the longest length of 45 characters on one dataset and 59 characters on another, you would note the 59. The goal is to evaluate all the data values and determine the longest length across all your data.

Step 3
Set the maximum length that will be the standard across all dataset. In the above example, you can set the maximum to be 59 but it may be a better standard to round the length so 60 would be a better standard. In this case, all variables AETERM across all your studies will be set to 60.

An example report shown above illustrates all the variables across three studies. This report is produced by a macro %varlen that automate the evaluation and assignment of the variable lengths. The standardization will prevent errors in your merging of keys but it can also significantly reduce the size of your SAS datasets. Without performing this evaluation, you may just set the variable to be the maximum length of 200 characters. In that case, SAS allocates this and creates very large datasets even though your data values never reach this length. Your standardization effort will result in efficient smaller datasets and allows FDA reviewers using tools such as JMP among other software without causing errors.