I want to bump this post up because it is really useful (thanks Evgeny) and people definitely need to be aware of this great resource for getting the example source!

Timur - THANK YOU!  It hadn't gotten annoying enough to google a solution yet, and you just saved me the effort :)

Tim- I saw the same thing and then I realized it was an outlook thing:



It saws right the top that Outlook removed extra line breaks.  If you click that message you can reverse it and the line breaks will then get corrected.




This looks like a tremendous resource. Thanks for posting it Nikita!!


You can send yourself a link via email using the last icon shown beneath the poster's name:

If you want to save the content as a file, just use your browser's "Save As" options to save the page to a local HTML file.

Hope that helps!


Thanks for the shout-out Paul!

I would like to clarify that subscription emails have been revamped for non-digest emails *only*.  In order to turn off Digest, you need to go to:

My Account > Subscriptions Tab > Expand "Settings" at the bottom and then uncheck "Digest mode"


The new email formatting isn't fully where we're like to see it yet (e.g. it is not HTML and it doesn't include full thread history) but I hope that people find that it makes consumption of updates via email significantly more useful than it was previously.  Personally - I can't wait to see this change go live!

Here is a sample method which I created for a Zen Mojo project a couple of years ago:

ClassMethod GeocodeAddress(pAddress As %String, Output pFormattedAddress As %String, Output pLatitude As %Numeric, Output pLongitude As %Numeric) As %Status { 
Set sc=$$$OK Set r=##class(%Net.HttpRequest).%New() 
Set r.Server="maps.googleapis.com" 
Set url="/maps/api/geocode/json?address=" 
Set address=pAddress 
Set requestUrl=url_##class(%CSP.Page).EscapeURL(address) 
Do r.Get(requestUrl) 
Set json=r.HttpResponse.Data.Read() 
Set sc=##class(%ZEN.Auxiliary.jsonProvider).%ConvertJSONToObject(json,,.geoObj) 
If $$$ISERR(sc) Quit sc 
If (geoObj.status="OK") { 
 Set pFormattedAddress=geoObj.results.GetAt(1)."formatted_address" 
 Set pLatitude=geoObj.results.GetAt(1).geometry.location.lat 
 Set pLongitude=geoObj.results.GetAt(1).geometry.location.lng 
Else { 
 Set sc=$$$ERROR($$$GeneralError,"Google API Returned the following status: "_geoObj.status) 
Quit sc }

We used Google's service for an application for a while but ended up pulling it out.  Let me know if you want me to point you to the specific code.


You might take a look at Benjamin DeBoe's iKnow demos which I believe are all sharable with customers.  They leverage REST+AngularJS (which cuts down on the JS code you have to write)+Bootstrap (which ships with Caché in 2016.1 I believe to support ZenMojo's Bootstrap flavor).  That might be a good starting point for sample code if this is a direction they are willing to explore.



To add one more details to what Tim wrote about how we handle internal applications - we have a partnership with our QD department where at least one during every beta release period they will request a copy of each of our apps and verify compilation, automated unit tests and manual unit tests on that beta version of Caché.  This way if there is going to be any sort of breaking change, we know it before we upgrade our dev environment and we can schedule that upgrade more wisely so as not to halt other development work.  This practice is supported by the fact that we run all of our environments on VMs so it is fairly easy for us to get a new VM cloned off for them from Test and then we are not otherwise impacted in our development workflow.  

We have been able to move to new released much more quickly as a result of this practice