Search

Clear filter
Announcement
Anastasia Dyubaylo · Jul 16, 2018

Group: Prague Meetup for InterSystems Data Platform

Hi Community!User or developer working with Caché, Ensemble or other InterSystems products? Healthcare or banking IT professional? Or just a developer seeking new challenges?Come and join us for discussing what's up once you are in Prague, Czech Republic, or near by! We'll share news and experience on how to develop modern big-data, multi-model oriented applications.Please, feel free to ask your questions about InterSystems Meetup group in Prague. @Daniel.Kutac and @Ondrej.Hoferek will provide details.
Announcement
Jeff Fried · Sep 29, 2018

InterSystems Caché and Ensemble 2018.1 Release

InterSystems is pleased to announce that InterSystems Caché and Ensemble 2018 are now released!New in these releases are features that improve security and operations, including:· Key Management Interoperability Protocol (KMIP) support· Microsoft Volume Shadow Copy (VSS) integration· Integrated Windows Authentication support for HTTP· SSH enhancementsThe releases also include many important updates and fixes.See the documentation for release notes and upgrade guides for both Caché and Ensemble. The platforms for these releases are the same as for 2017.2. Full details can be found in this supported platforms document.
Article
Eduard Lebedyuk · Sep 10, 2018

Dynamic objects and JSON support in InterSystems products

Generally speaking, InterSystems products supported dynamic objects and JSON for a long while, but version 2016.2 came with a completely new implementation of these features, and the corresponding code was moved from the ObjectScript level to the kernel/C level, which made for a substantial performance boost in these areas. This article is about innovations in the new version and the migration process (including the ways of preserving backward compatibility).Working with JSONLet me start with an example. The following syntax works now and it’s the biggest innovation in ObjectScript syntax: Set object = { "property": "val", "property2": 2, "property3": null } Set array = [ 1, 2, "string", true ] As you can see, JSON is now an integral part of ObjectScript. So what happens when values are assigned this way? The “object” becomes an instance of the %Library.DynamicObject object, while “array” is an instance of %Library.DynamicArray. They are both dynamic objects. Dynamic objects Cache had dynamic objects for a while in the form of the %ZEN.proxyObject class, but now the code has been moved to the kernel for greater performance. All dynamic object classes are inherited from %Library.DynamicAbstractObject, which offers the following functionality: Getting an object from a JSON string, stream, fileOutput of an object in the JSON format to a string or variable, automatic detection of the output format depending on contextWriting an object to a file in the JSON formatWriting an object to a globalReading an object from a global Transition from %ZEN.proxyObject So you want to migrate from %ZEN.proxyObject/%Collection.AbstractIterator towards %Library.DynamicAbstractObject? This is a relatively simple task that can be completed in several ways: If you are not interested in compatibility with versions of Caché earlier than 2016.2, just use Ctrl+H thoughtfully and you’ll be fine. Keep in mind, though, that indexes in arrays start with a zero now and you need to add $ to the names of system methodsUse macros that transform the code into the necessary form during compilation depending on the version of Caché.Use an abstract class as a wrapper for corresponding methods The use of the first method is obvious, so let’s focus on the remaining two. Macros An approximate set of macros that work with either new or old dynamic objects class depending on the availability of %Library.AbstractObject. Macros property #if $$$comClassDefined("%Library.dynamicAbstractObject") #define NewDynObj {} #define NewDynDTList [] #define NewDynObjList $$$NewDynDTList #define Insert(%obj,%element) do %obj.%Push(%element) #define DynObjToJSON(%obj) w %obj.%ToJSON() #define ListToJSON(%obj) $$$DynObjToJSON(%obj) #define ListSize(%obj) %obj.%Size() #define ListGet(%obj,%i) %obj.%Get(%i-1) #else #define NewDynObj ##class(%ZEN.proxyObject).%New() #define NewDynDTList ##class(%ListOfDataTypes).%New() #define NewDynObjList ##class(%ListOfObjects).%New() #define Insert(%obj,%element) do %obj.Insert(%element) #define DynObjToJSON(%obj) do %obj.%ToJSON() #define ListToJSON(%obj) do ##class(%ZEN.Auxiliary.jsonProvider).%ObjectToJSON(%obj) #define ListSize(%obj) %obj.Count() #define ListGet(%obj,%i) %obj.GetAt(%i) #endif #define IsNewJSON ##Expression($$$comClassDefined("%Library.DynamicAbstractObject")) This code: Set obj = $$$NewDynObj Set obj.prop = "val" $$$DynObjToJSON(obj) Set dtList = $$$NewDynDTList Set a = 1 $$$Insert(dtList,a) $$$Insert(dtList,"a") $$$ListToJSON(dtList) Will compile into the following code for Cache version 2016.2+: set obj = {} set obj.prop = "val" w obj.%ToJSON() set dtList = [] set a = 1 do dtList.%Push(a) do dtList.%Push("a") w dtList.%ToJSON() For previous versions, it will look like this: set obj = ##class(%ZEN.proxyObject).%New() set obj.prop = "val" do obj.%ToJSON() set dtList = ##class(%Library.ListOfDataTypes).%New() set a = 1 do dtList.Insert(a) do dtList.Insert("a") do ##class(%ZEN.Auxiliary.jsonProvider).%ObjectToJSON(dtList) Abstract class The alternative is to create a class that abstracts the dynamic object being used. For example: Class Utils.DynamicObject Extends %RegisteredObject { /// A property storing a true dynamic object Property obj; Method %OnNew() As %Status { #if $$$comClassDefined("%Library.DynamicAbstractObject") Set ..obj = {} #else Set ..obj = ##class(%ZEN.proxyObject).%New() #endif Quit $$$OK } /// Getting dynamic properties Method %DispatchGetProperty(pProperty As %String) [ Final ] { Quit ..obj.%DispatchGetProperty(pProperty) } /// Setting dynamic properties Method %DispatchSetProperty(pProperty As %String, pValue As %String) [ Final ] { Do ..obj.%DispatchSetProperty(pProperty,pValue) } /// Converting to JSON Method ToJSON() [ Final ] { Do ..obj.%ToJSON() } } Using this class is completely identical to working with a regular one: Set obj = ##class(Utils.DynamicObject).%New() Set obj.prop = "val" Do obj.ToJSON() What to choose It’s totally your call. The option with a class looks more conventional, the one with macros is a bit faster thanks to the absence of intermediate calls. For my MDX2JSON project, I chose the latter option with macros. The transition was fast and smooth. JSON performance The speed of JSON generation went up dramatically. The MDX2JSON project has JSON generation tests that you can download to see the performance boost with your own eyes! Conclusion New dynamic objects and improvements in JSON support will help your applications work faster. Links Documentation
Discussion
Sean Connelly · Sep 12, 2018

