Ben Spead · Oct 28, 2021 go to post

Closely related to this topic, make sure to catch the 4 sessions on Embedded Python at Virtual Summit 2021, and see my comment in this thread on how I see incredible power in being able to leverage the python ecosystem as an ObjectScript developer without having to actually write python code: https://community.intersystems.com/post/start-learning-about-embedded-p…

@Nigel Salm  - thank you for taking the time to write this *excellent* article ... I am going to make it required reading for my entire team in order to help them better understand the rich history of the ObjectScript language and Caché/InterSystems IRIS platform!!

Ben Spead · Oct 28, 2021 go to post

I just finished watching the first two videos and wow, wow, wow!!

I'll be honest, I hadn't followed the prior python interoperability work in IRIS because it always seemed to me to be more of a way to allow Python developers to get access to data and logic inside of InterSystems IRIS, and since I am already comfortable working natively inside of IRIS with ObjectScript, that didn't have any appeal to me (why would I want to learn Python in order to call into IRIS when I can already do what I need inside of IRIS?)  However, I was happy for those who already knew Python but didn't want to learn ObjectScript to have tools to reach fetch data out of IRIS, etc.

However, Embedded Python is not at all what I expected (true confession!)  With Embedded Python it looks like there is no reason for me to write Python code or work within Python in order to bring value into my IRIS-based applications running all of their business logic in ObjectScript.  I can leverage 10s of thousands of python modules (ref: https://www.quora.com/Is-there-a-comprehensive-list-of-Python-libraries) without writing a single line of Python code!  This immediately makes available all sorts of calculation, integration and translation packages which I would have had to write and maintain myself in ObjectScript or access via a more complicated self-built bridge into a Python runtime environment).  This is REALLY powerful and ATTRACTIVE to me as an ObjectScript developer, setting with an extraordinarily low bar to start using it (I only need to figure out management of .py files as part of my CICD).  I had no idea that Embedded Python would be so immediately relevant to me as an ObjectScript developer!

I think the best analogy I can come up with is the complementary power of ObjectScript and SQL which I rely on every day.  No one would want to use ObjectScript without the various ways of executing SQL from within the environment.  You could do it (iterate through objects / globals to fetch the data elements that you want) but why would you want to when you have the power and elegance of SQL to simplify data access for you?  I see Embedded Python as having the potential to be just as powerful as SQL within my ObjectScript application, but exposing *reusable logic* to me, rather than exposing *data*.  Leveraged properly, Embedded Python has the promise of drastically cutting down what I need to implement myself in ObjectScript ... if I can find a Python library that already does what I want, then I can wrap that in a couple lines of ObjectScript and start using it immediately.  That is so incredibly powerful.

Thank you @Bob Kuszewski  and team for bringing this new feature into InterSystems IRIS - I look forward to seeing how we can use it to make ObjectScript-based application development even faster than before!

Ben Spead · Oct 12, 2021 go to post

NOTE - initial set of new angular-based pages is now live for all users.  Beta testers will continue to get to see newer pages before they get rolled out to everyone.  To find the current list of pages in Beta test mode, see https://ccr.intersystems.com/ccr/ng/faqs and search for 'beta' in the search box 

Ben Spead · Oct 11, 2021 go to post

thanks @Luca Ravazzolo  ... so in the case of day2 operations you really can't take the source control rollback approach to back out the change to default behavior... unless you are versioning you CPF files post CPF Merge, you must do another CPF Merge change, and know what the prior values were in order to actually revert the change in the environmental, correct?

Ben Spead · Oct 8, 2021 go to post

great work JD!  thank you for making this available for beta testing :)

Ben Spead · Oct 5, 2021 go to post

Thanks Mike for your work on this - it is great seeing more of the application move over to the new UI!!

Ben Spead · Sep 21, 2021 go to post

@sween  - this is really great, thank you!

