Search

Clear filter
Article
Nikolay Solovyev · Feb 19, 2019

Ethereum Adapter for InterSystems IRIS Data Platform

1. BlockchainAs I am writing this article, Bitcoin costs less than one-fifth of what it used to be at the pinnacle of its success. So when I start telling someone about my blockchain experience, the first thing I hear is undisguised skepticism: "who needs this blockchain stuff now anyway?"That's right, the blockchain hype has waned. However, the technologies it is based on are here to stay and will continue being used in particular areas.The Internet in general offer tons of materials describing the general usage of these technologies (for example on medium and forbes).As we know, a blockchain is a distributed registry, i.e. a database distributed between several nodes with each node storing a full copy of the registry. The key feature of a blockchain is that records (transactions) form blocks and blocks form a chain of blocks. A blockchain supports append operations only. It means that it's almost impossible to make changes to transactions already saved in the blockchain.There are countless blockchain tutorials online (if you've never heard about blockchain, you can start with this simple video).When blockchain was on a roll, there were multiple calls to use the technology literally everywhere. However, there are certain distinct characteristics of projects/tasks where blockchain may be required.First of all, there have to be many players/users writing a lot of data that must be consistent and trusted.Then, there is not supposed to be a third party that everybody trusts.There has to be a mechanism for public data validation.If all of these criteria are met, it may be a good idea to consider using a blockchain.Such tasks can be found in any industry. The www.101blockchains.com project aggregates information about potential and existing blockchain projects, as well as the nuances of using blockchain technology in various industries.For example, blockchain can be used for the following tasks in the healthcare domain:for safe remote management of patient records;for combating counterfeit drugs through unchangeable transactions across the supply chain;for improving the monitoring and effectiveness of clinical trials by ruling out the possibility of fraud and tampering with data.The corporate segment typically uses a special type of blockchain called Private Permissioned Blockchain. Such networks have a special set of nodes for verifying transactions.However, while developing the first InterSystems IRIS blockchain adapter, we chose Ethereum, a type of blockchain that belongs to the Permissionless Blockchain category - an open platform without a single control center. The decision was based on the popularity of this blockchain engine and a sufficiently mature infrastructure with lots of tools and libraries. Note that you can also create a private blockchain using Ethereum tools.2. AdapterLet's actually go back to the adapter.An adapter in InterSystems IRIS (just like in Ensemble) is a class or package of InterSystems IRIS classes allowing you to interact with an external system. InterSystems IRIS adapters are divided into inbound (for receiving data from an external system when the external system is the initiator of the interaction) and outbound (for working with an external system when InterSystems IRIS is the initiator of the interaction).The IRIS Ethereum adapter is an outbound adapter and is slightly different from most other InterSystems IRIS adapters. This adapter also includes a small NodeJS module. The architecture is shown in Figure 1.Figure 1.The NodeJS module of the adapter uses existing NodeJS libraries for working with Ethereum.The adapter allows you to do the following:Deploy a smart contract to Ethereum (we have plans for another article covering smart contracts, development tools, and an example).Call smart contract methods: those that change the state of the blockchain and those that don'tSave transactions (transfer funds from one wallet to another)Call additional methods to get the status of the blockchainLog all requests (done by the NodeJS module, comes in handy for debugging)The adapter comes with the source codes on OpenExchange.3. A simple exampleThe adapter is supplied with a "Hello world" example.To start working with Ethereum (and running this example), you will need the following:Choose the network that you are going to be working with. Test networks like Ropsten are typically used for development purposesCreate a wallet in this network and make a deposit to itInstall a local Ethereum client (e. g. Geth) or get a key for working with a cloud provider (e. g. Infura)You need to set the following while configuring a business operation (figure 2):The server and the port that the NodeJS module is working on (port 3000 is used by default)Provider settings (access to Infura in this case)Access credentials (specify your wallet number as user name and your private key as password. InterSystems IRIS stores access credentials in a separate database that you have to enable encryption for)Figure 2.In order to work with smart contracts, you will need to create (for each smart contract you will work with) a folder in your file system and place two files there:*abi.txt*bytecode.txtThese files should contain the ABI of the smart contract and its Bytecode. A smart contract's ABI is a formal description of its interface in the JSON format. ABI and Bytecode are created when the smart contract is compiled.Bytecode is only required for deploying the contract.You can use InterSystems IRIS Interoperability testing service to test business operations.Figure 3 illustrates how a smart contract is deployed using the testing service. The result of calling this business operation is a message containing the hash of the transaction.Figure 3.You can find this transaction using the ropsten.etherscan.io (https://etherscan.io/) browser and get the address of the deployed smart contract.To call the methods of the smart contract using the adapter, you need to fill out the following fields in the production configuration: ContractFolder and ContractAddress.The execution code for the smart contract is pretty simple: set ..ContractABI = [].%FromJSON(..ContractFolder_"abi.txt") set contract = ..Adapter.GetContract(##class(Ethereum.Address).%New(..ContractAddress),..ContractABI) set result = contract.hello() set pResponse = ##class(Ens.StringContainer).%New(result.args) Pass the address of the smart contract and the ABI to the GetContract method of the adapter to create a smart contract object that you will then use for calling methods. In this case, a hello() method returning a string must be defined in the smart contract. In this example, the hello() method does not change the blockchain status, so it can be called synchronously. However, the execution time of methods that change the state of the blockchain can be quite long (due to having to wait for transactions to be verified). To call such methods, use the deferred response mechanism offered by InterSystems IRIS. The adapter will have to submit a deferred response token and when a transaction is approved, the NodeJS module will pass the result of its execution to InterSystems IRIS. To do that, you will need to configure a web application and add an extra business service to the production that will process the received response. Here is the code for calling a method that alters the blockchain state: // getting EthereumAccount(wallet) and privateKey do ##class(Ens.Config.Credentials).GetCredentialsObj(.cred, "Ethereum.Demo.EthereumOperation", "Ens.Config.Credentials", ..Credentials) set account = ##class(Ethereum.Address).%New(cred.Username) set privateKey = cred.Password //reading contract ABI set ..ContractABI = [].%FromJSON(..ContractFolder_"abi.txt") // get contract object set contract = ..Adapter.GetContract(##class(Ethereum.Address).%New(..ContractAddress),..ContractABI) $$$ThrowOnError(..DeferResponse(.deferred)) // estimate gas do contract.SetOptions(account) set gasJSON = contract.EstimateGas("setName",pRequest.Name) $$$TRACE(gasJSON.gas) do contract.SetOptions(account, privateKey, ##class(Ethereum.Wei).%New(1000000000), ##class(Ethereum.Wei).%New(100*gasJSON.gas),,deferred) set result = contract.setName(pRequest.Name) In this case, prior to calling the setName() method of the smart contract, you will need to specify a number of parameters, including the deferred response token. In our next article, we will elaborate on smart contracts and provide an example of solving a practical problem using the InterSystems IRIS Ethereum adapter. Nice job guys, looks great!I've noticed you multiply estimated gas by 100 - why do you need this? Gas estimations calculated by providers can be inaccurate but they're always equal or higher than the actual gas price.Can't wait to see your next article and the example you provide. In our case, we've implement recurring billing in Ethereum blockchain. If you're curious, you are welcome to read my article about recurring billing in blockchain or even try how this works. Hi Nikita!Don't know about the gas spending details, @Nikolay.Soloviev will tell you more, but I'm curious on recurring billing - very interesting! Do you have this concept working already somewhere? Could you share a demo? Thanks Evgeny. I don't have a demo but you can find all the sufficient documentation and a smart contracts address within the link provided. We have a working smart contract and you can see some historical billing transactions there. Nikita thank you for feedback.You are absolutely right about "multiply estimated gas by 100" - there is no need to do it.
Announcement
Anastasia Dyubaylo · Nov 23, 2018

Black Friday 2018 on InterSystems Global Masters

Hi Community!It's started! Home sale of the year!This weekend, November 23-25, is a Black Friday Deals weekend on InterSystems Global Masters Advocate Hub!Only 3 days left! Hurry to visit Rewards Catalogue to redeem your prize with 50% OFF! Note: Some of the rewards are limited...Skip the lines this year and get the items you want here on Global Masters! Wish you great deals on Black Friday! The rewards seem to be almost sold out after an hour.Can we add some new ones in the future?How about Raspberry PI board? Arduino board? Or something based on x86. While InterSystems does not work on ARM. That would be a lot of points. Said the one who has the highest number of points. I think it should not be too much expensive, and it will be a good goal for some participants. To join Global Masters leave a comment to the post and we'll send the invite.
Announcement
Anastasia Dyubaylo · Nov 29, 2018

Moscow InterSystems Developer Community Meetup 2018

Hi Community! We are pleased to invite you to the Moscow InterSystems Developer Community Meetup on 11th of December! InterSystems Moscow Meetup is a pre-New Year meeting for users and developers on InterSystems technologies. Meetup will be devoted to the new InterSystems IRIS Data Platform. Date: December 11, 2018 Time: 19:00-22:00 Place: Aviator Loft, Stoleshnikov Lane 6, building 3, Moscow Don't forget to join Moscow Meetup Group. Register for free and save your seat today!
Announcement
Anastasia Dyubaylo · Jun 26, 2019

New Video: InterSystems IRIS Reference Architectures

Hi Everyone!New session recording from Global Summit 2018 is available on InterSystems Developers YouTube Channel:InterSystems IRIS Reference Architectures The InterSystems IRIS Data Platform offers great flexibility in building scalable systems that meet your applications requirements in the most efficient fashion. In this video, we'll outline some hypothetical system architectures for various use cases, and you'll learn that flexibility doesn't necessarily have to mean complexity.Takeaway: InterSystems IRIS can help me build a comprehensive, homogeneous solution.Presenters: @Benjamin.DeBoe Additional materials to the video you can find in this InterSystems Online Learning Course.Enjoy watching the video!
Question
Ponnumani Gurusamy · Jan 8, 2019

How to download and install InterSystems IRIS Dataplatform

Hi Team, I am interesting to learn InterSystems IRIS data platform. How to I download and install the InterSystems IRIS instance and sandbox. So Please give the instruction for how to I use it.Thanks & Regards,Ponnumani G. The best place to start would be our learning portal. There is an InterSystems IRIS learning track, and it has videos and courses that include sandboxes. Ponnumani,To give you a more specific spot to start with InterSystems IRIS, I would look at either our QuickStarts, which are designed for you to use with our InterSystems Labs sandbox, or one of the cloud providers. They assume you are a developer and want to do more of the work on your own. You can also look at our our Experiences, which provide a bit more guidance and also include fully configured InterSystems Labs that include the data, code, and even IDEs that you might need to get your hands on the technology.Doug FosterManager, Online Education
Announcement
Anastasia Dyubaylo · Jan 14, 2019

Save the Date — InterSystems Benelux Symposium 2019

Hi Community! We're pleased to invite you to the InterSystems Benelux Symposium 2019! Date: February 5 - 6, 2019 Place: Radisson Blu Astrid Hotel, Antwerp, Belgium Please find all the details here: https://bnl.intersystems.com/symposium-2019 I'm going to be there, too, and I have something to show for you. I can demonstrate VSCode extension for InterSystems ObjectScript. And I can show how to build and deploy with Kubernetes. Now this I am looking forward to :) I shall also be there with the VSCode extension from George James Software. When will you be presenting your extension?Will it be on the usergroup, or after the event? When will you be presenting your extension?Will it be on the usergroup, or after the event? I have not planned any special, just wanted to see how it will be on place. I shall be there from the Tuesday lunchtime until Wednesday night and will be happy to demonstrate it wherever people want to gather round my laptop. There isn't a Partner Pavilion at the event. Hi Bert! Hi guys!I'll be on a Symposium as well on the 5th of February and we can arrange demos of different VSCode plugins for InterSystems ObjectScript! We will finalize the agenda for the Caché User Group @BeneluxSymposium shortly.All questions or suggestions for demos or presentations you want to do are still welcome here or at CUG Benelux Blog Reading the comments here, it seems as we'll be short on time to show & discuss everything during the CUG meeting! I'm looking forward to see these nice add-ons & howto's.See you all at the symposium! Sorry for everybody who wanted to see my demo there, unfortunately, I can't go, because of some issues with getting a visa.
Announcement
Jeff Fried · May 9, 2019

InterSystems IRIS for Health 2019.2 preview

The preview release of IRIS for Health 2019.2 is now available - give it a try! Container images are available via the WRC's preview download site.The build number for these releases is 2019.2.0.100.0. InterSystems IRIS for Health 2019.2 is the first CD (continuous delivery) release of IRIS for Health. It has many new capabilities including:enhancements to FHIR STU3 supportadditional IHE profiles a new JMS (java message service) connectorAddition of the IRIS Native API for Python and Node.js and relational access for Node.jsSimplified sharding architecture and flexible sharded schema designSupport for the new PowerBI connector for InterSystems IRISNew look in the Management PortalSystem security, performance, and efficiency enhancementsEnhancements to the InterSystems Cloud Manager These are detailed in the prerelease documentation and release notes. As this is a CD release, it is only available in OCI (Open Container Initiative) a.k.a. Docker container format. The platforms on which this is supported for production and development are detailed in the Supported Platforms document. For more information on what a CD release is, review the new release cadence post on InterSystems Developer Community.Preview releases allow our customers to get an early start working with new features and functionality. They are supported for development and test purposes, but not for production.
Question
WHAT THE · May 20, 2019

Something similar to hibernate/criteria on InterSystems Cache?

Hi everyone, Im new in cache, i came from Java and im missing some features that i couldn't find in the documentation, I hope you can help me with this questions. Just a brief introducction: - Im in a project with old cache version, so saddly i can't use Eclipse + Atelier, so im using Studio. - Currently im in a project with persistent classes, we want to turn apart the globals and focus on tables. The questions: Is there any way to make something like hibernate for cache %Persistent classes? For example, if i want to get all the records for a table in Java+Hibernate+Criteria i'll do something like this: myListOfObjects = myPersistentClass.list(); // Equivalent to SELECT * In cache i have to create a %SQL.Statement, put the query inside and get the recordSet, iterate it and then get a list of %Persistent objects, for every object i want to use it. I tried to create some class that inheritance from %Persistent and contains all the methods i want to be used for the rest of persistent objects. With this i only have the data access methods in one place (something similar to the sample Employee who extends from Person, but that creates some weird table called Person that only will contains the ID's and it will have the ID duplicated by every class that extends from it). Another example, i have some dictonary tables that all of them contains a column called "CODE" i want all of the persistent classes that references a dictionary table own a method to get all the records " WHERE CODE = Xparameter" and this method only returns one result. myObject = myPersistentClass.getByCode(Xparameter); // Equivalent to SELECT * FROM X WHERE CODE = "Xparameter" In this example i asked for the most easy questions that came to my mind, i don't only want to achive a "SELECT *" and a "WHERE CODE = ", this question goes far from that. Im looking for a better way to get information from %Persistent classes with good practices. Is there any accepted way to achive this? I hope i explained myself correctly. So... nothing accepted by the community? May be rephrase the question.Also Java and Cache are polls apart. I don't know of anything similar to Hibernate in Caché. If you want to encapsulate some data access logic inside of a class, it's helpful to define a [class query](https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GOBJ_queries) that other objects can access through dynamic SQL. More specific to your getByCode example, I use the index [auto-generated methods](https://community.intersystems.com/post/useful-auto-generated-methods) a lot. For example in your dictionary table I would create a unique index on Code ` Index CodeIndex On Code [ Unique ]; ` and then use `##class(Whatever.Dictionary).CodeIndexOpen()` to open the object I want. It's better to not create lists, especially lists which you need to filter later.Write a SQL query, iterate over it results and do stuff you need to do right there.SQL Query can be a separate class element for readability purposes. Hi, with regard to your second question, if your property "CODE" is unique and indexed, ie, your class definition includes something like: Index CodeIndex on CODE [Unique]; Then there is a generated method you can use to open the object that has CODE=Xparameter: set myObject = ##class(User.MyPersistentClass).CodeIndexOpen(Xparameter, concurrency, .sc) For any unique index, the method name is always "[index-name]Open". You can read more about auto-generated methods here: https://community.intersystems.com/post/useful-auto-generated-methods With regard to your first question, I'm not aware of any system method that returns a list of all saved objects for a class, but you could implement that by creating a class method that creates and executes the appropriate query, then iterates over the results and copies them to a list. I would be cautious about doing something like this with large tables though, since you would essentially be loading the entire table into memory. This could lead to <STORE> errors: https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=RERR_system A better solution might be to implement some kind of iterator method that only loads one object at a time.
Announcement
Anastasia Dyubaylo · Mar 27, 2019