How many InterSystems product developers are there worldwide?

I know we have nearly 5000 members on the DC site, but not even sure if this is a majority share or a minority share. Anyone have a good guesstimate? Sean. Thanks Evgeny, probably sounds about right.I would hazard a guess then that upwards of 0.1% of developers worldwide use Caché in one shape or form.It's interesting to compare that to the last stackoverflow survey...https://insights.stackoverflow.com/survey/2018/#technology-databasesespecially since some of those at the bottom of the list are developed on top of Hadoop, opens up some ideas for what could be possible on top of the IRIS Hadoop platform.On a side note, how about an annual DC survey? Would give some fascinating insights. Hi Sean! Moved the discussion to the Other group.4,800+ are the registered members, stats. We also have about 20,000 unique DC visitors monthly.From them we have about 3,000 visitors who come directly to the site - so we can assume as "real" developers who reads/writes on DC daily. But this touches only the English world. And not all of them know about DC. My evaluation is 10,000-15,000 developers worldwide.E.g. last the IT Planet contest in Russia this year gathered 2,400 participants for InterSystems contest (mostly students). Should we count students as developers? Today maybe not, but tomorrow...
Announcement
Stefan Cronje · Oct 6, 2018

Debug Stack for InterSystems Cache, Ensemble and IRIS

Hey folks,I've shared a debug stack we created on the Open Exchange.I want to post the link here, but need the link to this article for the Open Exchange. Which came first, the chicken or the egg? The github link: https://github.com/stefanc82/Cache-Debug-Stack Please show a sample output. The repo contains an example. Here is an example of exporting the stack to a string in terminal DEV>set sc = ##class(Examples.DebugStack).TestDebugStack() Examples.DebugStack TestDebugStack Calling Method InnerStackTest with value: 5 | |- Examples.DebugStack TestInnterStack pVal argument: 5 | |- Examples.DebugStack TestInnterStack tMyVal: 15 | |- Examples.DebugStack TestInnterStack Calling TestThirdLevelStack with tMyVal: 15 | | |- Examples.DebugStack TestThirdLevelStack pVal argument: 15 | | |- Examples.DebugStack TestThirdLevelStack tFinalVal: 35 | |- Examples.DebugStack TestInnterStack TestThirdLevelStack completed OK Examples.DebugStack TestDebugStack TestInnerStack completed OK DEV> It will be more readable if placed in a text file or a CSV. The "columns" are tab delimited. It has the option of providing output to a string or a global character stream. The "egg" is available now on Open Exchange )
Article
Eduard Lebedyuk · Oct 8, 2018