My team at InterSystems is actually working on a project to move diff-based code changes between environments using GitLab.  My question for you is whether you have a suggestion for a strategy for only importing the changed files in the target environment?  As you know, applications can get large and complex and build-times can get pretty long.  If only a handful of files have changed, reimporting the entire application (or in the case of your example, 3 applications) would cause excess and unnecessary downtime for users.  What we have been doing with CCR around the world at HealthShare and TrakCare sites for over a decade is executing targeted imports which only reload changed code.  Is there a Git-based strategy that you can recommend for building out the foundation of doing something similar?   I.e. isolating the files impacted by the merge and only pulling those in?

Thanks for any thoughts on this.

(note: @Timothy Leavitt )

Ben Spead · Sep 17, 2021 go to post

Thank you very much @Vitaliy Serdtsev !  The Scalar Functions and Streams Doc got me what I needed (along with your example).   Here was my query:

select RecordID, ImportTimeStamp, Name, SUBSTRING(LogHistory,DATALENGTH(LogHistory)-200) As LogTail from MyClass.withStreamProperty where ORDER BY RecordID, ImportTimeStamp
 

Ben Spead · Sep 9, 2021 go to post

@Stephen Ali - thanks for asking the question (and welcome to the Developer Community!).

Typically detailed questions like this on TrakCare products are worked out directly with InterSystems Support.  Globally we have TrakCare product tuned to regional requirements so it's important to connect with you product specialists from your specific region.  

I suggest you go to https://www.intersystems.com/support-learning/support/ to see how to contact Support and they can help you get this question sorted out.

Ben Spead · Sep 8, 2021 go to post

Thanks Chris!  Interesting article and it got me what I needed  :)  I ended up writing and testing the same thing as Muhammad posted for an answer and it works for Outlook (which is good enough for me for now)

Thanks again!

Ben Spead · Sep 3, 2021 go to post

Just curious - where are you seeing this?  Could you please include a URL?

The InterSystems SSO account is what controls your access to open as well as restricted applications provided by InterSystems to help customers and prospects get stuff done.  If you go to Login.InterSystems.com you can see the various apps available to you (after you sign in).  This would include things like D.C., OEX, Learning, Download, etc for Prospects, and supported customers would also get access to WRC, iService, HS Docs, CCR, etc (depending on what products they have).

Hope that helps - let me know if any additional clarification is needed.

Ben Spead · Aug 20, 2021 go to post

Great tip ... I never knew this!!  Thank you for sharing as this always bugged me not to he able to use these keyboard shortcuts:)

Ben Spead · Aug 20, 2021 go to post

Great tip ... I never knew this!!  Thank you for sharing as this always bugged me not to he able to use these keyboard shortcuts:)

Ben Spead · Aug 16, 2021 go to post

I completely agree with @Timothy Leavitt here.  Besides the speed of the DB, the core value of Caché (now IRIS) for the past 2 decades that I have used it has been the ability to create just about anything I needed within an application without needing to bolt on additional tools, additional layers, additional languages, or additional dependencies.  Directly access business logic on the server from the web page, directly instantiate and work against objects anywhere in your code - there is no 'throwing things over the wall' to the DB guy, or to the microservice guy, you just code what you need in ObjectScript and be done with it.  
To @Robert Cemper 's point below, I really don't think it takes an Artist to be able to write and support this kind of code, just a talented developer with some good OO skills.  I do think you need to be able to find Artists to support the legacy M applications which are still floating around, but it is pretty straight-forward to get the full power of the stack for new applications while avoiding modes of use which would require a "Priest" to be able to interpret it in the future.  
Having recently been involved in another initiative for several months that was not DB-centric development, and having witnessed how much harder it seemed to be and more time intensive to piece together the different disparate technologies at different levels of the stack in order to make a full solution, it reminded me of why I fell in love with Caché in the first place and made me excited to get back to full stack dev in on a single integrated platform :)  

 

Ben Spead · Aug 16, 2021 go to post

Thanks for the heads up @Bren Mochocki!  This is being looked into as we speak.  No eta on when it will be restored as of right now....