tag:blogger.com,1999:blog-28410184522043330722023-05-04T08:03:28.511-07:00Biotech Manufacturing Software & SupportOLYhttp://www.blogger.com/profile/18111167675345949662[email protected]Blogger215125tag:blogger.com,1999:blog-2841018452204333072.post-44395958754380375232023-04-26T10:54:00.003-07:002023-04-26T11:09:34.896-07:00RIP, JPK<p><span color="rgba(0, 0, 0, 0.9)" face="Helvetica, Arial, sans-serif" style="background-color: white; white-space: pre-wrap;">I found out yesterday that </span><a href="https://www.forevermissed.com/dr-jpatrick-kennedy/about" rel="nofollow" style="font-family: Helvetica, Arial, sans-serif; white-space: pre-wrap;">Pat Kennedy passed away</a><span color="rgba(0, 0, 0, 0.9)" face="Helvetica, Arial, sans-serif" style="background-color: white; white-space: pre-wrap;">.</span></p><p style="--artdeco-reset-typography_getfontsize: 1.6rem; --artdeco-reset-typography_getlineheight: 1.5; background-color: white; border: var(--artdeco-reset-base-border-zero); box-sizing: border-box; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: Helvetica, Arial, sans-serif; font-size: var(--font-size-large); line-height: 1.75; margin: 1.6rem 0px; padding: 0px; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); white-space: pre-wrap;">When I met Pat in the early 2000s, he was a quiet, spry gentleman about a decade older than I am now. He was the owner/founder of OSIsoft, the then-largest private software company in the SF Bay Area that you never heard of... unless you work in manufacturing.</p><p style="--artdeco-reset-typography_getfontsize: 1.6rem; --artdeco-reset-typography_getlineheight: 1.5; background-color: white; border: var(--artdeco-reset-base-border-zero); box-sizing: border-box; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: Helvetica, Arial, sans-serif; font-size: var(--font-size-large); line-height: 1.75; margin: 1.6rem 0px; padding: 0px; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); white-space: pre-wrap;">Even if you've neither heard of him nor his company, his life's work has probably impacted you. He wrote the software that captures, archives, and retrieves time-series data... instrument data. </p><div class="separator" style="clear: both; text-align: justify;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhUrNjCsWx4vepvvUX7fTDS_Fu7iSK01adfLkuS2KaDhBndFS8rqQOf5QWrhEI9kSvBJWopm0I7ZI47LqnvBuj3gUfwslA_1o7TE7pm7Jh1sPEvIFtH9EgrGvd2UICLaTbHIec2Jyj07k5Mv6FBjiggZYjkGzEc2idBt3bSihXHMkf4l7sdG2z0mAo/s600/pi-caliso.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="349" data-original-width="600" height="233" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhUrNjCsWx4vepvvUX7fTDS_Fu7iSK01adfLkuS2KaDhBndFS8rqQOf5QWrhEI9kSvBJWopm0I7ZI47LqnvBuj3gUfwslA_1o7TE7pm7Jh1sPEvIFtH9EgrGvd2UICLaTbHIec2Jyj07k5Mv6FBjiggZYjkGzEc2idBt3bSihXHMkf4l7sdG2z0mAo/w400-h233/pi-caliso.png" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: justify;"><br /></div><p style="--artdeco-reset-typography_getfontsize: 1.6rem; --artdeco-reset-typography_getlineheight: 1.5; background-color: white; border: var(--artdeco-reset-base-border-zero); box-sizing: border-box; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: Helvetica, Arial, sans-serif; font-size: var(--font-size-large); line-height: 1.75; margin: 1.6rem 0px; padding: 0px; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); white-space: pre-wrap;">The app opened on nearly every monitor (and the massive display) is PI ProcessBook, the face of the software that he created: PI. And in my world, PI is used everywhere.</p><p style="--artdeco-reset-typography_getfontsize: 1.6rem; --artdeco-reset-typography_getlineheight: 1.5; background-color: white; border: var(--artdeco-reset-base-border-zero); box-sizing: border-box; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: Helvetica, Arial, sans-serif; font-size: var(--font-size-large); line-height: 1.75; margin: 1.6rem 0px; padding: 0px; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); white-space: pre-wrap;">At my second job, I was the fermentation engineer at Genentech's Vacaville site. And my first day on the job, my boss - Jesse Bergevin - pulls up PI ProcessBook and tells me that my job is read these squiggles on the screen and divine what is happening in each of the bioreactors. </p><div class="separator" style="clear: both; text-align: justify;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirSWdlyJWwafPi35ywGLWNK6_P0H9Y_Gn2GkObN189l1jWrBQxL-GYKEpusnFJDwNqJ9bFjA7W_L40nnb5yWO--uF_Eet79okLILb2ujos6fLpeaIsJj4gnQUzWKSY9ZLe2y14L0l4Pm6f-eVLh-wukUSqFkq1pAQb2WoH4ElWudYIyIwXeI4YLzVW/s600/combined-image.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="265" data-original-width="600" height="177" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirSWdlyJWwafPi35ywGLWNK6_P0H9Y_Gn2GkObN189l1jWrBQxL-GYKEpusnFJDwNqJ9bFjA7W_L40nnb5yWO--uF_Eet79okLILb2ujos6fLpeaIsJj4gnQUzWKSY9ZLe2y14L0l4Pm6f-eVLh-wukUSqFkq1pAQb2WoH4ElWudYIyIwXeI4YLzVW/w400-h177/combined-image.png" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: justify;"><span color="rgba(0, 0, 0, 0.9)" face="Helvetica, Arial, sans-serif" style="background-color: white; text-align: left; white-space: pre-wrap;">So from 1999 to 2004, every day of my life, I pulled up this app and did my job. </span></div><p style="--artdeco-reset-typography_getfontsize: 1.6rem; --artdeco-reset-typography_getlineheight: 1.5; background-color: white; border: var(--artdeco-reset-base-border-zero); box-sizing: border-box; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: Helvetica, Arial, sans-serif; font-size: var(--font-size-large); line-height: 1.75; margin: 1.6rem 0px; padding: 0px; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); white-space: pre-wrap;">In 2003, I met Pat for the first time at his annual PI User's Conference in Monterey, California. He rents out the Monterey Bay Aquarium in the evening and throws a huge bash. A group of us were walking back to the hotel all tipsy and I recall asking him why he doesn't take OSIsoft public. <span style="font-size: var(--font-size-large);">He responded simply, "Well, you see, Oliver, if I go public, that means I get a new boss... and to be frank, I don't want a new boss; I like my current boss just fine." This was the first of many words that would shape my worldview. </span></p><p style="--artdeco-reset-typography_getfontsize: 1.6rem; --artdeco-reset-typography_getlineheight: 1.5; background-color: white; border: var(--artdeco-reset-base-border-zero); box-sizing: border-box; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: Helvetica, Arial, sans-serif; font-size: var(--font-size-large); line-height: 1.75; margin: 1.6rem 0px; padding: 0px; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); white-space: pre-wrap;"><span style="font-size: var(--font-size-large);">Our paths would cross again the following year when I was a speaker at one of the conference sessions and of all the talks to attend during my time slot, Pat came to mine!</span></p><p style="--artdeco-reset-typography_getfontsize: 1.6rem; --artdeco-reset-typography_getlineheight: 1.5; background-color: white; border: var(--artdeco-reset-base-border-zero); box-sizing: border-box; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: Helvetica, Arial, sans-serif; font-size: var(--font-size-large); line-height: 1.75; margin: 1.6rem 0px; padding: 0px; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); white-space: pre-wrap;"><span style="font-size: var(--font-size-large);">So I already knew from Herb Boyer &amp; Bob Swanson - the founders of Genentech, that to change the world and get rich (or die trying), you had to be a founder. J. Patrick Kennedy confirmed this for me. </span></p><p style="--artdeco-reset-typography_getfontsize: 1.6rem; --artdeco-reset-typography_getlineheight: 1.5; background-color: white; border: var(--artdeco-reset-base-border-zero); box-sizing: border-box; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: Helvetica, Arial, sans-serif; font-size: var(--font-size-large); line-height: 1.75; margin: 1.6rem 0px; padding: 0px; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); white-space: pre-wrap;">Around the same time, I was reading the book Rich Dad, Poor Dad. In the book, Robert Kiyosaki tells the story of his mentor: Rich Dad, and his father: Poor Dad. That if you live in an environment/mindset you don't like, and you see an environment or mindset that you do like, you need to go find someone with that better mindset and get them to be your mentor. Expecting to get rejected, I fired off a doomed email asking Pat to be my mentor:</p><div class="separator" style="clear: both;"><div class="gmail_attr" dir="ltr" style="background-color: white; color: #222222; font-size: small;"><span style="font-family: courier;">---------- Forwarded message ---------<br />From:&nbsp;<strong class="gmail_sendername" dir="auto">Oliver Yu</strong>&nbsp;<br />Date: Fri, Jun 24, 2005 at 1:42 PM<br />Subject: mentor<br />To: &lt;[email protected]&gt;</span></div><span style="font-family: courier;"><br style="background-color: white; color: #222222; font-size: small;" /><span style="background-color: white; color: #222222; font-size: small;">Hi Pat -</span><br style="background-color: white; color: #222222; font-size: small;" /><br style="background-color: white; color: #222222; font-size: small;" /><span style="background-color: white; color: #222222; font-size: small;">I am wondering if you would be my mentor.&nbsp; I have been reflecting on&nbsp;</span><span style="background-color: white; color: #222222; font-size: small;">where I want to be down the road, and I think that there is no better&nbsp;</span><span style="background-color: white; color: #222222; font-size: small;">way of getting to my final destination than to seek the&nbsp; instruction of&nbsp;</span><span style="background-color: white; color: #222222; font-size: small;">those who have arrived.</span><br style="background-color: white; color: #222222; font-size: small;" /><br style="background-color: white; color: #222222; font-size: small;" /><span style="background-color: white; color: #222222; font-size: small;">As a start, I'd like to hear you tell your story.&nbsp; I want to know the&nbsp;</span><span style="background-color: white; color: #222222; font-size: small;">tough decisions you faced as you founded OSIsoft and the actions you&nbsp;</span><span style="background-color: white; color: #222222; font-size: small;">took.&nbsp; How much was instinct, how much was luck?&nbsp; What would you&nbsp;</span><span style="background-color: white; color: #222222; font-size: small;">differently if any?&nbsp; And I suppose as I move forward with my&nbsp; pursuits,&nbsp;</span><span style="background-color: white; color: #222222; font-size: small;">I'd like to check in with you on your opinion of how I am doing.</span><br style="background-color: white; color: #222222; font-size: small;" /><br style="background-color: white; color: #222222; font-size: small;" /><span style="background-color: white; color: #222222; font-size: small;">I guess for now, I'm asking to buy you dinner and an opportunity to&nbsp;</span><span style="background-color: white; color: #222222; font-size: small;">sell you on being my mentor.&nbsp; And if things seem right, we can proceed&nbsp;</span><span style="background-color: white; color: #222222; font-size: small;">on a basis that meets your schedule.</span><br style="background-color: white; color: #222222; font-size: small;" /><br style="background-color: white; color: #222222; font-size: small;" /><span style="background-color: white; color: #222222; font-size: small;">Sincerely,</span><br style="background-color: white; color: #222222; font-size: small;" /><span style="background-color: white; color: #222222; font-size: small;">Oliver</span></span></div><p style="--artdeco-reset-typography_getfontsize: 1.6rem; --artdeco-reset-typography_getlineheight: 1.5; background-color: white; border: var(--artdeco-reset-base-border-zero); box-sizing: border-box; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: Helvetica, Arial, sans-serif; font-size: var(--font-size-large); line-height: 1.75; margin: 1.6rem 0px; padding: 0px; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); white-space: pre-wrap;">Pat responded:</p><div class="gmail_attr" dir="ltr" style="background-color: white; color: #222222; font-size: small;"><span style="font-family: courier;">---------- Forwarded message ---------<br />From:&nbsp;<strong class="gmail_sendername" dir="auto">Pat Kennedy</strong>&nbsp;<span dir="auto">&lt;[email protected]&gt;</span><br />Date: Sat, Jun 25, 2005 at 9:54 AM<br />Subject: RE: mentor<br />To: Oliver Yu&nbsp;<br /></span></div><p style="--artdeco-reset-typography_getfontsize: 1.6rem; --artdeco-reset-typography_getlineheight: 1.5; background-color: white; border: var(--artdeco-reset-base-border-zero); box-sizing: border-box; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-size: var(--font-size-large); line-height: 1.75; margin: 1.6rem 0px; padding: 0px; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); white-space: pre-wrap;"><span style="font-family: courier;"><span style="color: #222222; font-size: small; white-space: normal;">Interesting request - can you tell me more about what you want to</span><br style="color: #222222; font-size: small; white-space: normal;" /><span style="color: #222222; font-size: small; white-space: normal;">accomplish?&nbsp; I am always up for a dinner with a customer, particularly&nbsp;</span><span style="color: #222222; font-size: small; white-space: normal;">ones that give presentations about how great we are.</span><br style="color: #222222; font-size: small; white-space: normal;" /><br style="color: #222222; font-size: small; white-space: normal;" /><span style="color: #222222; font-size: small; white-space: normal;">Pat</span></span></p><p style="--artdeco-reset-typography_getfontsize: 1.6rem; --artdeco-reset-typography_getlineheight: 1.5; background-color: white; border: var(--artdeco-reset-base-border-zero); box-sizing: border-box; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: Helvetica, Arial, sans-serif; font-size: var(--font-size-large); line-height: 1.75; margin: 1.6rem 0px; padding: 0px; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); white-space: pre-wrap;">And so, on June 29, 2005, I drove to San Leandro where he gave me words that I couldn't possibly understand. Only decades later did any of that mean anything to me... the few things that stand out in retrospect:</p><p style="--artdeco-reset-typography_getfontsize: 1.6rem; --artdeco-reset-typography_getlineheight: 1.5; background-color: white; border: var(--artdeco-reset-base-border-zero); box-sizing: border-box; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: Helvetica, Arial, sans-serif; font-size: var(--font-size-large); line-height: 1.75; margin: 1.6rem 0px; padding: 0px; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); white-space: pre-wrap;"></p><ul><li>He never set out to be a founder/software mogul. He was a real estate investor. OSIsoft was his&nbsp;<i>job</i>; real estate was his&nbsp;<i>business</i>.</li><li>He understands the root of his success.</li><ul><li>DuPont had published and given away data compression algorithms.</li><li>His business partner encouraged him to start a consulting firm using these algos.</li><li>He knew to pivot from software to consulting when his customers kept demanding his software and less his consulting</li></ul><li>He understood that his success was a combination of skills, money, luck and serendipity: and that he isn't sure - with immense success - that he could repeat it.</li></ul>In September of that year, Pat wanted to take his daughter on a tour of several PI systems (funny he didn't tour facilities, he "toured PI systems"). He shows up carrying a manila folder with two images and wanted to show me:<p></p><p style="--artdeco-reset-typography_getfontsize: 1.6rem; --artdeco-reset-typography_getlineheight: 1.5; background-color: white; border: var(--artdeco-reset-base-border-zero); box-sizing: border-box; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: Helvetica, Arial, sans-serif; font-size: var(--font-size-large); line-height: 1.75; margin: 1.6rem 0px; padding: 0px; vertical-align: var(--artdeco-reset-base-vertical-align-baseline); white-space: pre-wrap;"></p><ol><li>Picture of Arnold Schwarzenneger standing in the mission control room of the California ISO with PI ProcessBook opened in the background.</li><li>Satellite image of land that he acquired</li></ol><div>I recall him saying that those two images represent his pride and joy: OSIsoft and real estate.&nbsp; But it wasn't just about the success. It was about his values. He seemed to do things his way. The values that he imbued into his company culture. The people that worked for him were fiercely loyal and loved him dearly.</div><div><br /></div><div>Ultimately, I would start a consulting business... like Pat.</div><div>Ultimately, I would pivot that business to software... like Pat.</div><div>Ultimately, I would become a founder and reach high levels of success... like Pat.</div><div><br /></div><div>My deep condolences to the Kennedy family and the OSIsoft PI community. Godspeed, Pat. May you rest in peace.</div>OLYhttp://www.blogger.com/profile/18111167675345949662[email protected]0tag:blogger.com,1999:blog-2841018452204333072.post-50558562729343888842016-10-05T14:45:00.002-07:002016-10-05T14:45:59.792-07:00Test-Driven Development and GAMP<div dir="ltr" style="text-align: left;" trbidi="on"> In the world of software development, there's a development methodology called, "Test-Driven Development" aka ("TDD") where you basically write the test BEFORE you write the actual functional code. &nbsp;There are other tenants of TDD, but the notion that you write the test first is the main focus here.<br /> <br /> By writing the test first, it forces you to look to see where your "goal posts" are.<br /> &nbsp;<br /> I actually have no opinion on TDD other than to point out that it exists, and there are some principles with strong parallels in the FDA-regulated markets with respect to computer system validation.<br /> <br /> The <a href="https://en.wikipedia.org/wiki/V-Model">V-Model</a> refers to the way in which (software) systems are validated and verified:<br /> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e8/Systems_Engineering_Process_II.svg/630px-Systems_Engineering_Process_II.svg.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="177" src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e8/Systems_Engineering_Process_II.svg/630px-Systems_Engineering_Process_II.svg.png" width="320" /></a></div> The only reason (I can think of) for why this is called a "V-model" is because someone is being clever with the Verification and Validation. &nbsp;But I digress.<br /> <br /> The point of the V-model is that someone actually went through and documented what the users/stakeholders wanted. &nbsp;Then, they went through and figured out what functions match with those user/stakeholder desires. &nbsp;THEN, they went through and figured out how to make those functions happen:<br /> <br /> <ul style="text-align: left;"> <li>User Requirement Specification (URS)</li> <li>Functional Specification (FS)</li> <li>Detailed Design Specification (DDS)</li> </ul> <div> That's the downstroke of the V.</div> <div> <br /></div> <div> The upstroke is the part where you go about proving that what you designed actually made it into the actual system. &nbsp;And the functions you said are available are actually available:</div> <div> <br /></div> <div> So in the world of computerized system validation (CSV, not comma-separated variable), the Installation Qualification (IQ) is what verifies that the items of the detailed design got into the system. &nbsp;So the battery of tests that prove the correct software configuration was inputted. &nbsp;</div> <div> <br /></div> <div> Operational Qualification (OQ) is the battery of tests that prove that the functions specified perform as specified. &nbsp;For example, if your functional specification says that your impeller speed has to operate between 60 to 255 rpm, you should have a test in your OQ that runs the impeller at the boundary and within that operating range.</div> <div> <ul style="text-align: left;"> <li>Installation Qualification</li> <li>Operational Qualification</li> </ul> </div> <div> So what does any of this have to do with test-driven design? &nbsp;Well, anyone who has validated a computer system knows that for the most part, the V is executed exactly as it's drawn: first the downstroke, then the upstroke:</div> <div> <br />You first write the URS, then the FS, then the DDS. &nbsp;After this planning phase is over, there's the testing phase during which time you draft the IQ, OQ (and sometimes PQ). &nbsp;And by the time you get to executing these tests, you may find nonsensical tests or deviations. &nbsp;</div> <div> <br /></div> <div> And the reasons may be that you ran into these issues is because you didn't start with the tests (IQ/OQ) first. &nbsp;</div> <div> <br /></div> <div> The TDD methodology is saying that you start with the URS (what the stakeholders/users want). &nbsp;Then you skip ahead and write what a passing test looks like (IQ and OQ). &nbsp;Then you go backwards and fill out the specification and perform the build.</div> <div> <br /></div> <div> The thinking seems backwards on first-pass, but it isn't without merit.</div> <div> <br /></div> <div> <br /></div> </div> OLYhttp://www.blogger.com/profile/18111167675345949662[email protected]0tag:blogger.com,1999:blog-2841018452204333072.post-27739177585251191152016-09-28T11:13:00.000-07:002016-11-02T11:15:26.133-07:00Tes(u)la Model X Ownership - Day 1<div dir="ltr" style="text-align: left;" trbidi="on"> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://1.bp.blogspot.com/-w4wsSRsHcak/WBoq1MKnGRI/AAAAAAAAAf4/toGYBAp2ZRIdtKvKkLj-C1kUHmD5g8c8wCLcB/s1600/tesla-model-x-day-1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://1.bp.blogspot.com/-w4wsSRsHcak/WBoq1MKnGRI/AAAAAAAAAf4/toGYBAp2ZRIdtKvKkLj-C1kUHmD5g8c8wCLcB/s320/tesla-model-x-day-1.JPG" width="320" /></a></div> Today was the day I picked up my Tesla Model X from the showroom. &nbsp;The showroom spartan as they were clearing out inventory for end-of-Q3.<br /> <br /> Paperwork was pretty slender since all the preparation happened up front, and I got in and out in about an hour.<br /> <h3> Initial Impression</h3> The new car smell is very strong with this car. &nbsp;Some people love it; I dislike it. &nbsp;Very dizzying.<br /> <br /> What's also dizzying is the regenerative braking which comes with in 2 flavors: Standard vs Low. &nbsp; Coming from an automatic car, LOW is what you're going to be most used to, but since you're not capturing as much juice, this overall decreases the range of the EV. &nbsp;Standard takes a bit of getting used to. &nbsp;My test-drive was much the same. &nbsp;Standard basically means that the moment you let off the accelerator pedal, you're not coasting... you're actually braking. &nbsp;So if you're used to coasting in either a regular car or in a hybrid vehicle, this is going to noticeably jolt you forward everytime you abruptly let off the gas.<br /> <br /> Between the new car smell and the STANDARD regenerative braking, it was a woozy day.<br /> <h3> Key Fob</h3> The Key Fob seems over-designed. &nbsp;It looks like a palm-sized plastic version of your car missing what designers call, "Affordance"... obvious things to press. &nbsp;Key fob looks like some sort of voodoo doll for the car. &nbsp;You press the front and the front-trunk opens up. &nbsp;You press the back and the rear hatchback doors open up. &nbsp;You press the <i>windows</i> and the Falcon-Wing doors open. &nbsp;Oddly, you press the hood of the car and it locks the car. &nbsp;Haven't tried stabbing it with a needle to see if the car screeches in pain.<br /> <br /> And while there are power-doors on the driver and navigator doors, there's no way to open those doors using the key fob.<br /> <h3> Affordance</h3> An affordance is the possibility of an action on an object or environment. Additional meanings have developed, largely a result of misinterpretations. The original definition in psychology includes all actions that are physically possible.<br /> <br /> So the convention with all doors (since the beginning of cars) is that you pull on it to open. &nbsp;You push it to shut. &nbsp;The Model X has this crazy thing where you push on this bar to open the door. <br /> <br /> There are 2 User Experience principles being violated here (as I understand it from <a href="http://www.givegoodux.com/">Joe Natoli at Give Good UX</a>):<br /> <br /> Tesla has gone against convention. &nbsp;Now, being conventional isn't all that great. &nbsp;But convention is hard for users to break, so if you're going to go against convention, you ought to have a really good reason to do it.<br /> <br /> Tesla has also gone against the user experience principle of affordance. &nbsp;The possibility of action is an open door that comes towards you if you're on the outside of the car. &nbsp;Pushing is the action going towards in the inside of the car.<br /> <br /> For now, I'm going to trust that this is only a cursory violation of good user experience principles and that there are good reasons for it.<br /> <br /> <br /> <div> <br /></div> </div> OLYhttp://www.blogger.com/profile/18111167675345949662[email protected]0tag:blogger.com,1999:blog-2841018452204333072.post-65499982440008620032015-07-15T13:42:00.001-07:002015-07-15T13:42:28.418-07:00Elon Musk's Advice for Entrepreneurs<div dir="ltr" style="text-align: left;" trbidi="on"> <div class="separator" style="clear: both; text-align: center;"> <iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/0Bo-RA0sGLU/0.jpg" src="https://www.youtube.com/embed/0Bo-RA0sGLU?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div> <div class="separator" style="clear: both; text-align: center;"> Without comment, because no one says it better than Elon.</div> <br /></div> OLYhttp://www.blogger.com/profile/18111167675345949662[email protected]0tag:blogger.com,1999:blog-2841018452204333072.post-8891064210283660142015-06-04T14:31:00.000-07:002015-06-04T14:31:10.794-07:00What do you call doing the same thing over and over and GETTING different results?<div dir="ltr" style="text-align: left;" trbidi="on"> <div class="separator" style="clear: both; text-align: center;"> <a href="http://2.bp.blogspot.com/-IPGBmofvjFc/VXDDbMEeLDI/AAAAAAAAARM/nQz800BW-7Q/s1600/zymergi-doing-same-thing-over-and-over.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-IPGBmofvjFc/VXDDbMEeLDI/AAAAAAAAARM/nQz800BW-7Q/s1600/zymergi-doing-same-thing-over-and-over.jpg" /></a></div> <br /></div> OLYhttp://www.blogger.com/profile/18111167675345949662[email protected]1tag:blogger.com,1999:blog-2841018452204333072.post-44116623219657603502015-06-03T11:18:00.000-07:002015-07-02T12:59:40.570-07:00Controllable Parameters of Mammalian Cell Culture<div dir="ltr" style="text-align: left;" trbidi="on"> <div style="float: left;"> <img alt="Albert Einstein" src="http://upload.wikimedia.org/wikipedia/commons/d/d3/Albert_Einstein_Head.jpg" style="padding-bottom: 10px; padding-left: 0px; padding-right: 10px; padding-top: 0px; width: 200px;" /> </div> <br /> Einstein famously said:<br /> <blockquote> Insanity [is] doing the same thing over and over again and expecting different results.</blockquote> Which got me thinking...<br /> <br /> <b>Question:</b> Is there such a thing as doing the same thing over and over again and <b><i>getting</i></b> different results?<br /> <br /> <b>Answer:</b> Biotech Manufacturing<br /> <br /> Rob Caren once asked: "How hard can (large-scale) cell culture be? It's ONE unit operation."<br /> <br /> He also observed that large-scale chromatography shouldn't be that hard either:<br /> <ul style="text-align: left;"> <li>Send the pool through that fixed-bed reactor.</li> <li>When the optical density is not zero shut this valve and open that valve.</li> <li>Try not to send product to drain.</li> </ul> <div> On both counts, he's right, but I can only speak to the cell culture side.<br /> <br /> When running bioreactors, there are a few parameters that are within your control. These parameters are sometimes called "knobs" because the production team can literally go to the control system and "turn a knob" (or click a few buttons on the SCADA) to change the parameter.<br /> <br /> For the bioreactor or fermentor, those knobs are:<br /> <br /> <b>pH.</b> The intracellular pH is known to change the activity of enzymes that run the rates of metabolic reactions. Since cells regulate intracellular pH, the best you can do is to control the extracellular pH. In reality, the pH for the process is specified. And if specified well, the specification will come with a target range and a proven acceptable range. At commercial scale, you ought to be able to operate within the proven acceptable range. For more information on pH control in mammalian cultures, see <a href="http://blog.zymergi.com/2012/05/mammalian-cell-culture-environment-ph_28.html">this</a>.<br /> <br /> <b>Dissolved oxygen.</b> Maximizing cellular productivity means aerobic metabolism. From university biochemistry, we know that anaerobic metabolism produces far less energy (2 ATP) than aerobic metabolism (38 ATP). We also know from chemistry that the solubility of oxygen in water is quite low (&lt;10 mg/L when temperature &gt; 15 degC). Therefore, it is important that the bioreactor supplies oxygen. Some bioreactors supply air and others supplement with oxygen. While the dissolved oxygen range is typically specified by the process, the air supply, air/oxygen mix, flow rates and sparge-type can be determined by the facility. As previously <a href="http://blog.zymergi.com/2012/06/mammalian-cell-culture-do2-control.html">discussed</a>, dissolved oxygen depends on other parameters such as agitation and temperature and can be changed within the specified range.<br /> <br /> <b>Temperature.</b> Temperature control happens with the bioreactor jacket where water is flowed around the outside surface of the bioreactor. When the temperature gets too hot, the control system sends cooler water; and when the temperature of the culture gets too cold, the control system sends hotter water. While temperature is typically specified, there are processes that will intentionally cool the culture to reduce the rate of metabolic reactions and extend culture viability. Also, since temperature is defined in a range, the setpoint is a turnable knob.<br /> <br /> <b>Agitation. </b> Agitation is typically not specified by the process, just that the cells must be suspended (i.e. not settled on the bottom of the bioreactor).&nbsp; In practice agitation rate is determined by power-to-volume calculations and stays constant for the bioreactor, nonetheless, this is a manipulatable parameter when running bioreactors.<br /> <br /> <b>Timing of Inoculation. </b> Inoculation density is often specified by the process. But there's no way to "dial down" or "dial up" inoc density in a control system somewhere like you can with pH, dissolved oxygen, temperature and agitation. When cells grow, the cell density naturally increases, so the way to control inoculation density is to time it (i.e. wait vs. not wait).<br /> <br /> <b>Timing of feeds.</b> In fed-batch cultures, additional nutrients are added to the culture. The additional nutrients tend to increase the osmolality and the additional volume can help dilute the cellular waste (like ammonium). Not in all processes, but in some processes, the timing of feeds have been shown to impact culture productivity.<br /> <br /> <b>Timing of shifts.</b> Some processes are specified with changes in setpoints of the aforementioned parameters (e.g. pH or Temperature). The shift specifications come in the form of: "When the culture duration reaches X hours" or "when the cell density reaches Y x 10<sup>6</sup>," then change the set point up/down.<br /> <br /> When building multivariate models, it is crucial that controllable parameters are modeled as factors and here's why:<br /> <br /> When your model shows can correlate significant main effects and interactions to some process output (e.g. titer or quality attribute), you can actually step out of theory and prove it in practice.</div> </div> OLYhttp://www.blogger.com/profile/18111167675345949662[email protected]0tag:blogger.com,1999:blog-2841018452204333072.post-12492803365381088592015-03-20T17:32:00.001-07:002015-03-20T17:32:20.301-07:00New Features for ZOOMS 2.2.4 (shipped)<div dir="ltr" style="text-align: left;" trbidi="on"> There are a just a couple of usability improvements for ZOOMS 2.2.4.<br /> <h3> Remove keywords with click.</h3> Customers were telling us that it is easy to search for a trend by clicking on the various links within the search engine result page (SERP). But it was hard to remove some of the parameters that they didn't want. With ZOOMS 2.2.4, you're able to remove any keyword from the query with a simple click.<br /> <br /> Below the search bar, there is a statement indicating that results were found including the timestamp of the search (in case the user has stepped away, they ought to know that the trend may be stale).<br /> <img src="http://static.zymergi.com/blog-click-to-remove-keyword.png" style="width: 100%;" /><br /> Further below the search bar is a list of all the keywords that were recognized by ZOOMS. Units are shown with a unit icon. Parameters are shown with a parameter icon..etc.<br /> <br /> As of ZOOMS 2.2.4, these keywords are buttons with an "x" to the right-hand-side. Clicking the button will remove that keyword from the search box (so that you can re-search).<br /> <br /> <h3> Show Values textbox travels</h3> Another comment we were getting was that the "show values" textarea stayed at the top, and when you had multiple trends found, if you clicked "show values" on a lower trend, you could not see that the values actually populated. With 2.2.4, this issue has been fixed. The textarea "follows" you as you scroll:<br /> <img src="http://static.zymergi.com/blog-show-values-affixed.png" style="width: 100%;" /> <br /> <br /> This does not require a full re-install, just a single-file to update the changes. Go ahead and send email <a href="mailto:[email protected]">Zymergi Technical Support and we'll send you the file and instructions.</a></div> OLYhttp://www.blogger.com/profile/18111167675345949662[email protected]0tag:blogger.com,1999:blog-2841018452204333072.post-73081792004207616882015-03-03T13:05:00.002-08:002015-03-03T13:05:28.173-08:00ZOOMS Data Historian Search Engine Configuration<div dir="ltr" style="text-align: left;" trbidi="on"> ZOOMS is your search engine for process (trend) data.<br /> <br /> Step 1: Go to the home page (using web browser)<br /> Step 2: Input your keywords (hit enter)<br /> Step 3: View the SERP<br /> <br /> (SERP is an abbreviation for "Search Engine Results Page.")<br /> <br /> This is the way that Google has conditioned the world to find pages of information on the internet and this is the user experience we at Zymergi think ought to be available in the enterprise.<br /> <br /> But how do you configure ZOOMS?<br /> <br /> It turns out for ZOOMS to work with your system, you need to answer 4 questions:<br /> <ol style="text-align: left;"> <li>Where should ZOOMS get time-series data?</li> <li>Where should ZOOMS look to know about the points (i.e. tags or IO)?</li> <li>Where should ZOOMS look to find out what units and parameters exist on your system?</li> <li>Where should ZOOMS look to find "batches" that exist on your system?</li> </ol> <div> In each of the cases, if the answer is, "I don't know," that's perfectly alright. &nbsp;ZOOMS has an internal database to keep track of all this.<br /> <br /> Questions 1 and 2 refer to the time-series data and the point configuration. &nbsp;You see, ZOOMS is a search engine for trends, and trends are created when you plot values vs. time:<br /> <br /> <img alt="ZOOMS trend example" src="http://static.zymergi.com/blog-zooms-config-01.png" style="max-width: 500px;" /> <br /> <br /> All this means is that you need some place to put the time-value pairs (OSI calls this the PI Archive); and you need some place to put the tag information (in OSIsoft PI, this is the "point database"). &nbsp;These two databases are responsible for the Y-axis.<br /> <img alt="Point database and Archive" src="http://static.zymergi.com/blog-zooms-config-02.png" style="max-width: 500px;" title="" /> <br /> <br /> Customers typically select OSIsoft PI as the time-series data source and the point data source. &nbsp;That's awesome. &nbsp;Zymergi is an OSIsoft Partner and frankly, we think they're fantastic.<br /> <br /> Question 3 talks about units and parameters. &nbsp;Units and parameter are the alternative way that people refer to tags. &nbsp;People think of I/Os as a parameter of some piece of equipment, and so we need a place to store unit/parameter combinations.<br /> <img alt="batch database to store time-windows" src="http://static.zymergi.com/blog-zooms-config-03.png" style="max-width: 500px;" title="" /> <br /> <br /> ZOOMS was created back in 2008 (can you believe we're going on 7-years?) and back then, the data store for unit/"alias" data was the PI Module Database. Since then, OSIsoft has moved towards Asset Framework ("AF"), but since AF wasn't ready during ZOOMS development, we created our own metadata storage. &nbsp;So while any relational database will do, there is a local database that ZOOMS uses.<br /> <br /> Question 4 is about time-windows. &nbsp;Since time-windows is what defines the X-axis of a trend, being able to search by time-windows is of utmost importance. &nbsp; In batch-processes (such as pharma and biotech companies), batch identification is used to identify time-windows, but if you're a continuous process, you can define batches as work-shifts, days of the week, fiscal metrics...whatever. &nbsp;It doesn't matter. &nbsp;What matters is that there is a way of storing time-window information:<br /> <br /> <img alt="ZOOMS trend example" src="http://static.zymergi.com/blog-zooms-config-04.png" style="max-width: 500px;" /><br /> <br /> This is why ZOOMS has a local time-window data store.<br /> <br /> The key here is that being able to search for trend data depends on 4 data sources and thus the configuration of ZOOMS starts with setting these connection strings.<br /> <br /></div> </div> OLYhttp://www.blogger.com/profile/18111167675345949662[email protected]0tag:blogger.com,1999:blog-2841018452204333072.post-54436523699112002602014-12-09T18:12:00.001-08:002014-12-09T18:26:45.181-08:00New Features in ZOOMS 2.2.3 (which has shipped, btw)<div dir="ltr" style="text-align: left;" trbidi="on"> Yep, ZOOMS 2.2.3 is shipped. There are multiple upgrades, including several under the hood, but the user-features are as follows:<br /> <br /> <h2> Autocomplete Detects Text Within Words</h2> <div> We are fast learning from customers that despite S88, people naturally like having the equipment hierarchy in the unit name. It's natural and logical. As such, we've modified our autocomplete to search after delimiters such as the period (.) and the underscore (_). You can see below that the user typed "10" and yet items that have "10" after a legal delimiter show up.</div> <br /> <img alt="ZOOMS autocomplete delimiters" src="http://static.zymergi.com/blog-mf.101.png" style="width: 100%;" /> <br /> <h2> TimeExpressions</h2> Inputting time is a pain in the buttocks. ZOOMS already recognizes the PI time expressions (*, t, y) as well as (60s, 1m, 1h, 2d, 3w, 4y...) time intervals. But our users like not having to type the forward slashes (/) and colons (:) that come with inputting time like "11/23 23:00." <br /> <br /> ZOOMS now recognizes several more oddball time formats that don't come standard. You can see below that "1123 2300 to 1130" resolved to: <b>11/23/2014 23:00:00 to 11/30/2014 0:00:00</b>.<br /> <br /> <br /> <a href="http://static.zymergi.com/blog-new-timeformats.png"><img border="0" src="http://static.zymergi.com/blog-new-timeformats.png" style="width: 100%;" /></a> <br /> <br /> <br /> <h2> <br /></h2> <h2> Downloading Raw and Evenly Spaced Data</h2> <div> The ability to download raw data has existed since 2.2.2. Raw data is the actual data captured in the data archive. Unfortunately, the captured data may not happen at the same timestamp and if you need to correlate values with other parameters. So for version 2.2.3, we have the ability to download evenly-spaced data in user-specified increments. Click that "timed CSV" button and you're going to get interpolated data values every 15 minutes:<br /> <br /></div> <a href="http://static.zymergi.com/blog-controls-2.2.3.png" style="margin-left: auto; margin-right: auto;"><img alt="ZOOMS trend controls 2.2.3" src="http://static.zymergi.com/blog-controls-2.2.3.png" style="width: 100%;" /></a> <br /> Trend data visualization and data downloads remain a core offering. &nbsp;Stay tuned for more release announcements.<br /> <br /> <br /> <a class="btn btn-xlarge btn-bonsai-garden-4" href="http://zymergi.com/zooms-search-engine-osisoft-pi.htm?src=blog">Request a ZOOMS demo</a> </div> OLYhttp://www.blogger.com/profile/18111167675345949662[email protected]0tag:blogger.com,1999:blog-2841018452204333072.post-86607611947287109802014-12-01T11:16:00.001-08:002014-12-01T12:04:58.063-08:00Could not load file or assembly 'System.Data.SQLite' or one of its dependencies. <div dir="ltr" style="text-align: left;" trbidi="on"> This is why you're here:<br /> <ol style="text-align: left;"> <li>You're getting this error. <div> <table bgcolor="#ffffcc" style="font-size:0.61em"> <tbody> <tr> <td> <pre><code>&lt;add assembly="System.EnterpriseServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/&gt; &lt;add assembly="System.Web.Mobile, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/&gt; <span style="color: red;">&lt;add assembly="*"/&gt; </span>&lt;add assembly="System.Runtime.Serialization, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"/&gt; &lt;add assembly="System.IdentityModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"/&gt;</code></pre> </td> </tr> </tbody></table> </div> </li> <li>You're on a Windows OS</li> <li>You're trying to connect to SQLite (System.Data.SQLite.dll)</li> <li>You're trying to get an IIS/ASP.NET web application to connect to SQLite</li> <li>You're in luck.</li> </ol> This a pretty simple fix that we talked about <a href="http://blog.zymergi.com/2014/11/could-not-load-file-or-assembly-x-or.html">before</a>. <br /> <br /> What you need to do is <b>Enable 32-Bit Applications.&nbsp; </b><br /> <br /> <img src="http://static.zymergi.com/IIS-AppPool-Advanced-Settings.png" /><br /> <br /> When you Enable 32-Bit Applications (by setting it to true), the worker process(es) serving the application pool will be in WOW64 (Windows on Windows64) mode... which means that your application pool is now a 32-bit process that loads only 32-bit applications.<br /> <br /></div> OLYhttp://www.blogger.com/profile/18111167675345949662[email protected]0tag:blogger.com,1999:blog-2841018452204333072.post-38494339154145457122014-11-24T19:13:00.004-08:002014-11-25T09:35:45.539-08:00Metadata Nomenclature for ZOOMS units and parameters<div dir="ltr" style="text-align: left;" trbidi="on"> So in the world of industrial automation, there's this S88 standard for batch. &nbsp;And while it doesn't address everything, it is an oldie, but goodie.<br /> <br /> S88 talks about an <a href="http://www.batchcontrol.com/s88/01_tutorial/05-equipment.shtml">equipment hierarchy</a>, which is a way of saying:<br /> <br /> Your equipment can be named like so that each unit is unique.<br /> <br /> Here's an example:<br /> <br /> Suppose you're standing in your plant looking at a your three production fermentors: F101, F102, and F103<br /> <img alt="equipment hierarchy example s88" src="http://static.zymergi.com/blog-fermentors.png" /><br /> And let's suppose that they are located in the <b>Fermentation</b> suite of your brewery.<br /> <br /> Let's say your brewery is in <b>Davis</b>, California and the name of your company is <b>Zymurgy Brewing</b>.<br /> <br /> Well then one way to name that production fermentor: F101 is as follows:<br /> <br /> /Zymurgy/Davis/Fermentation/F101<br /> <br /> and for the rest of your units:<br /> <br /> /Zymurgy/Davis/Fermentation/ProductionFermentor/F101<br /> <div> /Zymurgy/Davis/Fermentation/ProductionFermentor/F102</div> <div> /Zymurgy/Davis/Fermentation/ProductionFermentor/F103<br /> <br /> Now let's suppose Zymurgy acquires a brewery in Dixon, CA with the same unit names: F101, F102, F103, but at that brewery, those units are portable tanks:<br /> <br /> /Zymurgy/Dixon/Fermentation/PortableTanks/F101<br /> /Zymurgy/Dixon/Fermentation/PortableTanks/F102</div> <div> /Zymurgy/Dixon/Fermentation/PortableTanks/F103</div> <div> <br /></div> <div> By identifying units with their hierarchy, it's very difficult to get "collisions" where two units with the same name, have the same exact hierarchy.</div> <div> <br /></div> <div> Now it's easy to declare "<b>F101</b>, <b>Agitation</b>" or "<b>F103</b>, <b>Air Flow</b>"</div> <div> <br /></div> <div> Easy right?</div> <div> <br /></div> <div> Well suppose you didn't want to name your units that way. &nbsp;Suppose you want the unit to be:<br /> <br /> <b>DIX.F101</b></div> <div> <b>DIX.F102</b></div> <div> <b>DIX.F103</b></div> <div> <br /></div> <div> That's fine, too... at least within <a href="http://zymergi.com/zooms-search-engine-osisoft-pi.htm">ZOOMS</a>.</div> <div> <br /></div> <div> The next hiccup with metadata nomenclature is trying to figure out which part of the descriptive goes in the unit vs which part goes in the parameter.</div> <div> <br /></div> <div> For example, suppose you had a water chiller:<br /> <br /> <b>VV.CHILLEDWATER4000 </b>could be the unit and <b>Temperature</b> could be the parameter.</div> <div> <br /></div> <div> Alternatively, you may go with:</div> <div> <br /></div> <div> <b>VV.CHILLER4000</b> as the unit <b>Water Temperature</b> as the parameter.</div> <div> <br /></div> <div> Should "Water" be in the unit name or should it be in the parameter? &nbsp;</div> <div> <b><br /></b></div> <div> <b>There's no hard rule... only that the unit and the parameter should have high reuse. </b>&nbsp; This is to say, if you have multiple homologous units, yet one is "Temperature" while the other is "Water Temperature," there's probably a better way to handle your naming.</div> <div> <br /></div> </div> OLYhttp://www.blogger.com/profile/18111167675345949662[email protected]0tag:blogger.com,1999:blog-2841018452204333072.post-24113108449081982522014-11-09T16:20:00.001-08:002014-11-09T16:20:23.581-08:00Could not load file or assembly 'X' or one of its dependencies.<div dir="ltr" style="text-align: left;" trbidi="on"> You're seeing this Configuration Eror:<br /> <br /> <img alt="Configuration error ASP.NET ZOOMS" src="http://static.zymergi.com/Configuration-Error-Could-not-load-file-or-assembly-or-one-of-its-dependencies.png" style="width: 100%;" /> <br /> <br /> And you're using IIS7 with ASP.NET and using 32-bit applications.<br /> <br /> Chances are, you just installed a fresh copy of IIS and you haven't changed around any defaults.<br /> <br /> You're in luck because the fix is easy.&nbsp; Here's what's going on.<br /> <br /> The default installation of IIS 7 is to disable 32-bit Applications.&nbsp; Afterall, IIS 7 comes with Server 2008 and Server 2008 is an x64 system.<br /> <br /> So all you have to do to get rid of this error is to <b>Enable 32-bit Applications</b> in IIS.&nbsp; Here are the steps:<br /> <ol style="text-align: left;"> <li>Go to Start and type in <b>inetmgr </b>to launch IIS</li> <li>In the left page, select <b>Application Pools</b></li> <li>In the middle pane, select the application pool corresponding to the web-application that is giving you this error.</li> <li>In the right pane, select <b>Advanced Settings</b>:<br /><img alt="IIS AppPool Advanced Settings" src="http://static.zymergi.com/IIS-AppPool-Screen.png" style="width: 100%;" />&nbsp;</li> <li>This is what you'll see: <b>Enable 32-bit Applications</b> is set to False.<br /><img alt="AppPool defaults" src="http://static.zymergi.com/IIS-AppPool-Advanced-Settings.png" /></li> <li>Go ahead and set that to <b>True</b>: <br /><img alt="AppPool enable 32-bit applications" src="http://static.zymergi.com/IIS-AppPool-Advanced-Settings-Enable-32-Bit-Applications.png" /></li> <li>&nbsp;Click <b>OK</b></li> </ol> And you're super awesome application that depends on 32-bit DLLs is back in business:<br /> <br /> <img alt="ZOOMS works" src="http://static.zymergi.com/IIS-AppPool-success.png" style="width: 100%;" /> <br /> <ol style="text-align: left;"> </ol> </div> OLYhttp://www.blogger.com/profile/18111167675345949662[email protected]0tag:blogger.com,1999:blog-2841018452204333072.post-8066213541425972162014-10-05T19:23:00.000-07:002014-10-05T19:24:47.644-07:00iOS 8 Safari Cannot Access Windows Authentication IIS websites<div dir="ltr" style="text-align: left;" trbidi="on"> So our flagship product, <a href="http://zymergi.com/zooms-search-engine-osisoft-pi.htm">ZOOMS - search engine for OSIsoft PI</a> - is a web-application... meaning that like Google, you get to the app by using a web-browser.<br /> <br /> ZOOMS itself is browser-agnostic - we don't care what browser you use, just that you use a modern browser. &nbsp;It's HTML5 meaning that all modern browsers ought to be able to view it. &nbsp;And all modern browsers include Safari on your mobility devices.<br /> <br /> ZOOMS is also built on the Microsoft stack, meaning that the operating system is Windows Server. &nbsp;The web-server is Internet Information Services (IIS). &nbsp;The database is OSIsoft PI. &nbsp;And the application programming language is ASP.NET.<br /> <br /> For customers using Windows Active Directory, being able to authenticate users against the AD is useful and so that just means that before you get to use the website, you have to type in your active directory username and password.<br /> <br /> <img alt="windows authentication safari" src="http://static.zymergi.com/blog-windows-authentication-safari.png" style="width: 500px;" /><br /> <br /> Imagine my surprise when I heard from a customer that "ZOOMS isn't working."<br /> <br /> After a lot of troubleshooting, it turns out that <a href="https://discussions.apple.com/thread/6538068?src=zymergi" rel="nofollow">iOS Safari doesn't play well with Windows Authentication</a>.<br /> <blockquote> When trying to access intranet sites in our company that use Windows (IIS) Authentication, it challenges for the login and password 2 or 3 times, then nothing - just hangs. These sites work fine on iOS 7 devices - and worked on the same devices that were upgraded. Windows Authentication was broken in iOS 7.0 also and not fixed until a later update. Why does this keep getting broken? </blockquote> This was exactly what happened to my customer. &nbsp;Gets challenged for their password twice and then the page hangs at ~20%.<br /> <br /> For now, ZOOMS users should understand that iOS 8 is unsupported - not because of ZOOMS, but because of iOS 8 - and that if your situation is feasible: disable Windows Authentication until Apple comes up with a fix.<br /> <br /></div> OLYhttp://www.blogger.com/profile/18111167675345949662[email protected]1tag:blogger.com,1999:blog-2841018452204333072.post-5344546368569413292014-08-25T23:04:00.003-07:002014-08-25T23:07:06.421-07:00Mathematical Bummers and the American Canyon/Napa Earthquake<div dir="ltr" style="text-align: left;" trbidi="on"> As Northern California cleans up from the American Canyon/Napa Earthquake of August 24th, 2014, I am reminded of a mathematical exercise I was asked to perform in my early years as an engineer with my former employer.<br /> <br /> <img alt="napa american canyon quake" src="http://static.zymergi.com/blog-napa-quake.png" style="width: 500px;" /> <br /> <br /> <br /> <br /> The question posed by upper management was this:<br /> <br /> Given estimated probabilities of an earthquake, grass fire, flood, etc... what is the probability in any given year that any of the natural disasters hit the factory. &nbsp;For example, suppose estimates from the U.S. Geological Survey for the probability of natural disasters in any given year were as follows:<br /> <br /> p<sub>earthquake</sub> = 5%<br /> p<sub>grass fire</sub> = 10%<br /> p<sub>flood</sub> = 2%<br /> <br /> What is the probability that any of these hit? <br /> <br /> Well, if you multiplied the probabilities, you'd simply get the chance that all 3 of these natural disasters happen in the same year... so 5% * 10% * 2% is 1 in 1,000.<br /> <br /> But that was not, "What is the probability that all of these hit in the same year?" &nbsp;The question is what is the probability that <i>any</i> of them hit in the same year?<br /> <br /> To get to the bottom of this, you simply ask yourself, "What is the probability that <i>none</i> of these things happen in any given year?"<br /> <br /> Well,<br /> the probability that no earthquake hits is 95%.<br /> the probability that no grass fire hits is 90%.<br /> the probability that no flood happens is 98%.<br /> <br /> So the probability that none of these things happen is 95% * 90% * 98% = 83.8%<br /> <br /> What's the probability that any one of these things happen? <b>16.2% a.k.a 1 in 6.</b><br /> <b><br /></b> So we handed this answer into upper management and I wasn't in the room, but I was told that my director got scoffed at for presenting this figure.<br /> <br /> It's been 13 or 14-years since I handed in that calculation and they've been rolling that dice every year. &nbsp;Now that it's happened (I slept through it, "shaken, not stirred"), I feel a bit vindicated.<br /> <br /> Why does this matter to Zymergi or our customers? &nbsp;Well, it's the basics of <a href="http://blog.zymergi.com/2013/05/microbial-contamination-probabilities.html">bioreactor contamination probabilities</a>.<br /> <br /> If you add up the probabilities of your sterile envelope failures as well as your sterile operations failures, you end up with an N-sided dice that you roll each time you put up a production culture. &nbsp;And if you've done the math, you realize it doesn't take that many low probability vulnerabilities before they add up.<br /> <br /> <br /> <br /></div> OLYhttp://www.blogger.com/profile/18111167675345949662[email protected]0tag:blogger.com,1999:blog-2841018452204333072.post-47353385235651772842014-08-04T03:33:00.000-07:002014-08-04T03:33:00.241-07:00Process Data for the Rest of Us<div dir="ltr" style="text-align: left;" trbidi="on"> I first started using OSIsoft's PI in 1999 when I got hired as a fermentation engineer at the world's largest cell culture plant (at the time, 144,000-liters).<br /> <br /> I remember the first week vividly. &nbsp;Me - not knowing anything about how read cell culture trends - watching my boss run his cursor over PI trends, nodding his head and then running off to meetings telling the operations staff what's happening in the bioreactors.<br /> <br /> Over the years, I've put my eyeballs on thousands of cell culture runs and became an expert on the matter. &nbsp;Yet, no matter how many trainings gave to tech(nician)s, supe(rvisor)s, and managers to increase the population of process experts at the company, I got the sense that ultimately it was still my team's (i.e. <a href="http://zymergi.com/manufacturing-sciences-pat.htm">manufacturing sciences</a>') job to know what's happening to the cell culture runs in-progress.<br /> <br /> OR, maybe not...<br /> <br /> The VP of the plant had the PI administrator write a script to open up <a href="http://blog.zymergi.com/2012/08/pi-processbook-best-biopharm-practices-1.html">PI ProcessBook</a> and snapshot current trends as a images and put it on a website (remember, this was back in 1999). &nbsp;Clearly management recognized the value of these trends, but was just too much activation energy to get PI data to "The People."<br /> <br /> So when I left my awesome company (and awesome job), I set out to do one thing:<br /> <br /> <img alt="To bring PI to the PI-less" src="http://static.zymergi.com/blog-pi-to-pi-less.jpg" /><br /> <br /> And by PI, I mean "process data."<br /> <br /> Google had already pioneered the one text-box, one click format for accessing website data. &nbsp; So why is it that cGMP citizens can find information on the internet faster than they can find critical process data from within the enterprise?<br /> <br /> This is why I bothered creating ZOOMS and this is why I think that there's a place for ZOOMS in the competitive space of trend visualization on the web.<br /> <br /> It actually wasn't until the <a href="https://twitter.com/jmspool?src=zymergi.com">Jared Spool</a> lecture at this year's OSIsoft PI User's Conference that I learned how to better enunciate this creation. &nbsp;<br /> <br /> <img alt="magic escalator of acquired knowledge" src="http://static.zymergi.com/blog-magic-escalator-of-acquired-knowledge-spool.png" /><br /> A quick recap: <br /> <br /> The bottom of the escalator is where you are if you know nothing about an app (new users live here). &nbsp;The top of the escalator is if you know everything about the app (developers live here).<br /> <br /> <b>Current knowledge</b>&nbsp;is where the user is today; and&nbsp;<b>target knowledge</b>&nbsp;is where a user needs to be to know enough about the application to perform his duties.<br /> <br /> Mr. Spool tells us that <b>intuitive design happens when the knowledge gap (the difference between target knowledge and current knowledge) is zero.</b><br /> <br /> A key observation is that the more powerful and feature-rich the tool, the higher up the target knowledge is...and the harder the knowledge gap is to close.<br /> <br /> The success of Google (which is to be replicated with ZOOMS in the process trend visualization context) is a modest number of features in order to lower the target knowledge... and thus diminish this knowledge gap and achieve intuitive design.<br /> <div> <br /></div> <div> There are plenty of feature rich PI trend visualization tools for process experts. &nbsp;ZOOMS is process trends for the rest of us; in other words: PI for the "non-user."</div> <div> <br /></div> <div> At the end of the day, it's People, Process, and Technology... in that order. &nbsp;You can buy awesome technology, but if only a small minority of your people use it, you're neither capitalizing on their potential, nor your process.</div> <br /></div> OLYhttp://www.blogger.com/profile/18111167675345949662[email protected]0tag:blogger.com,1999:blog-2841018452204333072.post-42644624534250383332014-07-29T23:28:00.003-07:002014-07-29T23:28:41.746-07:00ZOOMS v2.2 shipped!<div dir="ltr" style="text-align: left;" trbidi="on"> <div style="float: right;"> <img alt="Oliver Yu Zymergi Avatar" border="0" src="http://zymergi.com/img/OliverYuAvatar.jpeg" id="img-1326063419551" style="margin: 10px 5px 0px 5px;" /><br /> <br /> <div style="color: #999999; font-size: 0.8em; text-align: center;"> <span ginger_software_uiphraseguid="bd2486d7-ebed-44ab-8d74-5450bcc73656" id="0b1244bf-23c7-4a0e-8cf2-4722c7fd4416"><span ginger_software_uiphraseguid="aa80bdce-f147-4420-adee-3d82523e81c2" id="8a4e53e8-478e-4319-997c-0b139149aa98">by</span></span> <a href="https://plus.google.com/u/2/112969466485959286193?rel=author" rel="author" style="color: #999999;">Oliver Yu</a></div> </div> Wow, what an exciting week.<br /> <br /> ZOOMS version 2.2 is shipped! The Top 3 features in this release are:<br /> <ul style="text-align: left;"> <li>Wildcard tag search</li> <li>Digital States now rendered; Step=1 recognized</li> <li>Full-text search on units</li> </ul> <div> <h3> Wildcard Tag Search</h3> Wildcard tag search was a feature that was added back to ZOOMS. This feature originally left behind because the idea behind ZOOMS is that users want to search metadata, not tags. As it turns out, there's a delay between when the tags get added to the data archive and when the ZOOMS metadata gets updated, and in between that time, these tags aren't findable on ZOOMS. Well, we listened to our customers and it's back in there.<br /> <br /> <img src="http://static.zymergi.com/blog-wildcard-tag-search.png" style="width: 500px;" /> <br /> ZOOMS detects if there is a wildcard in the query; if there is, ZOOMS will do a tag search and show the results asynchronously. &nbsp;This way, the slowness of the data archive does not impact the speed of the page load.<br /> <h3> Digital States and Stepped Tags</h3> Up until now, ZOOMS interpolated all values - which is great for a majority of numerical tags that come in at high frequency. But what about the tags that don't change in value... or are monotonic in nature (like setpoints or OFF/ON)? Well, the glitch in ZOOMS prior to this release is that they'd be plotted as interpolated and didn't make much sense.<br /> <br /> <img src="http://static.zymergi.com/blog-digital-states-stepped.png" style="width: 500px;" /><br /> &nbsp;This glitch is fixed. &nbsp;In the above image, the magenta tag is stepped.<br /> <h3> Full-Text Search on Units</h3> This was another great suggestion from one of our best customers. Prior versions of ZOOMS could identify the name of the unit; and therefore suggest it as a user typed it and combine it with parameters to produce a trend. The problem is users often know about the unit by its description or where it is in the equipment hierarchy... not necessarily by name. With this upgrade, any word that appears in the description or hierarchy of the unit gets recognized by ZOOMS and will show up in the SERP.<br /> <br /> In the image below, you can see that the user is interested in the 12,000-liter bioreactors in the plant and has typed in his colloquial search term, "12kL."<br /> <br /> ZOOMS will return the units T440 through T447 as that "12kL" string appears in the descriptor (but not the name).<br /> <br /> <img src="http://static.zymergi.com/blog-search-by-unit-metadata.png" style="width: 500px;" /> <br /> <br /> Incidentally, in the above query, user could have searched on "ZYM", "CCP1", or "Fermentation" and gotten results. &nbsp;Now, the user has to know even less about the equipment to get a search result.<br /> <br /> Previously added features:<br /> <br /> <ul style="text-align: left;"> <li><a href="http://blog.zymergi.com/2014/06/zooms-trend-change-time-range.html">Ability to magnify the x-axis</a></li> <li><a href="http://blog.zymergi.com/2014/06/how-to-scale-y-axis-for-zooms-trends.html?src=blog">Ability to scale the y-axis</a></li> <li><a href="http://blog.zymergi.com/2014/05/zooms-semantic-search-engine-for-time.html">What is semantic search for process data?</a></li> </ul> <br /> <br /> <br /></div> </div> OLYhttp://www.blogger.com/profile/18111167675345949662[email protected]0tag:blogger.com,1999:blog-2841018452204333072.post-24625812418368586422014-06-20T11:18:00.001-07:002014-06-20T11:30:43.331-07:00How to Scale X-Axis for ZOOMS Trends<div dir="ltr" style="text-align: left;" trbidi="on"> <div style="float: right;"> <img alt="Oliver Yu Zymergi Avatar" border="0" src="http://zymergi.com/img/OliverYuAvatar.jpeg" id="img-1326063419551" style="margin: 10px 5px 0px 5px;" /><br /> <br /> <div style="color: #999999; font-size: 0.8em; text-align: center;"> <span ginger_software_uiphraseguid="bd2486d7-ebed-44ab-8d74-5450bcc73656" id="0b1244bf-23c7-4a0e-8cf2-4722c7fd4416"><span ginger_software_uiphraseguid="aa80bdce-f147-4420-adee-3d82523e81c2" id="8a4e53e8-478e-4319-997c-0b139149aa98">by</span></span> <a href="https://plus.google.com/u/2/112969466485959286193?rel=author" rel="author" style="color: #999999;">Oliver Yu</a></div> </div> In the last post, we talked about <a href="http://blog.zymergi.com/2014/06/how-to-scale-y-axis-for-zooms-trends.html?src=blog">scaling the Y-Axis of ZOOMS trends</a>. &nbsp;What about the X-Axis?<br /> <br /> Well, the X-axis (or as pedantic mathematicians would call it, "abscissa") for ZOOMS is always the time-axis. &nbsp;As with any chart, there is an "x-min" for the minimum value of x as well as an "x-max."<br /> <br /> In the world of time-series data, there are more colloquial names:<br /> <ul style="text-align: left;"> <li>x-min is starttime</li> <li>x-max is endtime</li> </ul> <div> Unfortunately, there are also hundreds of ways of representing time:<br /> <ul style="text-align: left;"> <li>04-Jul-1776</li> <li>12/8/1941</li> <li style="vertical-align: text-top;"><img alt="back to the future time" src="http://static.zymergi.com/blog-backtothefuture-time.png" style="float: none; width: 300px;" /></li> </ul> <h3> Type Time Range into Search Box </h3> And typing in the starttime and endtime is one way to set the time range:<img src="http://static.zymergi.com/blog-zooms-input-date.png" /><br /> <br /> ZOOMS is able to interpret a lot of date inputs, but not all of them. <br /> <h3> Use the Trend Buttons </h3> What happens when you've got a trend and you want to go from there?<a href="http://static.zymergi.com/blog-xaxis-controls.png" target="_blank"><img src="http://static.zymergi.com/blog-xaxis-controls.png" style="width: 100%;" /></a> <br /> There are 3 buttons at the bottom of each trend.<br /> <ol style="text-align: left;"> <li><b>Back Arrow</b> is an arrow pointing to the left that will take the trend one time-range into the past.</li> <li><b>Forward Arrow</b> is an arrow pointing to the right that will take the trend one time-range into the future.</li> <li><b>Refresh/Revert</b> will restore the time-range to the original as-loaded trend.</li> </ol> <h3> Highlight Area On Trend </h3> You can magnify a time range by highlighting it with the mouse: clicking and holding down the mouse button at one edge of the time range and dragging the mouse to the other edge of the time range: <a href="http://static.zymergi.com/blog-xaxis-highlight-area.png" target="_blank"><img src="http://static.zymergi.com/blog-xaxis-highlight-area.png" style="width: 100%;" /></a> <br /> When you release the mouse button, the trend will zoom to the selected time range. <h3> Summary </h3> In summary, there are at least 3 ways to scale the X-Axis of a ZOOMS trend: <br /> <br /> <ol style="text-align: left;"> <li>Type in the time range in the search box.</li> <li>Use the "back" and "forward" buttons</li> <li>Highlight an area on a trend</li> </ol> <div> See Also:</div> <div> <ul style="text-align: left;"> <li><a href="http://blog.zymergi.com/2014/06/how-to-scale-y-axis-for-zooms-trends.html?src=blog">How to Scale Y-Axis of a ZOOMS Trend</a></li> <li><a href="http://blog.zymergi.com/2014/06/securing-process-data-historian-search.html?src=blog">Controlling Who Can View Process Data with ZOOMS</a></li> <li><a href="http://blog.zymergi.com/2014/05/zooms-semantic-search-engine-for-time.html">OSIsoft PI Search Engine: ZOOMS</a></li> </ul> </div> <br /> <div> <br /></div> </div> </div>OLYhttp://www.blogger.com/profile/18111167675345949662[email protected]0tag:blogger.com,1999:blog-2841018452204333072.post-63017855084017795052014-06-18T00:14:00.001-07:002014-06-25T14:51:53.918-07:00How to Scale Y-Axis for ZOOMS Trends<div dir="ltr" style="text-align: left;" trbidi="on"> <div style="float: right;"> <img alt="Oliver Yu Zymergi Avatar" border="0" src="http://zymergi.com/img/OliverYuAvatar.jpeg" id="img-1326063419551" style="margin: 10px 5px 0px 5px;" /><br /> <br /> <div style="color: #999999; font-size: 0.8em; text-align: center;"> <span ginger_software_uiphraseguid="bd2486d7-ebed-44ab-8d74-5450bcc73656" id="0b1244bf-23c7-4a0e-8cf2-4722c7fd4416"><span ginger_software_uiphraseguid="aa80bdce-f147-4420-adee-3d82523e81c2" id="8a4e53e8-478e-4319-997c-0b139149aa98">by</span></span> <a href="https://plus.google.com/u/2/112969466485959286193?rel=author" rel="author" style="color: #999999;">Oliver Yu</a></div> </div> There are several improvements with ZOOMS 2.1 and the first difference you'll notice is the trend controls... the buttons at the bottom of each trend that "control" what happens to the trend.<br /> <br /> For this post, we'll be focusing on the Y-axis scaling buttons, which are 5 o'clock position when looking at the trend from straight on.&nbsp; There are 3 buttons:<br /> <ul style="text-align: left;"> <li>multi</li> <li>channel</li> <li>single </li> </ul> <h3> Multi</h3> By default, every trend is plotted as "multi," which is an abbreviation for multiple Y-axis.&nbsp; Each trace on the trend gets its own Y-axis scale where the bottom is the minimum value and the top is the maximum value:<br /> <img src="http://static.zymergi.com/blog-yaxis-multi.png" style="width: 100%;" /><br /> While you get a fuller sense of each trace - since each trace spans the entire range of the graph, there is no sense of what the traces are like in absolute value.<br /> <h3> Single</h3> The left-most button is "single," which refers to plotting all the traces on a single Y-axis. Using this method, you can get a strong sense for how the traces relate to each other. <img src="http://static.zymergi.com/blog-yaxis-single.png" style="width: 100%;" /><br /> Compared to the multiple Y-axis, we can now tell that the orange sinusoid is oscillates in a lower range than either of the red or magenta traces.<br /> <h3> Channel</h3> The channel Y-axis scaling divides up the trend in N horizontal slices and plots each trace in its own channel. &nbsp;Using this method, you can hover your cursor over the entire trend and get a feel for what the values actually are.<br /> <img src="http://static.zymergi.com/blog-yaxis-channel.png" style="width: 100%;" /> <br /> <br /> There are plenty of awesome web-trending applications that give you more precise control over the actual scaling of the Y-axis, and we think they serve the tactical employees (e.g. operators and engineers) well.<br /> <br /> The Zymergi implementation of Y-axis scaling is geared towards the time-crunched strategic users like managers and directors.<br /> <br /> See also:<br /> <br /> <ul style="text-align: left;"> <li><a href="http://blog.zymergi.com/2014/06/securing-process-data-historian-search.html">Securing ZOOMS</a></li> <li><a href="http://blog.zymergi.com/2014/05/zooms-semantic-search-engine-for-time.html">Introducing ZOOMS</a></li> <li><a href="http://blog.zymergi.com/2014/03/zooms-2-fastest-way-to-view-trends.html">What is Metadata Search for Time-Series Data?</a>&nbsp;</li> </ul> </div> OLYhttp://www.blogger.com/profile/18111167675345949662[email protected]0tag:blogger.com,1999:blog-2841018452204333072.post-82182013358101845652014-06-17T15:16:00.000-07:002014-06-17T22:41:13.165-07:00Securing the Process Data Historian Search Engine: ZOOMS<div dir="ltr" style="text-align: left;" trbidi="on"> <div style="float: right;"> <img alt="Oliver Yu Zymergi Avatar" border="0" src="http://zymergi.com/img/OliverYuAvatar.jpeg" id="img-1326063419551" style="margin: 10px 5px 0px 5px;" /><br /> <br /> <div style="color: #999999; font-size: 0.8em; text-align: center;"> <span ginger_software_uiphraseguid="bd2486d7-ebed-44ab-8d74-5450bcc73656" id="0b1244bf-23c7-4a0e-8cf2-4722c7fd4416"><span ginger_software_uiphraseguid="aa80bdce-f147-4420-adee-3d82523e81c2" id="8a4e53e8-478e-4319-997c-0b139149aa98">by</span></span> <a href="https://plus.google.com/u/2/112969466485959286193?rel=author" rel="author" style="color: #999999;">Oliver Yu</a></div> </div> When I worked at an FDA-regulated commercial biologics manufacturing facility, <a href="http://zymergi.com/support/21_CFR_Part_11#.C2.A7_11.10_Controls_for_closed_systems">access to data was limited to authorized individuals</a>; 21 CFR Part 11 (10d) specifically calls for this control so that the authenticity, integrity, and, when appropriate, the confidentiality of electronic records are assured.<br /> <br /> Needless to say, those who operate under <a href="http://cgmp.co/21-cfr-part-211.htm">cGMP regulations</a> are worried about compliance with Part 11 have concerns with software that is trying to democratize the data.<br /> <br /> Fair enough.<br /> <img alt="ben franklin on freedom vs security" src="http://static.zymergi.com/blog-ben-franklin-freedom-security.jpg" style="float: none;" /><br /> <br /> It turns out that you can have cake and eat it too. &nbsp;That is, you can have an easy-to-use, web-based interface for your trend data <b>AND</b> you can limit the access to authorized individuals.<br /> <br /> Within Internet Information Services (IIS), the web-server on which ZOOMS runs, the default setting is to enable Anonymous Login and to disable everything else.<br /> <br /> The way to secure ZOOMS is go to click on the website under which ZOOMS is installed and select the Authentication Feature:<br /> <img alt="IIS authentication feature" src="http://static.zymergi.com/blog-IIS-authentication.png" /> <br /> When you double-click on IIS Authentication, you get a setting for how you want this web-server to be secured. &nbsp;There are 4 options to enable/disable. &nbsp;The way to ensure unauthorized access is not granted is to <b>set Anonymous Authentication Status </b>to<b> Disabled</b>.<br /> <br /> And if you happen to be running Windows Active Directory and you want to use that as the method to control access, <b>set Windows Authentication Status</b> to <b>Enabled</b>.<br /> <br /> <img alt="IIS disable anonymous login" src="http://static.zymergi.com/blog-disable-anonymous-login.png" style="width: 100%;" /><br /> <br /> Assuming that you're in an environment with Active Directory, you can use Active Directory credentials to control access to ZOOMS.<br /> <br /> Now when I attempt to access ZOOMS, here's what I get:<br /> <div style="width: 100%;"> <img alt="ZOOMS password challenge" src="http://static.zymergi.com/blog-zooms-password-challenge.png" style="float: none;" /> </div> <br /> (I'm on a Mac using Safari to access a Windows IIS server running ZOOMS)<br /> <br /> And only when I input valid Windows credentials am I granted access to ZOOMS. &nbsp;At this point, access to ZOOMS has been limited from everyone with network access to everyone with a valid domain account.<br /> <br /> If you want further restrictions, you simply need to set up ASP.NET URL Authorization where you specify the exact role that you want to allow access. <br /> <img alt="ASP.NET Url Authorization" src="http://static.zymergi.com/blog-dotNet-Authorization.png" /> <br /> If you want to create an Active Directory group for just your users, you can do so. &nbsp;If you want to grant access to an existing Active Directory group, you can do so.<br /> <br /> The key here is to Allow first, Deny last. <br /> <br /> The point in all this is that you don't have to sacrifice the freedom of your information for the sake of security.<br /> <br /> For more questions, contact Zymergi Technical Support at 650-646-4996.<br /> <div> <br /></div> See also:<br /> <br /> <ul style="text-align: left;"> <li><a href="http://blog.zymergi.com/2014/05/zooms-semantic-search-engine-for-time.html">ZOOMS: Semantic Search Engine for Time-Series Data</a></li> <li><a href="http://blog.zymergi.com/2014/03/zooms-2-fastest-way-to-view-trends.html">ZOOMS = Metadata Search</a></li> </ul> <br /> <br /> <br /></div> OLYhttp://www.blogger.com/profile/18111167675345949662[email protected]0tag:blogger.com,1999:blog-2841018452204333072.post-3083269128739954402014-05-07T22:53:00.002-07:002014-05-07T22:59:37.451-07:00Semantic Search Engine for Time-Series Data<div dir="ltr" style="text-align: left;" trbidi="on"> It's the year 2014 and there are several updates to the Zymergi Object-Oriented Metadata Search (i.e. a semantic search engine for time-series data).<br /> <br /> The first update is that we've moved to HTML5. &nbsp;This means that we're dropping support for for IE8 or less. &nbsp;We're proven on the latest versions major web-browsers: Google Chrome, Mozilla Firefox and Apple Safari.<br /> <br /> Here's a screenshot of what the search page looks like. &nbsp;There's no equivalent of "Google Instant" but given the metadata inputted by the administrator into ZOOMS, the software is able to guess what words you are meaning to type:<br /> <img alt="zymergi zooms search page" src="http://static.zymergi.com/blog-zooms-textbox.png" style="width: 500px;" /><br /> The second update is that ZOOMS uses a CSS Framework called, "Bootstrap." &nbsp;Bootstrap was developed by Twitter and they gave it out for free. &nbsp;The deal with CSS Frameworks is that someone has already done a lot of the heavy web-page styling. &nbsp;You just need to customize it a bit to fit your look. <br /> <br /> The other thing about Bootstrap is that it is "responsive," meaning the webpage will "respond" differently depending on the size of your screen. &nbsp;Responsive web design (RWD) refers to whether or not a website is optimized for mobile devices.<br /> <br /> No, we aren't wading into the time-series-data on mobile devices. &nbsp;We actually believe that Transpara has a great product in <a href="http://transpara.com/?utm_source=zymergi&amp;utm_medium=blog&amp;utm_campaign=sauce" rel="nofollow">Visual KPI</a>. &nbsp; We actually don't expect customers to be using ZOOMS on a phone or tablet on a regular basis, but we acknowledge that it can't be helped; in those cases, you can get your trend data with ZOOMS. &nbsp;Besides, it came for free, so why not add this value?<br /> <br /> The last update is that the entire product has been refactored. &nbsp;The changes are all under the hood, but we've applied the MVC design pattern to separate the functions for a faster, more technically supportable system. <br /> <br /> Below, you see a search engine results page (i.e. SERP) for the search terms inputted above. &nbsp;ZOOMS tells you exactly which typed words has which meaning:<br /> <br /> <ul style="text-align: left;"> <li>Reactor1 was identified as a unit.</li> <li>Temperature was identified as a parameter.</li> <li>Volume was identified as a parameter.</li> </ul> <div> ZOOMS is figuring out what the typed words mean and combining it into a search result. &nbsp;In this case, someone looking for the reactor temperature and volume may be interested in a trend with each of these two traces plotted.</div> <br /> <br /> <a href="http://static.zymergi.com/blog-zooms-serp.png" target="_blank"> <img alt="zymergi zooms search page" src="http://static.zymergi.com/blog-zooms-serp.png" style="width: 500px;" /></a><br /> <br /> <br /> It is by far the <a href="http://blog.zymergi.com/2014/03/zooms-2-fastest-way-to-view-trends.html">fastest way for an untrained individual to get/view time-series data</a> in a process environment.<br /> <br /> We'll be disclosing shortly, but in addition to existing features, there are exciting updates in the coming months… like the ability to run without connecting to other data historians (yep, there's going to be an internal one).<br /> <br /> <a class="btn btn-xlarge btn-bonsai-garden-4" href="http://zymergi.com/zooms-search-engine-osisoft-pi.htm?src=blog">Want a test drive?</a> </div> OLYhttp://www.blogger.com/profile/18111167675345949662[email protected]0tag:blogger.com,1999:blog-2841018452204333072.post-88662409746097035302014-05-04T15:50:00.002-07:002014-05-05T11:22:06.197-07:00The Zymergi Mission<div dir="ltr" style="text-align: left;" trbidi="on"> Zymergi sees a world where there is greater wealth than today: a world where individuals have more <i>time</i> to spend on what they want (rather than what they must to do).<br /> <br /> <img alt="appliances" src="http://static.zymergi.com/blog-appliances.jpg" style="float: right;" /> Look around the house. Chances are, there's a clothes washer/dryer. The washer is a reactor/centrifuge combination; the dryer is a tumbler... chemical processing units. Now, you don't have to waste time at the river with a washboard washing your clothes.<br /> <br /> Oh, there's a fridge and freezer? That's refrigeration process with replete with compressor, expansion valve and working fluid and now you can store foods longer and not have to salt your foods or waste time on extra trips to the grocery store.<br /> <br /> Gotta a car, too? That's the chemical processing unit where you convert hydrocarbon to CO2 + water, heat to work to get from point A to B. Now you can get to that job 40 miles away in 40 minutes instead of 8 hours.<br /> <br /> <img alt="appliances" src="http://static.zymergi.com/blog-time-is-money.jpg" style="float: left; margin-right: 15px;" /> The time you get back is possible because of these chemical processes. And these chemical processes are executed by these machines (i.e. "units"). And when you look beyond the symbols of wealth (which happen to be fancier units like yachts and airplanes and sports cars), you realize that the wealthy have limitless time for leisure, while the poor do not. No truer words were spoken when they invented the phrase, "Time is money."<br /> <br /> Zymergi thinks the path to creating more wealth for us, our customers, and their customers is to help people who run chemical processes better "see" what their units are doing and get more out of them. The easier it is to "get data," the more time our customers get to "understand the process." And the more process understanding, the greater ability to change the course of the process for greater profitability.<br /> <br /> The world where machines do more work means a world where <a href="http://blog.zymergi.com/2013/05/why-isnt-industrial-automation-sexy.html">humans have more leisure</a>. Automation is the answer. <br /> <br /> Even the world of Star Trek, where does this time...<br /> <blockquote> ...to explore strange new worlds, to seek out new life and new civilizations, to boldly go where no man has gone before</blockquote> come from? <br /> <br /> <img src="http://static.zymergi.com/blog-startrek-2009.jpg" style="width: 500px;" /> They (the crew) are enabled by the Starship Enterprise. The starship is simply a <a href="http://blog.zymergi.com/2013/05/james-t-kirk-plant-manager.html">plant that manufactures light-years</a>. What runs the enterprise? A "computer" that is simply the starship's SCADA. Again: automation systems.<br /> <br /> In virtually every scenario of the future we want to live in, automation... units... chemical processes are there enabling humans to have more time... more leisure. &nbsp; This future of greater time and wealth is the Zymergi Vision.<br /> <br /> The Zymergi Mission: the relentless pursuit of excellence in systems integration and automation software is the straight-line that you can draw from our reality today to our vision of tomorrow.<br /> <br /> &nbsp;&nbsp;</div> OLYhttp://www.blogger.com/profile/18111167675345949662[email protected]0tag:blogger.com,1999:blog-2841018452204333072.post-78908086391857415192014-04-24T15:44:00.000-07:002014-04-30T16:03:59.057-07:00Ron Taticek, In Memoriam<div dir="ltr" style="text-align: left;" trbidi="on"> <img alt="ron taticek" src="http://static.zymergi.com/rtaticek.png" style="border-radius: 25%; float: right; margin-bottom: 10px; margin-left: 10px;" /><b>UPDATE: </b>Memorial Service to celebrate Ron's Life will be held at 3pm on Saturday, May 3rd (2014) at:<br /> <b><br /></b> <b><a href="http://grissomsmortuary.com/sitemaker/sites/GRISSO2/obit.cgi?user=1299505Taticek">Grissom's Funeral Home</a> - <a href="https://www.google.com/maps/dir//267+E+Lewelling+Blvd,+San+Lorenzo,+CA+94580/@37.6863397,-122.1173413,17z">map</a></b><br /> 267 East Lewelling Blvd.<br /> San Lorenzo, CA 94580<br /> <br /> ---<br /> I learned today that my mentor and long time advocate, Ron Taticek, passed away. Most recently, Ron was the Director of Technology for Genentech's Vacaville Operations.<br /> <br /> As I look back on my career, he's the guy in the last row of the bleachers rooting for me the entire way.<br /> <br /> In 1994, Ron was completing his doctorate when I was a freshman at Cornell; our paths didn't cross until 1998 when I arrived in California - jobless and he was a Sr. Group Leader in Cell Culture Fermentation R&amp;D (CCFR&amp;D) at Genentech.<br /> <br /> I knew to call Ron because our advisor, <a href="http://www.bme.cornell.edu/people/profile.cfm?netid=mls50">Mike Shuler</a>, told me, "If you're headed west, look up this guy, Ron Taticek and he'll help you."<br /> <br /> I was skeptical, but just as Shuler said, Ron didn't hesitate to help out a kid he'd never met.... whose only connection was through his Ph.D advisor. I called poor Ron once a week asking about jobs at Genentech. (Back then, I thought the tenacity = employment); I called him so many times that I know his phone number to this day: 650-ABLE-JOY.<br /> <br /> He agreed to have an "informal interview" where he had me come to South City and he showed me around and left me with the words, "Companies like Genentech value professional scientific experience. So go and get at least a year's worth of professional scientific experience and then give me a call."<br /> <br /> It turns out that in August 1998, I got a job and it was an awesome medical device job; the only thing wrong with it was that it wasn't bioprocess. And so in August 1999...with a year and two hours of professional scientific experience under my belt, I dialed ABLE-JOY.<br /> <br /> Ron answered cheerfully (he had a very smooth phone voice) and said, "Great to hear from you, there's a junior engineer position up at our new plant in Vacaville: I'll forward your resume!"<br /> <br /> I got that Associate Engineer position in October of 1999 at Vacaville and in 2003, I had the opportunity to work directly with Ron when they were transferring Avastin to Vacaville. &nbsp;It was because of Ron's career jumpstart that I had the opportunity to work with the cell culture greats like Jess Bergevin, Dan Stark, Bob Kiss and Cartikeya Reddy (just to name a few).<br /> <br /> What a lot of people don't know is that Ron Taticek was the lead cell culture engineer in developing the Avastin (version 1.0) cell culture process. The reason - in part - why literally tons of bevacizumab have made it to market is because of Ron's work developing the cell culture process.<br /> <br /> In October 2004 when Ron became the Associate Director of Ferm(entation) MSAT, he asked me to join him in South City. I accepted and reported through him until I left Genentech in 2007, creating awesome tools, doing awesome support, and working with universally awesome people.<br /> <br /> Since 2007, I'd check in with Ron a few times a year; we even sat down to have salads (apparently, our respective wives had put us on diets). &nbsp;It was then that I realized I've known him for 15-years. And it was then that I realized how "there" he was for me since I was some fresh-out-of-school kid. <br /> <br /> Jan 2013 was last time I would see Ron in person... and I'm glad I got the chance to tell him how much I appreciated him. We parted ways like usual: promising to keep in touch as he ambled off to another meeting.<br /> <br /> If there was anything left for me to say to you, Ron, it would be:<br /> <blockquote> Your life's work mattered to millions of people. Your mentorship and advocacy profoundly impacted my life. &nbsp;And your true legacy: N &amp; N will miss you dearly. Though you left us too soon... and it's not fair... you rocked this life by making a difference.<br /> <br /> Rest in peace.</blockquote> </div> OLYhttp://www.blogger.com/profile/18111167675345949662[email protected]20tag:blogger.com,1999:blog-2841018452204333072.post-68251776315692142642014-03-28T06:00:00.000-07:002014-03-28T06:00:08.397-07:00Lowest Number of FDA Inspections Since 2008<div dir="ltr" style="text-align: left;" trbidi="on"> <a href="http://blog.fdazilla.com/2014/02/the-fda-conducted-39774-inspections-in-2013/">FDAzilla</a> has reported that the FDA conducted 39,774 inspections for the year ending 2013.<br /> <br /> I guess on any given day, there are at least 109 auditing teams running around the world inspecting our GMP-regulated existence.<br /> <br /> But it turns out that 39,774 inspections is a 5-year low for the FDA. &nbsp;As FDAzilla puts it, this is the first time since 2008 that the FDA has dipped under 40,000 inspections per year.<br /> <br /> Was it the government shutdown? &nbsp;Was it the sequester? &nbsp;Who knows?<br /> <br /> As we ramp into prime inspection season (Q1/Q2 are known times when there's a lot of FDA activity), how are you guarding against getting dinged by the FDA?<br /> <br /> <ul style="text-align: left;"> <li><a href="http://blog.zymergi.com/2012/08/fda-inspection-483-ready-audit.html">Inspect the (FDA) Inspector</a></li> <li><a href="http://blog.zymergi.com/2013/08/fdazilla-483-deal-for-zymergi-readers.html">FDAzilla offer for Zymergi blog readers</a></li> <li><a href="http://fdazilla.com/store/483s/">Buy 483 documents</a></li> </ul> </div> OLYhttp://www.blogger.com/profile/18111167675345949662[email protected]0tag:blogger.com,1999:blog-2841018452204333072.post-45717339714806944072014-03-25T22:30:00.003-07:002014-03-25T22:35:59.040-07:00ZOOMS 2 - Fastest Way to View Trends<div dir="ltr" style="text-align: left;" trbidi="on"> So in addition to biologics manufacturing commentary, it turns out that Zymergi is actually a for-profit business that provides software, consulting and technical support.<br /> <br /> For 2014, we're pretty much booked on the technical support side, but I wanted to take some time to talk about our software products.<br /> <br /> <div style="float: right; margin:0px 0px 10px 10px;"> <img alt="american hero" src="http://static.zymergi.com/blog-ed-snowden.png" /></div> Our flagship product is ZOOMS, which is an acronym for Zymergi Object-Oriented Metadata Search. &nbsp;And in 2014 - thanks to Edward Snowden, more people know what metadata is than in 2008 when we started ZOOMS (v1.0)<br /> <br /> So why are we interested in searching metadata? Well, let's take a step back. When working the front lines of campaign monitoring and process support, we noticed that viewing trend data (i.e. tag values plotted against time) was the principal component of process understanding. The more trends a person reviewed, the more process knowledge they gained and the more they understood normal from abnormal.<br /> <br /> And in all that time, very few people actually learn to speak "Automationese."<br /> <blockquote> "Hey, did you see that weird thing going on with <span style="font-family: Courier New, Courier, monospace;">T100.GLOBAL.CLX.AI05.PV</span>?"<br /> <cite> - No one ever</cite></blockquote> In the automation world, everything is a tag. In the <a href="http://blog.zymergi.com/2012/07/campaign-monitoring-v-process.html">Manufacturing Sciences world</a>, everything is about a measurable parameter within the process. So when you listen to the process scientists and engineers talk, it's always about some parameter (e.g. "Optical Density") in some unit (e.g. "Tank 100"). That right there is the metadata of a tag.<br /> <br /> The tag takes care of the Y-axis on the trend. What about the X-axis?<br /> <br /> The X-axis deals with time-windows: start times and end times and the metadata around the time-windows are called, "batches." Specifically using S88 terminology, people involved with campaign support are interested in&nbsp;<a href="http://www.batchcontrol.com/s88/01_tutorial/04-recipes.shtml">Unit Procedures</a>, a.k.a. "unitbatches."<br /> <br /> I'll leave the formal definition of "unit procedure" up to the automation gurus, but to a&nbsp;<a href="http://blog.zymergi.com/2012/03/manufacturing-sciences-local-data.html">Manufacturing Sciences data engineer</a>, a unit procedure is a process that happens on a piece of process equipment.<br /> <br /> So say you're making rituximab in production bioreactor T100 using the version 1.1 process and batch R2D201 ran from 20-Dec-2013 to 28-Dec-2013... that there is a unit procedure:<br /> <br /> <table style="border: 1px solid #f1efef; width: 100%;"> <tbody> <tr> <th>batchid</th> <th>unit</th> <th>product</th> <th>procedure</th> <th>start time</th> <th>end time</th> </tr> <tr> <td style="border:1px solid #f1efef;text-align:center;padding:5px;">R2D201</td> <td style="border:1px solid #f1efef;text-align:center;padding:5px;">T100</td> <td style="border:1px solid #f1efef;text-align:center;padding:5px;">rituximab</td> <td style="border:1px solid #f1efef;text-align:center;padding:5px;">production<br /> culture<br /> version 1.1</td> <td style="border:1px solid #f1efef;text-align:center;padding:5px;">20-Dec-13</td> <td style="border:1px solid #f1efef;text-align:center;padding:5px;">28-Dec-13</td> </tr> </tbody></table> <br /> The metadata around this time-window (i.e 12/20/2013 to 12/28/2013) are as follows:<br /> <ul style="text-align: left;"> <li>R2D201</li> <li>T100</li> <li>rituximab</li> <li>production culture version 1.1</li> </ul> <div> So it stands to reason that if an internet user who knows nothing about a subject can type keywords into Google and get the most relevant results on that subject; that in 2014, a process citizen who doesn't know too much about the process ought to be able to type some keywords into a webpage and get some process trends.</div> <div> <br /></div> <div> And now they can: Introducing ZOOMS 2:<br /> <br /> <a href="http://zymergi.com/zooms-search-engine-osisoft-pi.htm?src=blog"><img alt="ZOOMS Search Engine Process Data" src="http://static.zymergi.com/blog-zooms-2.png" /></a> <br /> <br /> <a class="btn btn-xlarge btn-bonsai-garden-4" href="http://zymergi.com/zooms-search-engine-osisoft-pi.htm?src=blog">Learn More</a> </div> </div>OLYhttp://www.blogger.com/profile/18111167675345949662[email protected]0tag:blogger.com,1999:blog-2841018452204333072.post-61077510924852226132014-03-18T22:03:00.002-07:002014-03-18T22:03:27.036-07:00Yes, We're Still Alive<div dir="ltr" style="text-align: left;" trbidi="on"> Yup, we're still alive around here. &nbsp;Crazy busy with some exciting things afoot.<br /> <br /> Next week, we're at the OSIsoft PI User's Conference 2014 in San Francisco: <a href="http://www.osisoft.com/uc2014/"><img alt="OSI PI Users Conference" src="http://static.zymergi.com/blog-uc2014.png" /></a><br /> <br /> So if you're around and want to meet up, come find me <a href="http://twitter.com/zymergi" rel="nofollow">@zymergi</a>.</div> OLYhttp://www.blogger.com/profile/18111167675345949662[email protected]0