Configuring Apache to work with InterSystems products on Linux

InterSystems products (IRIS, Caché, Ensemble) already include a built-in Apache web server. But the built-in server is designed for the development and administration tasks and thus has certain limitations. Though you may find some useful workarounds for these limitations, the more common approach is to deploy a full-scale web server for your production environment. This article describes how to set up Apache to work with InterSystems products and how to provide HTTPS access. We will be using Ubuntu, but the configuration process is almost the same for all Linux distributions.Installing ApacheI assume that you have already installed let's say Caché to /InterSystems/Cache.By default, Caché is supplied with a plugin for Apache, so you can simply go to /InterSystems/Cache/csp/bin and select the corresponding file:CSPa24.so (Apache Version 2.4.x)CSPa22.so (Apache Version 2.2.x)CSPa20.so (Apache Version 2.0.x)CSPa.so (Apache Version 1.3.x)If several are available it's better to choose the latest one.Now it's time to install Apache. For Ubuntu execute apt-get update apt-get install apache2 zlib1g-dev In some OSes, there's no apache2 package (you'd get an "unable to locate package" error) and it's named httpd instead. If there's no apache build for your OS in the default repositories, I recommend searching for a repository against building apache yourself. While it's possible, it's fairly challenging and binaries generally could be found. Once the installation is complete, make sure that the installed Apache version meets the requirements: apache2 -v Then open the full list of modules to check whether 'mod_so' is on the list: apache2 -l So, Apache is now up and running. To test your Apache installation, type the IP address of your server in a web browser and see if the following page appears: Apache config structure Again, this can change depending on your OS and Apache versions but usually, Apache has the following configuration structure: In here: apache2.conf - main config file, loads first and loads everything elseenvvars - default environment variables for apache2ctlports.conf - ports that apache listens (usually 80 and 443)conf-available/conf-enabled - configuration snippets that are available or enabledmods-available/mods-enabled - mods (for example we need to add CSP mod to work with InterSystems products)sites-available/sites-enabled - sites (i.e. on port 80, on port 443, on host test.domain.com and so on) There are also several utilities to run and configure Apache: apache2 - main program (can be used to run apache2 in debug mode)apache2ctl - Apache control interfacea2enconf, a2disconf - enable or disable an apache2 configuration filea2enmod, a2dismod - enable or disable an apache2 modulea2ensite, a2dissite - enable or disable an apache2 site / virtual hostservice apache2 - manages apache2 in service mode Linking CSP to Apache Now that Apache is up and running let's connect it to Cache. To do this, make some changes to the Apache configuration. Edit the following files:1. /etc/apache2/envvars contains the environment variables. Set the variables APACHE_RUN_USER and APACHE_RUN_GROUP to cacheusr or (irisusr for InterSystems IRIS) 2. In a mod directory /etc/apache2/mods-available create a new mod - a file named CSP.load: CSPModulePath /InterSystems/Cache/csp/bin/ LoadModule csp_module_sa /InterSystems/Cache/csp/bin/CSPa24.so AddHandler csp-handler-sa csp cls cxw zen 3. Enable CSP module using a2enmod programm 4. Create a new site in /etc/apache2/sites-available named Cache80.conf: <IfModule mod_ssl.c> <VirtualHost _default_:80> ServerName test.domain.com DocumentRoot "/InterSystems/Cache/csp" ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined LogLevel info <Location /> CSP On SetHandler csp-handler-sa </Location> <Location "/csp/bin/Systems/"> SetHandler csp-handler-sa </Location> <Location "/csp/bin/RunTime/"> SetHandler csp-handler-sa </Location> DirectoryIndex index.csp index.html index.htm </VirtualHost> </IfModule> 5. Using a2dissite/a2ensite disable old site on port 80 and enable Cache site 6. Restart apache with: service apache2 restart 7. Open http://<ip>/csp/sys/UtilHome.csp and see if the system management portal appears: If apache didn't start, check the logs - it usually points to the problem line in configuration. Run apachectl configtest to check your configuration. If there's no pointer to error or configtest says that everything is fine, try starting apache in a foreground apache2 -DFOREGROUND -e debug If you're getting "application path" error it means that apache is unable to access CSP\bin directory and CSP.ini file inside. SSL Now let's set up https. To do this, you need a domain name, they start at $2/year. After you bought your domain name and configured DNS A record to point to your IP address go to any certificate authority for certificates. I'll show how it can be done with Let's Encrypt for free. 1. Using a2dissite/a2ensite disable Cache site on port 80 and enable default site 2. Restart apache with: service apache2 restart 3. Follow these instructions (I recommend forcing http->https redirect) 4. Create new site combining SSL configuration and Cache site: <IfModule mod_ssl.c> <VirtualHost _default_:443> ServerName test.domain.com DocumentRoot "/InterSystems/Cache/csp" ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined LogLevel info <Location /> CSP On SetHandler csp-handler-sa </Location> <Location "/csp/bin/Systems/"> SetHandler csp-handler-sa </Location> <Location "/csp/bin/RunTime/"> SetHandler csp-handler-sa </Location> #DirectoryIndex index.csp index.php index.html index.htm DirectoryIndex index.html SSLCertificateFile /etc/letsencrypt/live/test.domain.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/test.domain.com/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf ServerAlias test.domain.com </VirtualHost> </IfModule> Make sure that 'Server Name' matches the 'commonName' parameter in the server certificate, and that the paths to all keys (server key 'SSLCertificateKeyFile', server certificate 'SSLCertificateFile' issued by the certificate authority) are valid. 5. Enable it, disable default SSL site, enable Cache SSL site 6. Restart apache with: service apache2 restart 7. Check whether the system management portal is now available at https://<ip>/csp/sys/UtilHome.csp 8. Enable auto-updating certificate. Edit crontab with: crontab -e and add a line there: 0 0 * * 0 certbot renew Summary It's easy to start running Apache server with InterSystems products. Increase security by implementing HTTPS on your sites. Links DocumentationApache documentation The configuration structure for apache is actually much more dependent on which distribution you are using than the OS. There are pretty huge differences in the way Ubuntu/SuSE/RH/Centos are setting things up. Even down to some of them calling the system service apache vs apache2 vs httpd. There are also differences with some of them using systemd vs still the old sysvinit. The good news is, you can always re-arrange your apache config to your liking. Please also note, setting ~~~ CSP On SetHandler csp-handler-sa ~~~ Is redundant. CSP On on a path already maps all filetypes to be handled by the gateway. Adding the sethandler doesn't add anything. If you are omitting CSP On, but use the csp-handler-sa as detailed above, the gateway will not serve static files. Either you will need to add them (ok for low traffic sites), or you will need to configure apache to serve the static files directly (if your apache is not on the same machine as your instance you will need to copy the static files or mount a network drive) Thanks for the info, Fabian.I myself am a fan of Ubuntu structure, do you know how to get that automatically on other OSes, primarily CentOS?
Announcement
Evgeny Shvarov · Oct 9, 2018

InterSystems Open Exchange - New Service for Developers!

Hi, Community!I'm pleased to announce that InterSystems Open Exchange is now operating and available for everyone!InterSystems Open Exchange is a gallery of software Solutions, Technology Examples, and Frameworks which were developed with InterSystems Data Platforms: Caché, Ensemble, HealthShare, InterSystems IRIS or InterSystems IRIS for Health.Also, it is a place where you can find tools and solutions which can help you with development, deployment and support the solutions built with InterSystems Data Platforms.Open Exchange is the new online service for developers on InterSystems Data Platforms in addition to Online Learning, Documentation and Community! Find solutions and examples you need, upload tools and share code snippets you developed and let InterSystems Data Platforms technology be more helpful for your business and software development!Please feel free to share your feedback here on Developer Community with Open Exchange tag and you can report bugs and enhancement requests in this public repository of open exchange.Stay tuned!
Article
Evgeny Shvarov · Oct 18, 2018

How to Publish an Application on InterSystems Open Exchange?

Hi Community!As you know we launched the InterSystems Open Exchange — the marketplace for solutions and tools on InterSystems Data Platforms!But how to publish your application on OE?Before we start, let me answer the few basic questions.Who can publish?Basically, everyone. You can sign in to Open Exchange with your InterSystems Developer Community or WRC account.What is the application?Open Exchange application is a solution, tool, interoperability adapter or interfaces developed using any InterSystems Data Platforms product: Caché, Ensemble, HealthShare, InterSystems IRIS or InterSystems IRIS for Health.Or this tool or solution should help in the development, testing, deployment or management solutions on InterSystems Data Platforms.What is the application for Open Exchange? Actually, it is the name, description and set of links to the application entries: download page, documentation, code repository (if any), license, etc.Let me illustrate the process with my personal example.Submitting the Application to Open ExchangeIn order to illustrate the procedure, I developed a fantastic application on ObjectScript for InterSystems IRIS and want to share it with Developer Community: Ideal ObjectScript.It demonstrates the ideal usage of ObjectScript coding guidelines for various ObjectScript use cases.There are mandatory fields, which need to be presented on every Open Exchange application.1. Name - a unique to Open Exchange name for the application2. Description - description of the application. The field supports markdown.3. Product URL - the link to a Download page of your application. 4. License - the link to the page which shows the license for your application.5. InterSystems Data Platforms - set of InterSystems Data Platforms your application is intended for.All the rest fields are optional.So, let's submit my app.I have the Name: Ideal ObjectScriptDescription: Ideal ObjectScript demonstrates the ideal usage of InterSystems ObjectScript coding guidelines for various ObjectScript use cases.Product URL: https://github.com/evshvarov/ideal_objectscript/releases/tag/1.0 - the link to 1.0 version on Github releases section of the app.License URL: https://github.com/evshvarov/ideal_objectscript/blob/1.0/LICENSE - the link to the LICENSE file of the app.InterSystems Data Platforms: And the application supports InterSystems IRIS, Caché, and Ensemble - this is the list of InterSystems products I tested the application with by myself.With that, we are ready to submit the app.Application versionOnce you click Send For Approval you need to provide the version of the app and release notes. We use Semver for versioning. The release notes will be published in the Open Exchange News, DC Social Media and version history section of the app.After that application enters the approval workflow which results with approval and automatic publishing on OpEx or with some recommendations on how to correct the application's descriptions and links.Enter Additional parametersImage URLplace an URL to an image icon of your app to let it be displayed on a tile. You can omit this and the standard OpEx icon will be shown.Github URLPlace the link to a Github repository if you have it for your application. We have the integration with Github on Open Exchange, so if you introduce the link to the Github repository of your app Open Exchange will show the description from Github automatically (everything which is listed in Readme.md). E.g. see how Ideal ObjectScript page is displayed on Open Exchange.Community Article URLOf course, you can tell about your application on Developer Community with the nice article so place the URL to it here!As you can see the procedure is very simple! Looking forward to seeing your InterSystems Data Platforms applications on Open Exchange!Stay tuned! That's great !Does it have to be a Github repo or can I use BitBucket ?Also - if we find an error (eg WebTerminal on IRIS), can we leave a comment generally or for the developer ?Steve Hi, Steve!Thanks for your feedback! Does it have to be a Github repo or can I use BitBucket ?It can be any public repository: Github, BitBucket or Gitlab. But today we have the embedded support only for Github. E.g. if you submit Github repo in the application OE will use README.md as description, LICENSE.md as license and we plan to introduce more support in the near future.You can add the request for BitBucket support in Open Exchange issues.Also - if we find an error (eg WebTerminal on IRIS), can we leave a comment generally or for the developer ?Every application has either repo with issues or the support link which are intended to receive feedback, bug reports, and feature requests.If you find an error on Open Exchange, please submit it here! ) @Evgeny can you tell me:How to edit an application (title, image, description, etc.) after published? I can't find the option.And also, how to you publish new versions?many thanks! Hi, David!Thanks for the question!Today the procedure is the following: Unpublish, Edit, Send for Approval again. I've previously logged this issue #1 at https://github.com/intersystems-community/openexchange/issues/1 Good to know. I'll be tuned to the issue. Thanks And we have video instruction for this now. Hi @Evgeny.Shvarov The "Image URL" has some default dimension? I would like to change my application icon. Hi @Henrique! We updated the interface and now it's the matter of click Upload Image menu in the App Editor. See the article. Let me know if this works! Hi @Evgeny.Shvarov Thanks for the link to the updated article. I found out the error using the Google Chrome DevTools. I was trying to upload an image in a Published App. In the DevTools console I got the error: POST https://openexchange.intersystems.com/mpapi/packages/image/446 500 (Internal Server Error) Using the Network tab, I could see the details in the Response: { "errors":[ { "code":5001, "domain":"%ObjectErrors", "error":"ERROR #5001: You can't to change title image of the published package. Please, unpublish package or create draft.", "id":"GeneralError", "params":["You can't to change title image of the published package. Please, unpublish package or create draft." ] } ], "summary":"ERROR #5001: You can't to change title image of the published package. Please, unpublish package or create draft." } As a suggestion, this response could be shown in a toast message? Thanks, @Henrique.GonçalvesDias ! Filed here
Announcement
Evgeny Shvarov · Oct 26, 2018

5,000 Members in InterSystems Developer Community!

Hi Community!I'm pleased to announce that InterSystems Developer Community reached 5,000 registered members!Thank you, developers, not only for registering but rather for making this place more and more helpful for everyone who develops and supports solutions on InterSystems Data Platforms all over the world! Big applause to all of us! Here are some other statistics what makes Developer Community crowdy and helpful:800+ articles, stats2,800+ questions and answers, stats100 applications on Open Exchange100+ videos on Developer Community YouTube600+ InterSystems Global Masters members – a club of InterSystems technology Advocates.Thank you for your continuous feedback in DC Feedback group and public issue tracker. And special thanks to our noble Developer Community Team: Content Manager @Anastasia.Dyubaylo, Global Masters Managers: @Olga.Zavrazhnova2637 and @Julia.Fedoseeva, and DC Moderators: @Robert.Cemper1003, @Eduard.Lebedyuk , @Dmitry.Maslennikov and @John.Murray.So!Dear Developers! We in DC team will continue to work hard to make InterSystems Developer Community the best and the most convenient place to ask questions, share experience and discuss the best practices on InterSystems Data Platforms.Thank you for your choice and your contribution, and do not hesitate to provide feedback and enhancement requests!Stay tuned! Evgeny Shvarov,Community Manager. Congratulations to the community 5000 - is a house number. Congratulations to all of us.
Announcement
Anastasia Dyubaylo · Oct 31, 2018

InterSystems Global Summit 2018 Keynotes Videos

Hi Community! See all the Key Notes videos from Global Summit 2018 in a dedicated Global Summit 2018 Keynotes playlist on DC YouTube Channel! 1. Our Investment In the Future – presented by Terry Ragon, CEO, Founder, and Owner of InterSystems. 2. Data Fueling the 21st Century – presented by Paul Grabscheid Vice President, Strategic Planning at InterSystems. 3. InterSystems IRIS: The Engine For Next Generation Solutions – presented by Carlos Kühl Nogueira, General Manager, Data Platform Initiatives, InterSystems. 4. Where Vision Meets Reality - Our Partnership With InterSystems – presented by Vish Anantraman, Chief Information Architect, Northwell Health. 5. Turning Data into Results with InterSystems IRIS – presented by Manoel Amorim, President, Facilit. 6. Accelerating What Matters in Healthcare – presented by @Donald.Woodlock, Vice President, HealthShare, InterSystems. 7. Disrupting Healthcare: Clinical Lab 2.0 – presented by Sam Merkouriou, President, Rhodes Group and Steve Ayer, Chief Information Officer, TriCore Reference Laboratories. 8. Creating A High-Performance Organization - Panel Discussion – presented by Tom Keppeler, Director of Communications, InterSystems. 9. Driving High Performance Through Digital Customer Engagement – presented by Ian Bonnet, Managing Director, PricewaterhouseCoopers. 10. What Can a Developer Learn From a Robot to Unlock Creativity? – presented by Gil Weinberg, Ph.D., Founding Director, Georgia Tech Center for Music Technology. 11. Technology Trends on InterSystems IRIS Data Platform – presented by @Jeffrey.Fried, Director of Product Development, Data Platforms, InterSystems and @Joseph.Lichtenberg, Product and Industry Marketing Director, Data Platforms, InterSystems. 12. How Affective Computing is Changing Patient Care – presented by Rosalind Picard, Sc.D., Founder and Director, Affective Computing Research Group, MIT Media Lab. BIG APPLAUSE TO ALL THE SPEAKERS! And... If you want to learn more about Global Summit 2018, follow this link. Enjoy and stay tuned on Developer Community YouTube Channel!
Announcement
Anastasia Dyubaylo · Nov 7, 2018

New Video: Using Blockchain with InterSystems IRIS

Hey Developers!New session recording from Global Summit 2018 is available on InterSystems Developers YouTube Channel:Using Blockchain with InterSystems IRIS This video will cover the applicability of blockchain technology to address current business challenges, and will present a live application using InterSystems IRIS with blockchain integration.Takeaway: I can integrate blockchain technology with InterSystems IRIS.Presenters: @Joseph.Lichtenberg and @Evgeny.ShvarovBig applause for these speakers, thank you guys! Additional materials to the video you can find in this InterSystems Online Learning Course.Enjoy and stay tuned with InterSystems Developers YouTube! Thanks, Anastasia!Also the Ethereum Interoperability Adapter is available on InterSystems Open Exchange. Hi Anastasia, The video is very interesting. Is-it possible to retrieve the script of the demo ? I work on this subject with my team.RegardsEric Hi Eric!Thanks for your interest!Conctacted you directly.
Announcement
Jeff Fried · Nov 12, 2018

InterSystems IRIS 2018.2 available in preview

InterSystems IRIS Data Platform™ version 2018.2 is now available as a preview release. This is the first release in our new quarterly continuous-delivery (CD) release stream. (Check out the announcement about InterSystems’ new release cadence for InterSystems IRIS) InterSystems IRIS 2018.2 includes important updates and fixes, as well as new features that improve performance, interoperability, and cloud deployment. For example, you'll find in this release:InterSystems Cloud Manager support for availability zones, async mirroring, and service discoveryKey Management Interoperability Protocol (KMIP) supportIntegrated Windows Authentication support for HTTPSQL performance optimizations, including Auto-parallel queries and Tune TableJava support for Hibernate 5.2 or 5.3, Bulk loader utility with Java, and shared memory support for Java GatewayPreview releases like this one give our customers an early start working with new features and functionality. They are supported for evaluation, development, and test purposes, but not for production.You can download the release on a new preview portal at the WRC download center, and the documentation is here.
Announcement
Anastasia Dyubaylo · Jun 16, 2023

InterSystems Developer Ecosystem Spring News 2023

Hello and welcome to the Developer Ecosystem Spring News! This spring we've had a lot of online and offline activities in the InterSystems Developer Ecosystem. In case you missed something, we've prepared for you a selection of the hottest news and topics to catch up on! News 💡 InterSystems Ideas News #5, #6 🔥 Global Masters: get points for your ideas on Ideas Portal 📝 InterSystems Studio is deprecated, starting with 2023.2 📝 Documentation for InterSystems Caché and InterSystems Ensemble versions prior to 2017.1 will only be available in PDF format 📝 Early Access Programs (EAPs) 📝 Take part in the FHIR R5 Quality Review! ✅ HealthShare Unified Care Record Earns National Committee for Quality Assurance Certification 👋 Caelestinus 2023 Kickoff Event ♨ April 4, 2023 - Alert: Incorrect Query Results ♨ April 10, 2023 - Alert: ECP Client Instability ♨ April 27, 2023 - Alert: Database and Journal Corruption when Using Encryption ♨ Get Alerts, Advisories and other Product News directly from InterSystems Contests & Events InterSystems IRIS Cloud SQL and IntegratedML Contest Contest Announcement Kick-off Webinar Technology Bonuses Time to Vote Technical Bonuses Results Winners Announcement Meetup with Winners Tech Article Contest: InterSystems IRIS Tutorials Announcement Bonuses Winners 📄 [DC Contest] 2nd InterSystems Tech Article Contest in Portuguese ⏯️ [Webinar] Webinar in Spanish: "EMPI: Set up and use case" ☕️ [Meetup] In-person Developer Meetup in Boston: Making Sense of Healthcare Data with SQL and Python Pandas ☕️ [Meetup] Benelux Caché User Group Meetup Latest Releases ⬇️ Developer Community Release, Spring 2023 Edition ⬇️ Improving your posting experience ⬇️ Caché and Ensemble Maintenance Releases ⬇️ InterSystems announces availability of InterSystems IRIS, IRIS for Health, & HealthShare Health Connect 2022.1.3 ⬇️ InterSystems announces General Availability of InterSystems IRIS, IRIS for Health, HealthShare Health Connect, & InterSystems IRIS Studio 2023.1 ⬇️ InterSystems IRIS, IRIS for Health, & HealthShare Health Connect 2023.1 developer previews Preview 3 Preview 4 Preview 5 ⬇️ InterSystems IRIS, IRIS for Health, & HealthShare Health Connect 2023.2 developer previews Preview 1 Preview 2 ⬇️ Zen Reports to be removed from InterSystems IRIS and IRIS for Health beginning with version 2025.1 ⬇️ Caché, Ensemble, and HSAP 2018.1.8 released ⬇️ IAM 3.2 Release Announcement ⬇️ IKO (InterSystems Kubernetes Operator) 3.5 Release Announcement Best Practices & Key Questions 🔥 Best Practices of Spring 2023 ZPM Simple Implementation Cookbook Welcome irissqlcli - advanced terminal for IRIS SQL Query as %Query or Query based on ObjectScript Machine Learning in IRIS using the HuggingFace API and/or ml models in local ( using Python ) Debugging Trick with SQL Data anonymization, introducing iris-Disguise Enterprise Monitor and HealthShare CI/CD with IRIS SQL Using Docker with your InterSystems IRIS development repository Debugging Web Debug the ObjectScript code using VSCode ❓ Key Questions of Spring 2023: March, April, May People and Companies to Know About 🌟 Global Masters of Spring 2023: March, April, May Job Opportunities 💼 IRIS system administrators - Stanford Healthcare 💼 InterSystems IRIS Technology Role Remote 💼 IRIS Developer - Health Data Management Engineer, Lead 💼 Job Opportunity for IRIS Senior Developer in SA So... Here is our take on the most interesting and important things! What were your highlights from this past season? Share them in the comments section and let's remember the fun we've had!
Announcement
Emily Geary · Jul 14, 2023

Familiarize yourself with InterSystems Certification's Recertification Policy.

Is your InterSystems Certification expiring soon? Have you thought about why you should renew your certification? Are you curious about our recertification process? Take some time to review our new recertification policy! Benefits of getting recertified include Keeping your skills current and ensuring you are up to date with the latest technology. Demonstrating a continuous learning mindset. Helping your company maintain organizational certification. When your certification reaches its last 6 months before expiration, you'll receive an email explaining that you've entered our recertification period. During this time, you can get up to 2 attempts at recertification for 50% off each one. Even if your certification is not expiring soon, our team recommends anyone who holds an InterSystems certification familiarizes themselves with this policy so that their recertification process can be as smooth as possible
Article
Oleksandr Zaitsev · Jul 3, 2023

Password Manager using Flask and InterSystems IRIS

Introduction A password manager is an important security tool that allows users to store and manage their passwords without the need to remember or write them down in insecure places. In this article, we will explore the development of a simple password manager using the Flask framework and the InterSystems IRIS database. Key Features Our password manager application will provide the following key features: User registration with account creation. User authentication during login. Adding new passwords with a title, login, and password. Encryption and secure storage of passwords in the database. Viewing the list of saved passwords for a user. Editing and deleting saved passwords. Ability to log out and end the session. Future Plans While the current version of our password manager application already offers essential functionality, there are several potential future enhancements that can be considered: Password strength evaluation: Implement a feature to analyze the strength of passwords entered by users. This can include checking for complexity, length, and the presence of special characters. Two-factor authentication (2FA): Integrate a 2FA mechanism to add an extra layer of security during login. This can involve using SMS verification codes, email verification, or authenticator apps. Password generator: Include a password generator that can generate strong, random passwords for users. This feature can provide suggestions for creating unique and secure passwords. Password expiration and change reminders: Implement a mechanism to notify users when their passwords are due for expiration or recommend periodic password changes to enhance security. Secure password sharing: Allow users to securely share passwords with others, such as family members or team members, while maintaining the necessary encryption and access controls. By incorporating these enhancements, our password manager can evolve into a more robust and feature-rich application, catering to the increasing security needs of users. Tools Used To develop our password manager, we will be using the following tools: Flask: A lightweight web framework for building web applications in Python. InterSystems IRIS: A high-performance database that provides reliable data storage and management. Benefits of Using Flask and InterSystems IRIS Flask provides simplicity and conciseness in web development by offering a wide range of tools and functionalities. Flask allows easy creation of routes, handling requests, and returning HTML responses. InterSystems IRIS ensures reliable data storage, providing high performance and security. Using a database for storing passwords ensures encryption and protection against unauthorized access. Conclusion A password manager developed using Flask and InterSystems IRIS provides a convenient and secure way to store and manage passwords. It allows users to store complex passwords without the need to remember or write them down in insecure places. Developing such an application is a great exercise for learning web development with Flask and working with databases. Hi Oleksandr, Your video is available on InterSystems Developers YouTube: ⏯️Password app iris db Please enjoy!