go to post Rob Tweed · Nov 8, 2021 I have to agree with Herman. When WebLink was first acquired by ISC, and during the period 1996-2000, we were demonstrating things that no other web tech at the time could do. Chris's Event Broker technology, originally released as a Java-based technology that ran in the browser, preceded and delivered what much later became known as Ajax. I remember during that time John Bertoglio, then a non-ISC user web guy who discovered what we were doing, telling me that in his estimation, we had a lead of between 5 and 8 years over what the rest of the industry was doing. We did try to lead the horse to water and all that, but hey...
go to post Rob Tweed · Jun 16, 2021 Something that isn't, I think, widely known/realised is that if you install a 64-bit version of Linux on a Raspberry Pi (eg Ubuntu 20.04 64-bit for ARM), and then, if you have an M1 Apple Mac, install Parallels on it and install a Ubuntu 20.04 VM, the two environments (Raspberry Pi and M1 Mac VM) are functionally identical. Literally you can move the exact same code from the M1 Mac VM to the Raspberry Pi and it will work. Make it all even simpler by then installing Docker on both the Raspberry Pi and the M1 Mac VM, and a container built on one will, again, work identically on the other. The only difference, of course, is the massively faster speed of execution you'll get on the M1 Mac (and the huge difference in cost!). I've had a lot of fun with the various QEWD-related Docker containers I've created: there's something quite magical about watching a container built on the M1 Mac working, without any change, on a Raspberry Pi! It's what, IMO, makes ARM-64 a very interesting platform for the future
go to post Rob Tweed · Jun 16, 2021 Take a look at QEWD.js - it works extremely well (and fast!) with IRIS on the Raspberry Pi, and you'll be able to build REST APIs and interactive apps using it. See: https://github.com/robtweed/qewd but also look at the QEWD-related postings I've put in here on Open Exchange: https://openexchange.intersystems.com/package/QEWD-js https://openexchange.intersystems.com/package/qewd-jsdb-kit-iris https://openexchange.intersystems.com/package/qewd-conduit
go to post Rob Tweed · Jun 9, 2021 Take a look at the ObjectScript functions $NAME, $QUERY, $QSUBSCRIPT and $QLENGTH https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=RC...
go to post Rob Tweed · May 18, 2021 The difference is described in full in these two documents: https://github.com/robtweed/global_storage/blob/master/Subscripts.md https://github.com/robtweed/global_storage/blob/master/Leaf_Nodes.md
go to post Rob Tweed · May 18, 2021 It's not a good idea to store files in the DB that you'll simply be reading back in full. The main issue you'll suffer from if you do hold them in the database (which nobody else seems to have picked up on) is that you'll needlessly flush/replace global buffers every time you read them back (the bigger the files, the worse this will be). Global buffers are one of the keys to performance. Save the files and files and use the database to store their filepaths as data and indices.
go to post Rob Tweed · May 18, 2021 Yes, I think that everyone who uses Cache or IRIS should take the time to discover what lies beneath! The power and flexibility of Global Storage is way beyond anything else out there - something that has been true ever since I first started working with such databases way back in the early 1980s. In all that time, I've never come across any other database architecture that is as quick and simple to grasp and yet as devastatingly powerful. I'm hoping our efforts in putting together these resources will help a new generation of developers discover and harness that unique magic.
go to post Rob Tweed · Feb 3, 2021 No disrespect to what you've created, but I have to say I'm always amazed and dismayed at how complex the Java community always seem to manage to make even the simplest of tasks - Spring/Hibernate is a classic example of making a crazy mountain out of what should technically be a very simple mole-hill. By comparison, take a look at mgweb-server: https://github.com/robtweed/mgweb-server and its underlying mg_web interface (https://github.com/chrisemunt/mg_web) for probably the thinnest (and therefore the most performant) and simplest way possible of delivering REST services using IRIS.
go to post Rob Tweed · Jan 26, 2021 The simplest way is to use QEWD. It will save you a lot of time trying to sort out all the moving parts required. Start here: https://github.com/robtweed/qewd and check this out: https://groups.google.com/g/enterprise-web-developer-community/c/HQK-THx... Rob
go to post Rob Tweed · Jan 20, 2021 Awaiting my app/repo to be approved and then I'll submit it to the competition... Rob
go to post Rob Tweed · Jan 18, 2021 We have two Open Source products that will look after JWTs for you in the ways you are asking about (ie REST services with IRIS): - QEWD, if you want to implement everything at the back-end in Node.js / JavaScript - mgweb-server if you want to use ObjectScript logic for your back-end logic For QEWD and IRIS, see: https://github.com/robtweed/qewd-starter-kit-iris-networked In particular for REST services, see: https://github.com/robtweed/qewd-starter-kit-iris-networked/blob/master/... and specifically this section: https://github.com/robtweed/qewd-starter-kit-iris-networked/blob/master/... For mgweb-server, see: https://github.com/robtweed/mgweb-server specifically using with IRIS: https://github.com/robtweed/mgweb-server/blob/master/IRIS.md and within that document, this section on JWTs: https://github.com/robtweed/mgweb-server/blob/master/IRIS.md#using-json-... Rob
go to post Rob Tweed · Jan 1, 2021 if you're a JavaScript/Node.js developer, you can use the QEWD-JSdb abstractions of IRIS: - Document database - Persistent JavaScript Objects - Redis-like Lists - Redis-like key/object store - Persistent XML DOM (with XPath querying) See: https://github.com/robtweed/qewd-starter-kit-iris-networked Take the introductory tutorial: https://github.com/robtweed/qewd-starter-kit-iris-networked/blob/master/... and then delve into the other database models: - https://github.com/robtweed/qewd-starter-kit-iris-networked/blob/master/... https://github.com/robtweed/qewd-starter-kit-iris-networked/blob/master/... https://github.com/robtweed/qewd-starter-kit-iris-networked/blob/master/... A whole world of multi-model opportunities to explore for this competition!
go to post Rob Tweed · Dec 3, 2020 If you're interested in trying out the mgweb-server Docker Container (aka mg_web Server Appliance) with an IRIS back-end (eg using the IRIS Community Edition Docker Container), I've put together a detailed user guide and tutorial that takes you through the entire process, step by step, showing you how to create REST APIs, along with showing you how to get it working with the pre-built mgweb-conduit back-end Demonstrator/Example on IRIS, and how to add the wc-conduit front-end to the mg_web Server Appliance. It's all very quick and simple to get it up and working, with lots of utility functions included in the kit that make it very simple to create your REST APIs, use JWTs, secure passwords etc. It's a different and alternative approach to using IRIS for REST APIs that you might find interesting. Why not take a look at: https://github.com/robtweed/mgweb-server/blob/master/IRIS.md
go to post Rob Tweed · Dec 1, 2020 Notice, by the way, the hefty performance penalty incurred by the SQL/Class option compared with the low-level ObjectScript functions ($extract and $translate).
go to post Rob Tweed · Nov 30, 2020 Results running IRIS Container on Raspberry Pi 4 (4Gb RAM): $e() only 1.279893 $tr() 1.281999 $e()+$zd() 1.470656 SQL/class 66.405927 I didn't include the SQL/static in my test on the RPi. Comparison with IRIS on a Windows 10 i7 based Intel NUC machine: $e() only .14742$tr() .185998$e()+$zd() .182579SQL/class 11.305143 Mind you, the NUC cost about 15 times that of the RPi :-) Anyway, based on a combination of the performance and coolness of technique, the $tr() one gets my vote!
go to post Rob Tweed · Nov 30, 2020 If it was me I'd use the persistent DOM of QEWD-JSdb https://github.com/robtweed/qewd-jsdb/blob/master/DOM.md QEWD includes access to this. Rob
go to post Rob Tweed · Nov 27, 2020 ..and, of course, you could now be running both the mgweb-server container (Apache + mg_web) and the IRIS container on Raspberry Pi 4's (with 0.5 million global node sets/second performance), to create a very cool, low-cost REST platform. BTW did you know that Raspberry Pi (the company) run their public web site on a cloud-based farm of Raspberry Pi 4s? These are the guys that run it for them: https://www.mythic-beasts.com/blog/2020/06/17/raspberry-pi-4-now-availab...
go to post Rob Tweed · Nov 27, 2020 I would add that it is worth remembering that you're not limited to using the technologies built-in to IRIS (or Cache for that matter). There are also proven Open Source alternatives available for building web applications that use IRIS/Cache as a back-end environment (or simply an ultra-high-performance database). So, if you want to develop applications in JavaScript/Node.js and use IRIS as a persistent JavaScript Object store, QEWD should be on your list. Alternatively, check out mg_web and mgweb-server as an alternative to the built-in REST solution. For more info see: https://github.com/chrisemunt?tab=repositories https://github.com/robtweed?tab=repositories https://github.com/robtweed/qewd-conduit/blob/master/IRIS-windows.md