New Video: Getting Sharded with InterSystems IRIS

Hi Community! Please welcome a new video on InterSystems Developers YouTube Channel: Getting Sharded with InterSystems IRIS You can go from zero to hero as you support growing user and data volumes with InterSystems IRIS. We will give an overview of sharding at system architecture and application levels. Takeaway: Sharding can enable my applications to scale horizontally and keep up with increasing user and data volumes.Presenter: @Iain.Bray And... Additional materials to the video you can find in this InterSystems Online Learning Course. Don't forget to subscribe our InterSystems Developers YouTube Channel. Enjoy and stay tuned! nice
Article
David E Nelson · Apr 5, 2019

Docker for Windows and the InterSystems IRIS Data Platform

Now that the InterSystems IRIS Data Platform Community Edition is available on Docker Hub (https://hub.docker.com/_/intersystems-iris-data-platform), it seems like a great time to try InterSystems IRIS in a container. For some time already, the community edition has been available in the cloud, for example on AWS (https://community.intersystems.com/post/free-iris-community-edition-aws), but maybe it would be nice to try it locally as well. Fellow Windows users are no doubt used to eye rolling, being told “YMMV”, etc., whenever they mention using Docker for Windows. Sometimes we are even told that we should really consider running Docker inside Ubuntu virtual machines. Ugh Now Docker and Windows, especially when using Linux-based containers (the only kind supported by InterSystems IRIS), are not an ideal match. For more on why this is so, see: https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/linux-containers). Nevertheless, with some patience, a thirst for adventure, and a couple of extra steps it seems to be possible to run InterSystems IRIS in a Docker container on Windows. This configuration, while emphatically not supported for production, seems to work well enough to try out many InterSystems IRIS features. For example, I have created namespaces and databases, loaded data, created productions, and even executed some SPARK queries. In the following, I will list the steps that I took to launch the InterSystems IRIS Data Platform Community Edition. I will show both a Docker command-line approach as well as the more convenient compose file approach. Fair warning: I am no Docker expert and we are talking about Docker for Windows here, so YMMV. ;-) Setup Windows 10 Pro Docker Desktop Community Edition, Version 0.0.3 (31259) Channel: stable, available here: https://hub.docker.com/editions/community/docker-ce-desktop-windows Some Docker Configuration I changed the “bip” on my Daemon settings to prevent network conflicts. I set my C:\ drive as a shared drive. This will allow the container to access files on C:\ Digression on Named Volumes and Bind Mounts Containers are ephemeral. We start them. We stop them. We delete them. Often, however, we would like data generated and used by the container to persist. Docker provides two approaches for persisted container data: volumes and bind mounts. InterSystems IRIS containers include the durable %SYS feature for data generated and used by the data platform. On Docker for Windows, durable %SYS must use a Docker volume. When using Docker on other operating systems, for example Docker for the Mac or Docker for Ubuntu, durable %SYS can use either a bind mount or a volume. Volumes are entirely managed by Docker. Unlike bind mounts, they do not correspond directly to any file or directory on the file system. We must use Docker commands to create, delete, and inspect them. The fact that we cannot tune or use advanced products and tools to manage the data in Docker volumes, is a big drawback for using Docker on Windows. Clearly, it is not a production environment. Creating a Named Volume My next step was to create a named volume at the Windows command prompt: C:\>docker volume create durable To see the details for this volume I used the docker volume inspect command. When I want to delete it, I will use the docker volume rm command. Launching the Container At last, I was ready to launch the container. Here is the docker run command: C:\>docker run –it –d –p 51773:51773 –p 52773:52773 –-name iris –-volume durable:/durable –-env ISC_DATA_DIRECTORY=/durable/irissys store/intersystems/iris:2019.1.0.510.0-community A little about the options passed to the run command: Option Description it Roughly, means run in interactive mode and provide access via a terminal d Means run in detached mode p Maps ports inside the container to ports outside the container on the host. We will use these ports from Windows to access InterSystems IRIS. Note that if you have IRIS installed locally, it is likely using ports 51773 and 52773 and you will get port conflict if you try to map these ports volume Maps the named volume created above to a directory inside the container. env Sets environment variables. In this case we are setting the location of the durable %SYS to be our durable directory inside the container. I verified that all was well with the container using the following command: C:\>docker container ls It listed all the running containers on my system. The first time I ran the command, it listed my iris container’s status as “starting”. When I ran it again after a little time had passed, it listed the container’s status as “healthy”. Accessing InterSystems IRIS With my container running and healthy, the next step was to access the data platform. I did this first by launching the Management Portal using the usual url: http://localhost:52773/csp/sys/UtilHome.csp The page asked for a username/password. I entered SuperUser/SYS and then I was directed to a password change page. I then had full access to the Management Portal. Next, I tried out command line access. To do this, I first launched a bash shell inside the container by entering the following command in the Windows command prompt: C:\>docker exec –it iris bash This opened the bash shell. From the bash shell, I opened an IRIS terminal session with the following: >iris session iris I logged in using the username/password set above. Stopping the Container Finally, to stop the container I entered the following at the Windows command prompt: C:\>docker container stop iris Switching to Compose Using the Docker run command with all those options to type is a bit tedious. Fortunately, Docker supports placing the options into a compose file and then launching a container using docker-compose commands to read the options from the file and to launch the container appropriately. To use this approach, first create a Windows directory. I created a directory called iris_community. Note that the name of the directory becomes the name of the Docker project. Inside iris_community, I created another directory called local. My compose file will create a bind mount using this directory and I can use it to pass data and code between my Windows file system and my container. I then placed my compose file, named docker-compose.yml inside iris_community. So, the directory structure looks like this iris_community local docker-compose.yml Here is the contents of my docker-compose.yml. Hopefully, the comments are enough to explain what it is doing. version: '3.2' services: iris: image: store/intersystems/iris:2019.1.0.510.0-community container_name: iris-community ports: # 51773 is the superserver default port - "51773:51773" # 52773 is the webserver/management portal port - "52773:52773" volumes: # Maps directory in containr, named durable, to named volume defined below - durable:/durable # Mounts a local directory for passing in files and test scripts - ./local:/Samples/local environment: # Uses ISC_DATA_DIRECTORY to place the durable %SYS in the named volume - ISC_DATA_DIRECTORY=/durable/irissys # Creates the named docker volume volumes: durable: Launching with docker-compose To launch the container, I opened a Windows command prompt in my iris_community directory and entered the following: C:\iris_community>docker-compose up This time I did not set the detach option, so I see a stream of output from docker. Note that the named volume created in this case will be iris_community_durable so it will not conflict with the earlier volume. To stop the container, I use the following command: C:\iris_community>docker-compose down Good article!Please post docker-compose definition as a text.There's a code formatting style too Thanks Eduard. Good idea to use the formatted text. Done. I am trying to launch the container from my Windows 10 running the command:C:\>docker run –it –d –p 53773:53773 –p 54773:54773 –-name iris –-volume durable:/durable –-env ISC_DATA_DIRECTORY=/durable/irissys store/intersystems/iris:2019.1.0.510.0-communityI've modified the ports to avoid problems. But I am getting the following error:Have I missed anything?Thank you in advance! Docker for windows allows switching between Linux containers and native Windows containers; if you want to use Linux containers (i.e. IRIS), make sure you enabled that modeSee this section in the documentation. That was!Thank you for your help and great article!
Announcement
Jeff Fried · Mar 20, 2019

InterSystems IRIS version 2019.1 released

The 2019.1 version of InterSystems IRIS Data Platform is now Generally Available!Kits and container images are available via the WRC download site The build number for these releases is 2019.1.0.510.0.InterSystems IRIS Data Platform 2019.1 provides the following new capabilities:Performance and scalability. The release features new performance improvements for parallel queries and data ingestion resulting in more than 50 percent performance improvement, and expanded sharding support with simpler rebalancing across nodes.Expanded cloud support. InterSystems IRIS is now available in the marketplaces of all three major public cloud platforms, with standard licensing as well as a new free Community Edition for development and an Express Edition for small production applications. The release also supports asynchronous mirroring and availability zones to enable disaster recovery in the cloud.Integration. The latest release further expands the product’s schema, transformation, routing, and testing capabilities, supporting integration and service aggregation as a key enabler of digital transformation initiatives.Enhanced language support. 2019.1 adds to the existing comprehensive development capabilities with functional and performance enhancements to the Java, Python, and C# development languages.These are detailed in the documentation for InterSystems IRIS. You can also watch a short video introducing the InterSystems IRIS 2019.1 release.Server platform support for traditional installations has been updated, as have the base OS layer and storage drivers for IRIS containers. This release also adds support for Ubuntu 18.04 and Windows Server 2019 operating systems. You can see read details in the Supported Platforms document.With 2019.1, InterSystems IRIS now officially supports self-service BI tools using ODBC connections, specifically Tableau and PowerBI. Jeff, thank you for the great news!When could we expect IRIS 2019 Release Community Edition available on cloud marketplaces? The cloud marketplace listings are being updated as we speak; the time required is dependent on the cloud platform's process but all listings should be using this release by the end of this week.
Announcement
Anastasia Dyubaylo · Oct 26, 2020

Virtual Summit 2020: InterSystems Developer Ecosystem

Hi Developers, If you are planning to attend the Focus Sessions of InterSystems Virtual Summit 2020, please do not miss the session dedicated to InterSystems Developer Community and Open Exchange! ⚡️ "Developer Ecosystem: Developer Community forum and Open Exchange applications gallery" session ⚡️ Speakers: 🗣 @Anastasia.Dyubaylo, Community Manager, InterSystems 🗣 @Evgeny.Shvarov, Startups and Community Manager, InterSystems What awaits you? We will talk about the key features of the InterSystems Developer Ecosystem. We’ll focus on the online forum for InterSystems developers, what activities, events, and opportunities await partners and customers there. Then we'll talk about the benefits for developers of the Open Exchange apps gallery. Date & Time: ➡️ Day 1: Tuesday, October 27 (Boston starts Monday, October 26) APAC UTC Time Boston Time Developer Ecosystem: Developer Community and Open Exchange 3:15 AM 11:15 PM NA/LATAM/EMEA UTC Time Boston Time Developer Ecosystem: Developer Community and Open Exchange 4:15 PM 12:15 PM So! We will be happy to answer your questions in a virtual chat on the conference platform – please join! Our session will begin in half an hour! Please join! 📍 https://intersystems.6connex.com/event/virtual-summit/en-us/contents/433631/share?rid=FocusSessions&nid=850273 We'll start in a half an hour! Join us here: 👉🏼 https://intersystems.6connex.com/event/virtual-summit/en-us/contents/433662/share?rid=FocusSessions&nid=850273
Announcement
Anastasia Dyubaylo · Oct 29, 2020

InterSystems Interoperability Contest Kick-off Webinar

Hi Community! We are pleased to invite all the developers to the upcoming InterSystems Interoperability Contest Kick-off Webinar! The topic of this webinar is dedicated to the Interoperability Contest. In this webinar, we will talk about the interoperability capabilities of InterSystems IRIS, will do a demo of building the basic IRIS interoperability solution, and demo how to use the PEX. Also, we’ll discuss and answer the questions on how to build interoperability solutions using InterSystems IRIS and IRIS for Health. Date & Time: Monday, November 2 — 10:00 AM EDT Speakers: 🗣 @Stefan.Wittmann, InterSystems Product Manager 🗣 @Eduard.Lebedyuk, InterSystems Sales Engineer🗣 @Evgeny.Shvarov, InterSystems Developer Ecosystem Manager So! We will be happy to talk to you at our webinar! ✅ JOIN THE KICK-OFF WEBINAR! TODAY! Don't miss the kick-off! ➡️ JOIN US HERE ⬅️ Please check the time of the event: 🗓 Today at 10:00 AM EDT! Hey Developers! The recording of this webinar is available on InterSystems Developers YouTube! Please welcome: ⏯ InterSystems Interoperability Contest Kick-off Webinar Big applause to our speakers! 👏🏼 And thanks to everyone for joining our webinar!
Announcement
Anastasia Dyubaylo · Nov 17, 2020

New Video: OCR Service for InterSystems IRIS

Hi Community, Please welcome the new video, specially recorded by @Yuri.Gomes for the InterSystems Interoperability contest: ⏯ OCR Service for InterSystems IRIS This video details how to develop OCR using InterSystems IRIS using Tesseract and Java. This is an InterSystems IRIS Interoperability OCR Service to extract text from images and pdfs from a file into a multipart request from form or HTTP request. ⬇️ OCR Service on Open Exchange ➡️ Learn more: Using Tesseract OCR and Java Gateway For any questions, please write to @Yuri.Gomes at yurimarx@gmail.com or in the Direct Messages on DC. And don't forget to vote for this project in the InterSystems Interoperability Contest! 🔥 Stay tuned! Hi community, Tesseract is the best tool open source to extract text from pdf and images. Now, it is possible use this fantastic ocr engine from google into IRIS. See in the video.
Announcement
Evgeny Shvarov · Dec 18, 2020

Meet A New Voting Engine For InterSystems Contests!

Hi Developers, You asked for it – we did it! We are introducing a new voting engine and algorithm to InterSytems Contests which you can try with the current contest – starting next Monday! You can select 3 projects now: the 1st, the 2nd, and the 3rd place upon your decision. This is how it works for the Community leaderboard: Community Leaderboard: Place Points 1st 3 2nd 2 3rd 1 And there will be more complex math for Experts leaderboard, where different levels of experts have more "points" power: Experts Leaderboard: Level Place 1st 2nd 3rd VIP level in GM, Moderators, Product Managers 9 6 3 Expert level in Global Masters 6 4 2 Specialist level in Global Masters 3 2 1 Experts' votes will also contribute 3-2-1 points to the Community leaderboard too. This is how it works: To take part in the voting, you need: Sign in to Open Exchange – DC credentials will work. Make any valid contribution to Developer Community – answer or ask questions, write an article, comment on any post, and you'll see vote buttons available. We hope this new system will be fairer and you'll have the option to give your votes to more projects that you like. Comments, suggestions are welcome! Excellent news! This is a long-awaited improvement A GREAT improvement! Though a challenge to the voters: They have to make a decision !