{"version":"1.0","encoding":"UTF-8","feed":{"xmlns":"http://www.w3.org/2005/Atom","xmlns$openSearch":"http://a9.com/-/spec/opensearchrss/1.0/","xmlns$blogger":"http://schemas.google.com/blogger/2008","xmlns$georss":"http://www.georss.org/georss","xmlns$gd":"http://schemas.google.com/g/2005","xmlns$thr":"http://purl.org/syndication/thread/1.0","id":{"$t":"tag:blogger.com,1999:blog-2200693733508292186"},"updated":{"$t":"2025-11-01T10:37:11.121-04:00"},"title":{"type":"text","$t":"Data Management Blog"},"subtitle":{"type":"html","$t":"Data management, Cloud, Transformation and anything else..."},"link":[{"rel":"http://schemas.google.com/g/2005#feed","type":"application/atom+xml","href":"http:\/\/blog.strategicdevelopment.io\/feeds\/posts\/default"},{"rel":"self","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default?alt=json"},{"rel":"alternate","type":"text/html","href":"http:\/\/blog.strategicdevelopment.io\/"},{"rel":"hub","href":"http://pubsubhubbub.appspot.com/"},{"rel":"next","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default?alt=json\u0026start-index=26\u0026max-results=25"}],"author":[{"name":{"$t":"Paul"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/10201367533944398106"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"generator":{"version":"7.00","uri":"http://www.blogger.com","$t":"Blogger"},"openSearch$totalResults":{"$t":"68"},"openSearch$startIndex":{"$t":"1"},"openSearch$itemsPerPage":{"$t":"25"},"entry":[{"id":{"$t":"tag:blogger.com,1999:blog-2200693733508292186.post-5408882773536097242"},"published":{"$t":"2023-04-01T15:50:00.003-04:00"},"updated":{"$t":"2023-04-01T15:50:36.895-04:00"},"title":{"type":"text","$t":"AWS Solutions Architect Associate"},"content":{"type":"html","$t":"Renewed this one. I first took this in 2018 with a renewal in 2020. It's been interesting to see how it has evolved over time.\u0026nbsp;\u003Cdiv\u003EFirst, no immediate pass\/fail (ugh). Used to be that they wouldn't score you right away but would at least tell you pass\/fail immediately. No longer (some say for security review which might make sense). Tip - it shows up in your account before you get notified, so check that first.\u0026nbsp;\u003C\/div\u003E\u003Cdiv\u003ESecond, more big data stuff in there. Kinesis Firehose and Data Streams. Since I'd taken the bid data specialty, this was not a worry for me, but seeing more if it on this exam was new.\u0026nbsp;\u003C\/div\u003E\u003Cdiv\u003EThird, a lot more on cross account handling. Especially things like AWS Organizations and the tools that Organizations makes use of. This is clearly due to the proliferation of multi account customers.\u0026nbsp;\u003C\/div\u003E\u003Cdiv\u003EFourth, a question on AWS Lake Formation. Did not see this in any of the classes or prep materials. Perhaps a directional indicator for the future? Maybe. \n\n\n#aws #certification #solutionsarchitect #bigdata\u003C\/div\u003E\u003Cdiv\u003E\u003Cdiv class=\"separator\" style=\"clear: both;\"\u003E\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgudP2trbE7kih6V2EUzilfc9G5H0gouHfIH0MSXEkTwaetDa8jzLu4iE1xYX2wjU8PRPTsyGYf30my_LrD9_2eOnic55eVsWgD0gPMtl_uH0CR22cMjexQZ8rwuEWuBZH22bA_MOoyfjRVUdtlbnGo3n28a75FO9cIC0a5TsAsK8B7aQbFoWxqsW41_g\/s988\/saa.jpg\" style=\"display: block; padding: 1em 0px; text-align: center;\"\u003E\u003Cimg alt=\"\" border=\"0\" data-original-height=\"757\" data-original-width=\"988\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgudP2trbE7kih6V2EUzilfc9G5H0gouHfIH0MSXEkTwaetDa8jzLu4iE1xYX2wjU8PRPTsyGYf30my_LrD9_2eOnic55eVsWgD0gPMtl_uH0CR22cMjexQZ8rwuEWuBZH22bA_MOoyfjRVUdtlbnGo3n28a75FO9cIC0a5TsAsK8B7aQbFoWxqsW41_g\/s320\/saa.jpg\" width=\"320\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\u003C\/div\u003E\u003Cdiv class=\"blogger-post-footer\"\u003Ehttp:\/\/www.strategicdevelopment.io\u003C\/div\u003E"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http:\/\/blog.strategicdevelopment.io\/feeds\/5408882773536097242\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"http:\/\/www.blogger.com\/comment\/fullpage\/post\/2200693733508292186\/5408882773536097242","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/5408882773536097242"},{"rel":"self","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/5408882773536097242"},{"rel":"alternate","type":"text/html","href":"http:\/\/blog.strategicdevelopment.io\/2023\/04\/aws-solutions-architect-associate.html","title":"AWS Solutions Architect Associate"}],"author":[{"name":{"$t":"Paul"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/10201367533944398106"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgudP2trbE7kih6V2EUzilfc9G5H0gouHfIH0MSXEkTwaetDa8jzLu4iE1xYX2wjU8PRPTsyGYf30my_LrD9_2eOnic55eVsWgD0gPMtl_uH0CR22cMjexQZ8rwuEWuBZH22bA_MOoyfjRVUdtlbnGo3n28a75FO9cIC0a5TsAsK8B7aQbFoWxqsW41_g\/s72-c\/saa.jpg","height":"72","width":"72"},"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-2200693733508292186.post-5176012838699793483"},"published":{"$t":"2021-04-17T09:34:00.002-04:00"},"updated":{"$t":"2021-04-17T09:34:51.534-04:00"},"title":{"type":"text","$t":"APIs and \"fair use\""},"content":{"type":"html","$t":"The Supreme Court sided with Google in its suit over the repurposing of APIs under the aegis of \"fair use\".  They over-turned the lower court decision.  This has huge implications for the technical world.  As a frequent user of APIs, I found the case very interesting.  It revolves around Google's attempt to \u003Ca href=\"https:\/\/en.wikipedia.org\/wiki\/Clean_room_design\"\u003EClean Room Design\u003C\/a\u003E from the Java SE edition.\nHere are some takes:  \u003Ca href=\"https:\/\/www.supremecourt.gov\/opinions\/20pdf\/18-956_d18f.pdf\"\u003Ethe ruling itself\u003C\/a\u003E, \u003Ca href=\"https:\/\/en.wikipedia.org\/wiki\/Google_LLC_v._Oracle_America,_Inc.\"\u003Ethe facts in non-legal language\u003C\/a\u003E, \u003Ca href=\"https:\/\/www.cnbc.com\/2021\/04\/05\/supreme-court-rules-in-googles-favor-in-copyright-dispute-with-oracle-over-android-software.html\"\u003Ethe business perspective\u003C\/a\u003E, \u003Ca href=\"https:\/\/github.blog\/2021-04-06-supreme-court-sides-with-developers-in-google-v-oracle\/\"\u003Ethe developer perspective\u003C\/a\u003E, and \u003Ca href=\"https:\/\/www.natlawreview.com\/article\/supreme-court-update-google-llc-v-oracle-america-inc-no18-956\"\u003Ethe legal take\u003C\/a\u003E.\u003Cdiv class=\"blogger-post-footer\"\u003Ehttp:\/\/www.strategicdevelopment.io\u003C\/div\u003E"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http:\/\/blog.strategicdevelopment.io\/feeds\/5176012838699793483\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"http:\/\/www.blogger.com\/comment\/fullpage\/post\/2200693733508292186\/5176012838699793483","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/5176012838699793483"},{"rel":"self","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/5176012838699793483"},{"rel":"alternate","type":"text/html","href":"http:\/\/blog.strategicdevelopment.io\/2021\/04\/apis-and-fair-use.html","title":"APIs and \"fair use\""}],"author":[{"name":{"$t":"Paul"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/10201367533944398106"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-2200693733508292186.post-8378692017704175154"},"published":{"$t":"2019-08-11T10:35:00.001-04:00"},"updated":{"$t":"2019-08-11T10:35:58.266-04:00"},"title":{"type":"text","$t":"AWS Certified Big Data Specialty"},"content":{"type":"html","$t":"\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEi6Ttt-t4VovTQ2sLnsEpSEXRL20BJ1gDFzRe0dy827To6UzzLFseedLkeA3b75xyqXW1VuHzkqUhojlX0nmUNbq0eFkr6qBBSkHX2uMccUkUqbko2zHsZ5R5e_RY6jD5NMi3GRfz_weTFK\/s1600\/AWS+Certified+Big+Data+-+Specialty+certificate.PNG\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" data-original-height=\"903\" data-original-width=\"1191\" height=\"242\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEi6Ttt-t4VovTQ2sLnsEpSEXRL20BJ1gDFzRe0dy827To6UzzLFseedLkeA3b75xyqXW1VuHzkqUhojlX0nmUNbq0eFkr6qBBSkHX2uMccUkUqbko2zHsZ5R5e_RY6jD5NMi3GRfz_weTFK\/s320\/AWS+Certified+Big+Data+-+Specialty+certificate.PNG\" width=\"320\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cbr \/\u003E\nLots of hard work to achieve this for sure but well worth it!\u0026nbsp;\u003Cdiv class=\"blogger-post-footer\"\u003Ehttp:\/\/www.strategicdevelopment.io\u003C\/div\u003E"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http:\/\/blog.strategicdevelopment.io\/feeds\/8378692017704175154\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"http:\/\/www.blogger.com\/comment\/fullpage\/post\/2200693733508292186\/8378692017704175154","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/8378692017704175154"},{"rel":"self","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/8378692017704175154"},{"rel":"alternate","type":"text/html","href":"http:\/\/blog.strategicdevelopment.io\/2019\/08\/aws-certified-big-data-specialty.html","title":"AWS Certified Big Data Specialty"}],"author":[{"name":{"$t":"Paul"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/10201367533944398106"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEi6Ttt-t4VovTQ2sLnsEpSEXRL20BJ1gDFzRe0dy827To6UzzLFseedLkeA3b75xyqXW1VuHzkqUhojlX0nmUNbq0eFkr6qBBSkHX2uMccUkUqbko2zHsZ5R5e_RY6jD5NMi3GRfz_weTFK\/s72-c\/AWS+Certified+Big+Data+-+Specialty+certificate.PNG","height":"72","width":"72"},"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-2200693733508292186.post-8246431629384311372"},"published":{"$t":"2019-03-06T16:04:00.000-05:00"},"updated":{"$t":"2019-03-06T16:06:08.848-05:00"},"title":{"type":"text","$t":"When Push Comes to Shove (or playing cat and mouse with push technology)"},"content":{"type":"html","$t":"\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEi0KKPypUua9wwUIwcjs64M4Ec9mqowcTbVP40-S0Vfmu7Dq6LuxmbdcGYj3WwvWa-VvbCMrI-PeQbRHg8CXIlZr6s35q_snbjyJv5sAaL96ShFGlKhWgYsDJePBO3-jOeP3LAwngdUy5oK\/s1600\/maxresdefault.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" data-original-height=\"337\" data-original-width=\"600\" height=\"179\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEi0KKPypUua9wwUIwcjs64M4Ec9mqowcTbVP40-S0Vfmu7Dq6LuxmbdcGYj3WwvWa-VvbCMrI-PeQbRHg8CXIlZr6s35q_snbjyJv5sAaL96ShFGlKhWgYsDJePBO3-jOeP3LAwngdUy5oK\/s320\/maxresdefault.jpg\" width=\"320\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cbr \/\u003E\nWhen will the end of push happen?\u0026nbsp; I'm desperately waiting for the humane demise of what has become an inhumane technology.\u0026nbsp; One that has run amuck.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nPush technology initially held so much promise.\u0026nbsp; A way for me to keep appointments, become aware of significant happenings and stay connected to people.\u0026nbsp; But the dream has become a nightmare.\u0026nbsp; Constant interruption and devices that absolutely demand my attention.\u0026nbsp; I feel like I'm in a game of cat and mouse trying to stay ahead of the coercive effects of push technology.\u0026nbsp; Am I not the customer?\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nExample 1, my iPhone.\u0026nbsp; There are icons on my home screen that cannot be removed.\u0026nbsp; Applications that I have no interest in and for which I did not ask.\u0026nbsp; It used to be Apple Watch, now its things like the Wallet.\u0026nbsp; No matter what I do I can't remove them.\u0026nbsp; So I'm forced to stare at them every time I open the phone.\u0026nbsp; My daughter gave me a great solution to this problem.\u0026nbsp; She said to create a folder on the home screen named \"garbage\".\u0026nbsp; This folder can contain any app icons I don't want to see.\u0026nbsp; So I only have one unwanted icon on my home screen instead of several.\u0026nbsp; So I now stare at folder \"garbage\" every time I log in.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nI've learned that newer versions of the OS allow you to remove the icons from the home screen but doesn't allow you to uninstall them.\u0026nbsp; A \"half win\".\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nAs a business man, I believe this represents a failure to focus on the customer.\u0026nbsp; These apps on my iPhone are clearly so horrible that no person would voluntarily install this stuff, so the Apple people decided to make them in your face.\u0026nbsp; If they wanted real success, how about putting it on the App Store and getting good ratings like everything else.\u0026nbsp; Your app should be able to compete.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nExample 2, Facebook notifications.\u0026nbsp; The use of the notifications feature itself went from useful to tragic.\u0026nbsp; At first, I got notified if someone mentioned me specifically.\u0026nbsp; Perfect use case, as I may want to respond.\u0026nbsp; And I did like this push feature.\u0026nbsp; But then it took a bad turn and started notifying me of every event under the sun.\u0026nbsp; It went even further and started notifying me of people posting things seemingly randomly.\u0026nbsp; Isn't that what the regular feed is already doing?\u0026nbsp; Why do I need to be notified that someone posted a picture that I am not even tagged in?\u0026nbsp; So push came to shove and I had to turn them off altogether.\u0026nbsp;\u0026nbsp; Cat catches mouse.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nExample 3, Samsung notifications.\u0026nbsp; My other phone is a Samsung.\u0026nbsp; I was trying to fix a Bluetooth connection problem and\u0026nbsp; started receiving a notification about my \"Samsung account\".\u0026nbsp; Well I have no interest in a Samsung account and never asked for it.\u0026nbsp; So I tried to find a way to turn off the notifications.\u0026nbsp; After fussing with it for a while, I received another notification that said very rudely \"these notifications can't be turned off\".\u0026nbsp; So now I have to live with a constant notification that never goes away?\u0026nbsp; What an annoyance!\u0026nbsp; In the end it was Samsung wanting all my personal information at all times.\u0026nbsp; So I couldn't log in and log out as desired.\u0026nbsp; I had to log in always or get spam notified.\u0026nbsp; Push became shove.\u0026nbsp; So that meant I had to delete my Samsung account altogether.\u0026nbsp; You lose.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nThis kind of behavior isn't like bloatware of old.\u0026nbsp; We've all dealt with bloatware, especially when buying computers.\u0026nbsp; They are famous for installing lots of junk.\u0026nbsp; The difference is that you could generally take the time and get rid of it.\u0026nbsp; But when this flotsam becomes mandatory, it really feels coercive. \u003Cbr \/\u003E\n\u003Cbr \/\u003E\nExample 4, whenever any app is installed anywhere.\u0026nbsp; I bet many of you play this game too.\u0026nbsp; Whenever I install any app, I immediately go to the \"settings\" and uncheck all the notifications I don't want.\u0026nbsp; Because the default behavior is to get bombarded with notifications.\u0026nbsp; The developers don't ever think I have any other applications besides theirs.\u0026nbsp; Ego centric to say the least.\u0026nbsp; And some apps will not allow you to turn all of them off, merely reduce the number of them.\u0026nbsp; So push again becomes shove.\u0026nbsp; This inevitably leads to removal of the app, or disabling notifications for the app in the operating system itself.\u0026nbsp; Once again cat and mouse.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nAs a business person, I end up feeling like I am not the customer any longer.\u0026nbsp; I feel increasingly like I'm being viewed as merely a gold mine.\u0026nbsp; To be excavated for good stuff which is then sold to their real customers.\u0026nbsp; I could never run my business that way and I would love for technology firms to bring the customer back into focus. \u003Cbr \/\u003EApps that don't annoy you into compliance but help you get something done. \u003Cbr \/\u003EApps where the user is in control. \u003Cbr \/\u003EApps that are designed for your benefit. \u003Cbr \/\u003EThat way we don't have to play cat and mouse.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\u003Cdiv class=\"blogger-post-footer\"\u003Ehttp:\/\/www.strategicdevelopment.io\u003C\/div\u003E"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http:\/\/blog.strategicdevelopment.io\/feeds\/8246431629384311372\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"http:\/\/www.blogger.com\/comment\/fullpage\/post\/2200693733508292186\/8246431629384311372","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/8246431629384311372"},{"rel":"self","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/8246431629384311372"},{"rel":"alternate","type":"text/html","href":"http:\/\/blog.strategicdevelopment.io\/2019\/03\/when-push-comes-to-shove-or-playing-cat.html","title":"When Push Comes to Shove (or playing cat and mouse with push technology)"}],"author":[{"name":{"$t":"Paul"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/10201367533944398106"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEi0KKPypUua9wwUIwcjs64M4Ec9mqowcTbVP40-S0Vfmu7Dq6LuxmbdcGYj3WwvWa-VvbCMrI-PeQbRHg8CXIlZr6s35q_snbjyJv5sAaL96ShFGlKhWgYsDJePBO3-jOeP3LAwngdUy5oK\/s72-c\/maxresdefault.jpg","height":"72","width":"72"},"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-2200693733508292186.post-8600994124731780018"},"published":{"$t":"2018-07-02T12:39:00.000-04:00"},"updated":{"$t":"2018-07-02T12:56:52.933-04:00"},"title":{"type":"text","$t":"AWS CloudFormation: reluctantly embracing YAML"},"content":{"type":"html","$t":"\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjPil_qfbQUtAJtebpSGrAZQKoDbasbFE9QBxB2kKDaP7JWY_Q31qIiz3ea7U031pMj1sBjTgp9ORYEtWKghzEPMASdOzCxK7kWQFg5v034BixTKtqKkn2mbKlvoxwQVecwaII6mG8mfpSp\/s1600\/yaml_cf_temp2.png\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" data-original-height=\"510\" data-original-width=\"1600\" height=\"101\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjPil_qfbQUtAJtebpSGrAZQKoDbasbFE9QBxB2kKDaP7JWY_Q31qIiz3ea7U031pMj1sBjTgp9ORYEtWKghzEPMASdOzCxK7kWQFg5v034BixTKtqKkn2mbKlvoxwQVecwaII6mG8mfpSp\/s320\/yaml_cf_temp2.png\" width=\"320\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cbr \/\u003E\nYet Another Markup Language?\u0026nbsp; Really?\u003Cbr \/\u003E\nThat was my view of \u003Ca href=\"http:\/\/yaml.org\/\"\u003EYAML\u003C\/a\u003E for a very long time.\u0026nbsp; As someone who has no problem with various formats for structured information like xml, json, etc, I couldn't see any real use case for making another one.\u0026nbsp; And then came \u003Ca href=\"https:\/\/aws.amazon.com\/cloudformation\"\u003EAWS CloudFormation\u003C\/a\u003E.\u003Cbr \/\u003E\nAWS CloudFormation uses templates for provisioning assets in the cloud.\u0026nbsp; I'd been working on a problem and it involved creating a Lambda function.\u0026nbsp; This in tern means creating and managing an IAM Role and Policy.\u0026nbsp; It also played into some S3 for storage (trying to go full serverless).\u0026nbsp; And so the CF template was quickly getting sizable.\u0026nbsp; And since there is no CF schema to work with (although there are \u003Ca href=\"https:\/\/github.com\/fungusakafungus\/cloudformation-jsonschema\"\u003Eattempts at such\u003C\/a\u003E), there is no authoring \"helper\" that can be derived from the governing schema.\u0026nbsp; Which is why one can author easily in Xml no matter how large because the schema can help you and authoring tools.\u003Cbr \/\u003E\nHaving used \u003Ca href=\"https:\/\/www.json.org\/\"\u003EJSON\u003C\/a\u003E\u0026nbsp;for a long time (and even \u003Ca href=\"http:\/\/json-schema.org\/\"\u003EJSON Schema\u003C\/a\u003E too), I was working with that syntax in CF.\u0026nbsp; The tools support for JSON is good and make it easier to work with, especially features like code folding.\u0026nbsp; But when you scale JSON larger and larger, it starts to become unwieldy.\u0026nbsp; Don't get me wrong, I've dealt with JSON files many megabytes in size before.\u0026nbsp; So it isn't just a matter of size. With large JSON files that are consistent and repetitive, you can fold code\/copy code and manage it not unlike Xml.\u003Cbr \/\u003E\nHowever with CF, I was getting frustrated at the process of brute force trial an error I was involved in.\u0026nbsp; (Ok, I know there are tons of template snips out there - and I was using them - but nothing did EXACTLY what I was trying to do.\u0026nbsp; So they were all \"sorta\" useful.)\u0026nbsp; I finally broke down and said, I'll try something new just to see if it has value.\u0026nbsp; And I dug into YAML for CF templates.\u0026nbsp; Structured, hierarchical, fold-able code is very familiar, so the literals of YAML were no problem.\u0026nbsp; But was it any better than JSON?\u003Cbr \/\u003E\nEnter \u003Ca href=\"http:\/\/notepad-plus.sourceforge.net\/uk\/site.htm\"\u003ENotepad++\u003C\/a\u003E.\u0026nbsp; This tool brought the features needed to make YAML work just like JSON and Xml.\u0026nbsp; First and foremost code folding.\u0026nbsp; So I was more easily able to take code snippets and work them into my CF template.\u0026nbsp; Testing along the way.\u0026nbsp; And I began to like YAML.\u0026nbsp; Eminently more readable and more compact in terms of fitting code on a viewable page, it allowed me to visualize more of what I was authoring.\u0026nbsp; That has proven key to my progress.\u0026nbsp; And the explicit formatting of white space allows for easy viewing of indentation.\u0026nbsp; It was starting to look a lot like Python.\u003Cbr \/\u003E\nSo I've come around to this new \"Python-like\" markup known as YAML.\u0026nbsp; It does have a use case that I can get behind.\u0026nbsp; Call me a reluctant embracer of YAML.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\u003Cdiv class=\"blogger-post-footer\"\u003Ehttp:\/\/www.strategicdevelopment.io\u003C\/div\u003E"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http:\/\/blog.strategicdevelopment.io\/feeds\/8600994124731780018\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"http:\/\/www.blogger.com\/comment\/fullpage\/post\/2200693733508292186\/8600994124731780018","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/8600994124731780018"},{"rel":"self","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/8600994124731780018"},{"rel":"alternate","type":"text/html","href":"http:\/\/blog.strategicdevelopment.io\/2018\/07\/aws-cf-reluctantly-embracing-yaml.html","title":"AWS CloudFormation: reluctantly embracing YAML"}],"author":[{"name":{"$t":"Paul"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/10201367533944398106"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjPil_qfbQUtAJtebpSGrAZQKoDbasbFE9QBxB2kKDaP7JWY_Q31qIiz3ea7U031pMj1sBjTgp9ORYEtWKghzEPMASdOzCxK7kWQFg5v034BixTKtqKkn2mbKlvoxwQVecwaII6mG8mfpSp\/s72-c\/yaml_cf_temp2.png","height":"72","width":"72"},"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-2200693733508292186.post-4831638218916753406"},"published":{"$t":"2018-02-19T07:41:00.002-05:00"},"updated":{"$t":"2018-02-19T07:42:06.959-05:00"},"title":{"type":"text","$t":"Certified Solutions Architect"},"content":{"type":"html","$t":"\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjxy2nbNHgRmu0NXpZgYIihuyuUPWnw5zz8Y8G6oNNdNxdE7_lMi2WJYWKsL0yiM5q09yKoZhUmuGGVCBw7JoTc34lbjRuHMIyeuo620EY1S9CbPONXzGMitiIVh9FsxdelcNqY8hYKhhY5\/s1600\/AWS+Certified+Solutions+Architect+-+Associate+certificate.png\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" data-original-height=\"934\" data-original-width=\"1326\" height=\"225\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjxy2nbNHgRmu0NXpZgYIihuyuUPWnw5zz8Y8G6oNNdNxdE7_lMi2WJYWKsL0yiM5q09yKoZhUmuGGVCBw7JoTc34lbjRuHMIyeuo620EY1S9CbPONXzGMitiIVh9FsxdelcNqY8hYKhhY5\/s320\/AWS+Certified+Solutions+Architect+-+Associate+certificate.png\" width=\"320\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cbr \/\u003E\nPassed the exam today.\u0026nbsp; Really pleased at reaching this goal.\u0026nbsp; I guess I've gone from knowing just enough to be dangerous to being actually dangerous!\u0026nbsp; \u0026nbsp;The test was challenging but also about what I'd expected.\u0026nbsp; \u0026nbsp;My road to certification started with a great course from Ryan Kroonenburg of \u003Ca href=\"http:\/\/www.acloud.guru\/\"\u003EACloudGuru\u003C\/a\u003E.\u0026nbsp; He not only knows his stuff, but he is an excellent communicator.\u0026nbsp; It can sometimes be hard to get both in one person.\u0026nbsp; I also had some key resources that helped.\u0026nbsp; First, beyond the course itself, was the \u003Ca href=\"https:\/\/www.amazon.com\/Certified-Solutions-Architect-Official-Study\/dp\/1119138558\/ref=sr_1_1?ie=UTF8\u0026amp;qid=1518796006\u0026amp;sr=8-1\u0026amp;keywords=aws+certified+solutions+architect+official+study+guide\u0026amp;dpID=51eW85NNGQL\u0026amp;preST=_SX258_BO1,204,203,200_QL70_\u0026amp;dpSrc=srch\"\u003Eofficial study guide from AWS\u003C\/a\u003E.\u0026nbsp; It was originally published in October 2016, so some parts are dated.\u0026nbsp; But for the most part it was an excellent resource.\u0026nbsp; I also read that the folks who wrote the book also wrote the exam (haven't verified this myself).\u0026nbsp; Second, I bought some quizzes from \u003Ca href=\"https:\/\/www.whizlabs.com\/aws-solutions-architect-associate\/\"\u003EWhizlabs\u003C\/a\u003E.\u0026nbsp; They have 8 full length tests that are challenging and informative.\u0026nbsp; They help identify weak points to study.\u0026nbsp; In addition, I got some tests from IAASAcademy.\u0026nbsp; Those were also good, although I thought the Whizlabs were better.\u0026nbsp; And lastly (but certainly not least in importance) was the AWS documents, including the FAQs for each service.\u0026nbsp; Very useful resources for sure.\u0026nbsp; (Oh and of course the labs.)\u003Cbr \/\u003E\nSo now that I hit my goal, it's time to do some damage.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\u003Cdiv class=\"blogger-post-footer\"\u003Ehttp:\/\/www.strategicdevelopment.io\u003C\/div\u003E"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http:\/\/blog.strategicdevelopment.io\/feeds\/4831638218916753406\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"http:\/\/www.blogger.com\/comment\/fullpage\/post\/2200693733508292186\/4831638218916753406","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/4831638218916753406"},{"rel":"self","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/4831638218916753406"},{"rel":"alternate","type":"text/html","href":"http:\/\/blog.strategicdevelopment.io\/2018\/02\/certified-solution-architect.html","title":"Certified Solutions Architect"}],"author":[{"name":{"$t":"Paul"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/10201367533944398106"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjxy2nbNHgRmu0NXpZgYIihuyuUPWnw5zz8Y8G6oNNdNxdE7_lMi2WJYWKsL0yiM5q09yKoZhUmuGGVCBw7JoTc34lbjRuHMIyeuo620EY1S9CbPONXzGMitiIVh9FsxdelcNqY8hYKhhY5\/s72-c\/AWS+Certified+Solutions+Architect+-+Associate+certificate.png","height":"72","width":"72"},"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-2200693733508292186.post-884048024120919761"},"published":{"$t":"2018-01-30T20:11:00.002-05:00"},"updated":{"$t":"2018-02-02T12:22:49.846-05:00"},"title":{"type":"text","$t":"Escapades in AWS Certification"},"content":{"type":"html","$t":"\u003Cbr \/\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjxV_KYaY7YPILBRnj4xqbaHhAIGxnxm36qjCE41h4blEfzpiN2VtUxlz8PatlhZhf6wudckiVWCbHdOf8bl3FeHHD1bGAky1eVs0tiMUd20LBkjzRUxgGEOOWhnYamhh1LhTCPDOBM-V4L\/s1600\/aws.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" data-original-height=\"353\" data-original-width=\"801\" height=\"141\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjxV_KYaY7YPILBRnj4xqbaHhAIGxnxm36qjCE41h4blEfzpiN2VtUxlz8PatlhZhf6wudckiVWCbHdOf8bl3FeHHD1bGAky1eVs0tiMUd20LBkjzRUxgGEOOWhnYamhh1LhTCPDOBM-V4L\/s320\/aws.jpg\" width=\"320\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\nAdventures in cloud computing.\u0026nbsp; Like many folks, I've been reading about this new game changer for some time.\u0026nbsp; And been experimenting with some of the tools.\u0026nbsp; S3 storage for static web hosting: check.\u0026nbsp; EC2 instances for managing compute tasks: check.\u0026nbsp; Even trying some auto scaling which is one key item that make so much sense.\u0026nbsp; I think I'd learned just enough to know I was dangerous. \u003Cbr \/\u003E\nI had some ideas as to how I might like to make use of cloud technology. Migrate some of my tools to AWS and leverage Lambda functions in the design of how they would work.\u0026nbsp; Lambda is the game changer with in the game changer.\u0026nbsp; I can see the amazing potential.\u0026nbsp; Wouldn't need to start out with it at first, but eventually get there.\u003Cbr \/\u003E\nAfter playing around in my own sandbox, I concluded there is no better way to learn than to get dirtier and get certified.\u0026nbsp; So I embarked on a certification exam for Solution Architect.\u003Cbr \/\u003E\nOne can't research too long before finding that \u003Ca href=\"http:\/\/www.acloud.guru\/\" target=\"_blank\"\u003EA Cloud Guru\u003C\/a\u003E stands out as a leader in the teaching of this material.\u0026nbsp; I found a very inexpensive course on \u003Ca href=\"https:\/\/www.udemy.com\/aws-certified-solutions-architect-associate\/\"\u003Eudemy.com\u003C\/a\u003E and started my adventure.\u0026nbsp; More to come.\u0026nbsp; \u003Cdiv class=\"blogger-post-footer\"\u003Ehttp:\/\/www.strategicdevelopment.io\u003C\/div\u003E"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http:\/\/blog.strategicdevelopment.io\/feeds\/884048024120919761\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"http:\/\/www.blogger.com\/comment\/fullpage\/post\/2200693733508292186\/884048024120919761","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/884048024120919761"},{"rel":"self","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/884048024120919761"},{"rel":"alternate","type":"text/html","href":"http:\/\/blog.strategicdevelopment.io\/2018\/01\/escapades-in-aws-certification.html","title":"Escapades in AWS Certification"}],"author":[{"name":{"$t":"Paul"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/10201367533944398106"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjxV_KYaY7YPILBRnj4xqbaHhAIGxnxm36qjCE41h4blEfzpiN2VtUxlz8PatlhZhf6wudckiVWCbHdOf8bl3FeHHD1bGAky1eVs0tiMUd20LBkjzRUxgGEOOWhnYamhh1LhTCPDOBM-V4L\/s72-c\/aws.jpg","height":"72","width":"72"},"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-2200693733508292186.post-5030938090360576866"},"published":{"$t":"2017-07-16T11:50:00.000-04:00"},"updated":{"$t":"2017-07-16T11:51:27.442-04:00"},"title":{"type":"text","$t":"Xml, JSON, and Darwinian competition"},"content":{"type":"html","$t":"Recently gave a presentation on the relationship between JSON and Xml technologies.\u0026nbsp; I'd set it in the context of \"friend or foe\" as there are lots of people who frame the relationship between these two as some sort of competition in a zero sum game or a Darwinian death match.\u0026nbsp; On the one hand, Xml as the incumbent who is \u003Ca href=\"https:\/\/codepunk.io\/xml-vs-json-why-json-sucks\/\" target=\"_blank\"\u003Etrying to fend off\u003C\/a\u003E the nipping upstart, saying that JSON simply \u003Ca href=\"http:\/\/www.yegor256.com\/2015\/11\/16\/json-vs-xml.html\" target=\"_blank\"\u003Eisn't a king killer\u003C\/a\u003E.\u0026nbsp; On the other hand, the \u003Ca href=\"https:\/\/blog.cloud-elements.com\/json-better-xml\" target=\"_blank\"\u003Einsurgent JSON\u003C\/a\u003E is poised to topple \u003Ca href=\"http:\/\/www.json.org\/xml.html\" target=\"_blank\"\u003Ethe bloated\u003C\/a\u003E, over-the-hill, yesterday technology.\u0026nbsp; \u003Ca href=\"https:\/\/www.ctl.io\/developers\/blog\/post\/why-json-will-continue-to-push-xml-out-of-the-picture\" target=\"_blank\"\u003EWresting the title\u003C\/a\u003E from reluctant dinosaurs.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nHaving worked in both data integration as well as content management spaces, I've seen both natures and how they react to Xml and JSON.\u0026nbsp; I think the former are very hot on the JSON track, and rightly so.\u0026nbsp; With cloud applications, bandwidth is now an issue again.\u0026nbsp; And then there's mobile applications.\u0026nbsp; Light weight, simply data structures for not overly complex data can make a huge beneficial difference.\u0026nbsp; So JSON will continue to have an increasing role there.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nThe content folks see value but are a little less keen on the the JSON value proposition. An example of some skepticism is the concept mixed content (elements intermingling with text).\u0026nbsp; This is a big, bright line that \u003Ca href=\"http:\/\/seanmcgrath.blogspot.com\/2007\/01\/mixed-content-trying-to-understand-json.html\" target=\"_blank\"\u003Edifferentiates the two\u003C\/a\u003E technologies.\u0026nbsp; Having tried several methods to work with this myself, I find that Xml's inherent support for mixed content is a really nice relief.\u0026nbsp; And content management will tend to run into mixed content more frequently than data integration specialists.\u0026nbsp; Still, content folks see some value in JSON for sure.\u0026nbsp; They don't like Xml's bloat any more than anyone else.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nUltimately however, this isn't a death match.\u0026nbsp; The Darwin analogy doesn't mean there can be only one survivor.\u0026nbsp; But an array of creatures that each have their strengths and weaknesses.\u0026nbsp; Like programming languages or Galapagos island animals, there is room for many.\u0026nbsp; I like JSON and find it very useful and fast for development.\u0026nbsp; I've developed JSON applications and experimented with \u003Ca href=\"http:\/\/json-schema.org\/\" target=\"_blank\"\u003EJSON Schema\u003C\/a\u003E in fact.\u0026nbsp; (More to come on this in another post.)\u0026nbsp; And when I come into contact with complex content structures or mixed content of any kind, I'm glad Xml is still in the toolbox.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\u003Cdiv class=\"blogger-post-footer\"\u003Ehttp:\/\/www.strategicdevelopment.io\u003C\/div\u003E"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http:\/\/blog.strategicdevelopment.io\/feeds\/5030938090360576866\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"http:\/\/www.blogger.com\/comment\/fullpage\/post\/2200693733508292186\/5030938090360576866","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/5030938090360576866"},{"rel":"self","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/5030938090360576866"},{"rel":"alternate","type":"text/html","href":"http:\/\/blog.strategicdevelopment.io\/2017\/07\/xml-json-and-darwinian-competition.html","title":"Xml, JSON, and Darwinian competition"}],"author":[{"name":{"$t":"Paul"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/10201367533944398106"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-2200693733508292186.post-1963733758110994419"},"published":{"$t":"2016-07-07T07:25:00.001-04:00"},"updated":{"$t":"2016-07-07T08:14:03.512-04:00"},"title":{"type":"text","$t":"Bitcoin - is there any \"there\" there?"},"content":{"type":"html","$t":"\u003Ca href=\"http:\/\/www.economist.com\/news\/leaders\/21677198-technology-behind-bitcoin-could-transform-how-economy-works-trust-machine\" target=\"_blank\"\u003EReading \u003C\/a\u003Equite a bit recently about the technology that is popularly known as \u003Ca href=\"https:\/\/en.wikipedia.org\/wiki\/Bitcoin\" target=\"_blank\"\u003EBitcoin\u003C\/a\u003E.\u0026nbsp; The use of block chain computing power to solve mathematical problems in return for money, to put it bluntly.\u0026nbsp; Article after article spoke to how this can be a \u003Ca href=\"http:\/\/www.economist.com\/news\/special-report\/21650295-or-it-next-big-thing\" target=\"_blank\"\u003Etrans-formative\u003C\/a\u003E technology.\u003Cbr \/\u003E\nFair enough.\u0026nbsp; Time to investigate and see how it is supposed to make people money.\u0026nbsp; I thought of 2 angles to try out.\u0026nbsp; First, the easiest is to think of it technologically.\u0026nbsp; And use computing power to test out how things work and how useful it proves.\u0026nbsp; Seems the \u003Ca href=\"https:\/\/www.youtube.com\/watch?v=j7opj5-32hw\" target=\"_blank\"\u003Ethings to do\u003C\/a\u003E are setting up a wallet (after all I need a wallet to store all my major bucks right?).\u0026nbsp; Then start \"mining\" the math to create my way to wealth.\u0026nbsp; I installed \u003Ca href=\"https:\/\/bitcoin.org\/en\/choose-your-wallet\" target=\"_blank\"\u003EBitcoin Core\u003C\/a\u003E wallet for windows.\u0026nbsp; Installed and seems to be about what I expected and read about. \u0026nbsp; Next I installed \u003Ca href=\"https:\/\/bitcointalk.org\/?topic=3878.0\" target=\"_blank\"\u003EGUI Miner\u003C\/a\u003E which is a \u003Ca href=\"http:\/\/guiminer.org\/\" target=\"_blank\"\u003Eclient\u003C\/a\u003E that does the computing. So if I'm mining for bitcoin gold, where do I land my first shovel?\u0026nbsp; In order to find a place to squat and stake a claim, its best to follow someone who knows. \u003Cbr \/\u003E\n\u003Cbr \/\u003E\nSo enter \u003Ca href=\"https:\/\/slushpool.com\/home\/\" target=\"_blank\"\u003ESlush Pool\u003C\/a\u003E.\u0026nbsp; Pools are ways of aggregating computing power with a shared reward. Slush's Pool \u003Ca href=\"https:\/\/bitcointalk.org\/index.php?topic=1976.22020\" target=\"_blank\"\u003Eclaims to be the world's first mining pool\u003C\/a\u003E.\u0026nbsp; Its at least a place to start.\u0026nbsp; Soon I'm set up with a wallet and I'm using GUI miner to mine coins in Slush's pool.\u0026nbsp; So I sit back and let my computer make me money, right?!\u0026nbsp; Seeing the early returns, it's clear that it will take a very long time to make any money this way.\u0026nbsp; Can I reduce my overhead to maximize my margins? \u0026nbsp; \u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\u003Ca href=\"https:\/\/en.bitcoin.it\/wiki\/Comparison_of_mining_pools\" target=\"_blank\"\u003EResearching pools\u003C\/a\u003E, one quickly gets into issues of governance.\u0026nbsp; The competition to attract miners leads to claims of transparency and low cost pool providers.\u0026nbsp; (An interesting view that money creates government instead of the other way around. :) )\u0026nbsp; Being an advocate of a Vanguard investment philosophy, I view the strategy of keeping overhead low and I'll beat the higher cost guys most of the time without even trying.\u0026nbsp; But it becomes apparent the global nature of this setting.\u0026nbsp; I'm not only choosing a pool that may claim to have low overhead fees, but my mining efforts are competing against third world cost structures.\u0026nbsp; Calculators spring up to tell you how your costs affect your mining potential.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nIn fact, in mining, the \u003Ca href=\"http:\/\/www.coinwarz.com\/calculators\/bitcoin-mining-calculator\" target=\"_blank\"\u003Ecalculations of benefit\u003C\/a\u003E soon become a discussion of your electricity rates.\u0026nbsp; Since coins are minted using computing power, one needs to factor in electricity costs in your potential profit margins.\u0026nbsp; But since \"1\"s and \"0\"s do not recognize borders, my first world electricity costs quickly mean I'm competing against inherently cheaper places around the world.\u0026nbsp; This means I'm starting to sour on raw mining for profit.\u0026nbsp; The margins simply aren't there unless I can employ an armada of machines at third world electricity rates.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nSo I've learned about the technology that makes it work and I've learned that the mechanics of mining mean one will never get rich that way and this task is better left to low overhead miners.\u0026nbsp; What about a more philosophical or entrepreneurial view?\u0026nbsp; (Meaning I want to own my own pool.)\u0026nbsp; Where is the opportunity to put this technology to something different or in line with goals.\u0026nbsp; Can it be leveraged to solve a bigger problem?\u0026nbsp; I'd like to see this applied to something useful like fighting malaria or some kind of important goal.\u0026nbsp; Pools to simply make money are obvious and already exist.\u0026nbsp; Another one won't stand out.\u0026nbsp; Creating a pool that attracts investors (miners) for some motivation other than simply making money might do the trick. Indeed some of the pools are motivated by philosophies that attract a certain motivated miner.\u0026nbsp; This remains my landing point in this story.\u0026nbsp; \u003Cbr \/\u003E\n\u003Cbr \/\u003E\nI'm left intrigued with Bitcoin (and the underlying block chain technology) even if I've not found a path to riches nor used it to solve a bigger problem.\u0026nbsp; The fact that it is making some \u003Ca href=\"http:\/\/spendbitcoins.com\/places\/\" target=\"_blank\"\u003Einroads to mainstream\u003C\/a\u003E usage and acceptance means it isn't a fad.\u0026nbsp; The technology is interesting and I can understand the attraction.\u0026nbsp; So there is some \"there\" there.\u0026nbsp; I'm just not sure where this fits into my strategies as yet.\u0026nbsp; Perhaps you'll find me next announcing a new mining pool that will plow all profits into fighting malaria.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\u003Cdiv class=\"blogger-post-footer\"\u003Ehttp:\/\/www.strategicdevelopment.io\u003C\/div\u003E"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http:\/\/blog.strategicdevelopment.io\/feeds\/1963733758110994419\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"http:\/\/www.blogger.com\/comment\/fullpage\/post\/2200693733508292186\/1963733758110994419","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/1963733758110994419"},{"rel":"self","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/1963733758110994419"},{"rel":"alternate","type":"text/html","href":"http:\/\/blog.strategicdevelopment.io\/2016\/07\/bitcoin-is-there-any-there-there.html","title":"Bitcoin - is there any \"there\" there?"}],"author":[{"name":{"$t":"Paul"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/10201367533944398106"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-2200693733508292186.post-4843373862848147434"},"published":{"$t":"2016-06-07T17:57:00.002-04:00"},"updated":{"$t":"2016-06-07T17:57:42.117-04:00"},"title":{"type":"text","$t":"replace front disc brake pads 1997 Toyota Camry"},"content":{"type":"html","$t":"I've been in car maintenance mode as you can probably tell.\u0026nbsp; This time, its been a long standing issue. Quite frankly these brakes have been squeaking ever since I got the car.\u0026nbsp; Very annoying and actually embarrassing when driving friends.\u0026nbsp; I was told when I got it that the brakes were not that old and because of the squeaking the mechanic put in the exact OEM pads for this car.\u003Cbr \/\u003E\nSo are they just worn out?\u0026nbsp; Are the slider pins needing lubrication? Something else?\u0026nbsp; As it turns out I think the problem was the pads.\u0026nbsp; They were not worn down all the way.\u0026nbsp; But they are metallic pads.\u0026nbsp; I switched to ceramic and this made all the difference.\u0026nbsp; Here is how I did it.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\u003Ciframe allowfullscreen=\"\" frameborder=\"0\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/yYVqtWfaDGI\" width=\"560\"\u003E\u003C\/iframe\u003E\n\u003Cdiv class=\"blogger-post-footer\"\u003Ehttp:\/\/www.strategicdevelopment.io\u003C\/div\u003E"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http:\/\/blog.strategicdevelopment.io\/feeds\/4843373862848147434\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"http:\/\/www.blogger.com\/comment\/fullpage\/post\/2200693733508292186\/4843373862848147434","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/4843373862848147434"},{"rel":"self","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/4843373862848147434"},{"rel":"alternate","type":"text/html","href":"http:\/\/blog.strategicdevelopment.io\/2016\/06\/replace-front-disc-brake-pads-1997.html","title":"replace front disc brake pads 1997 Toyota Camry"}],"author":[{"name":{"$t":"Paul"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/10201367533944398106"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"https:\/\/img.youtube.com\/vi\/yYVqtWfaDGI\/default.jpg","height":"72","width":"72"},"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-2200693733508292186.post-30356170424307607"},"published":{"$t":"2016-03-20T20:29:00.002-04:00"},"updated":{"$t":"2016-03-20T20:29:42.495-04:00"},"title":{"type":"text","$t":"1997 Toyota Camry radiator replacement"},"content":{"type":"html","$t":"Here is another item in the \"anything else\" category.\u0026nbsp; Recently had some car trouble and make a short video of a repair I did.\u0026nbsp; I have a Toyota Camry 1997 and I was getting P0115 error codes from my ODB 2 reader.\u0026nbsp; As I was about to replace the ECT coolant temperature sensor, the radiator showed to be leaking.\u0026nbsp; So I ended up replacing the radiator.\u0026nbsp; This video shows how I did it.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\u003Ciframe allowfullscreen=\"\" frameborder=\"0\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/r5EDebEa-qE\" width=\"560\"\u003E\u003C\/iframe\u003E\u003Cdiv class=\"blogger-post-footer\"\u003Ehttp:\/\/www.strategicdevelopment.io\u003C\/div\u003E"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http:\/\/blog.strategicdevelopment.io\/feeds\/30356170424307607\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"http:\/\/www.blogger.com\/comment\/fullpage\/post\/2200693733508292186\/30356170424307607","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/30356170424307607"},{"rel":"self","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/30356170424307607"},{"rel":"alternate","type":"text/html","href":"http:\/\/blog.strategicdevelopment.io\/2016\/03\/1997-toyota-camry-radiator-replacement.html","title":"1997 Toyota Camry radiator replacement"}],"author":[{"name":{"$t":"Paul"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/10201367533944398106"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"https:\/\/img.youtube.com\/vi\/r5EDebEa-qE\/default.jpg","height":"72","width":"72"},"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-2200693733508292186.post-687752522655589059"},"published":{"$t":"2014-08-14T12:19:00.001-04:00"},"updated":{"$t":"2014-08-14T12:19:30.980-04:00"},"title":{"type":"text","$t":"URIResolver with XSLT2 using Saxon on Tomcat and JSTL"},"content":{"type":"html","$t":"Ran into a rather maddening problem last week.\u0026nbsp; I was working on a front end to a tool and was planning on using JSP within a Tomcat environment.\u0026nbsp; I'd downloaded the latest Tomcat (8.0.9 to be exact).\u0026nbsp; It installed ok.\u0026nbsp; Well most of my app is xml based and I needed to use XSLT 2.\u0026nbsp; So grabbed Saxon 9 (9.1.0.2J - later tried 9.5.1.7J and same behaviour), and added to my lib directory and with an environment variable update, presto - I was able to perform transformations.\u0026nbsp; (Just needed a property set in the JSP) \u003Cbr \/\u003E\n\u003Cblockquote class=\"tr_bq\"\u003E\n\u003Cspan style=\"background-color: #f3f3f3;\"\u003E\u0026lt;%\u003Cbr \/\u003ESystem.setProperty(\"javax.xml.transform.TransformerFactory\", \"net.sf.saxon.TransformerFactoryImpl\");\u003Cbr \/\u003E%\u0026gt;\u003C\/span\u003E\u003C\/blockquote\u003E\nSo far a happy story right?\u0026nbsp; The issue came up around relative and absolute paths.\u0026nbsp; The collection() function was throwing errors if I tried to use a relative path.\u0026nbsp; It was annoying but not the end of the world as I could supply the full path behind the scenes.\u0026nbsp; Maddeningly, the doc() function was throwing an error if I used an absolute path.\u0026nbsp; So I had 2 functions that were each doing their own thing at different places in the tool.\u0026nbsp; But one required full path and one relative.\u0026nbsp; No exceptions.\u0026nbsp; I could work around this but it seemed silly to have to do this.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nI wasn't sure if the problem was my code, java, tomcat, or saxon (can you guess which?).\u0026nbsp; I found that it wasn't anything to do with encoding, so I could rule that out.\u0026nbsp; I started doing research and found some interesting (though dated) discussions \u003Ca href=\"http:\/\/permalink.gmane.org\/gmane.text.xml.saxon.help\/3743\" target=\"_blank\"\u003Ehere\u003C\/a\u003E , \u003Ca href=\"http:\/\/www.stylusstudio.com\/xsllist\/200404\/post30190.html\" target=\"_blank\"\u003Ehere\u003C\/a\u003E , \u003Ca href=\"http:\/\/www.dpawson.co.uk\/xsl\/sect4\/N9723.html\" target=\"_blank\"\u003Ehere\u003C\/a\u003E .\u0026nbsp; The issue was apparently around the URIResolver. Potential work arounds\/solutions \u003Ca href=\"http:\/\/www.oxygenxml.com\/archives\/xsl-list\/200404\/msg00149.html\" target=\"_blank\"\u003Ehere\u003C\/a\u003E , \u003Ca href=\"http:\/\/stackoverflow.com\/questions\/7236291\/saxon-error-with-xslt-import-statement\" target=\"_blank\"\u003Ehere\u003C\/a\u003E , \u003Ca href=\"http:\/\/www.coderanch.com\/t\/126562\/XML\/Custom-URIResolver\" target=\"_blank\"\u003Ehere\u003C\/a\u003E , \u003Ca href=\"http:\/\/stackoverflow.com\/questions\/23135567\/saxon-9-5-custom-uriresolver\" target=\"_blank\"\u003Ehere\u003C\/a\u003E . \u0026nbsp; \u003Cbr \/\u003E\n\u003Cbr \/\u003E\nI also did some document-uri(.) functions on loaded documents.\u0026nbsp; It reflected this problem, as it was returning a path that started with \"jstl:\/..\/\" instead of\u0026nbsp; \"file:\/\/\/c:\/\" or even \"http:\/\/localhost\".\u0026nbsp; So the resolver was definitely the problem.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nJust as I was about to contemplate writing a custon URIResolver, I did some more digging in my JSTL tagging.\u0026nbsp; And it hit me that I might have outsmarted myself.\u0026nbsp; Turns out that @xsltSystemId not only provides the path for the XSLT, but also serves as the basis for all relative URLs used in the XSLT. So things like imports, doc(), collection(), etc.\u0026nbsp; They all are based on that.\u0026nbsp; So my solution was a humbling, simple attribute on my JSTL:\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\u003Cblockquote class=\"tr_bq\"\u003E\n\u003Cspan style=\"background-color: #f3f3f3;\"\u003E\u0026lt;x:transform xml=\"${thexml}\" xslt=\"${xslt}\" \u003Cbr \/\u003E\u0026nbsp;\u0026nbsp;\u0026nbsp; xsltSystemId=\"${basepath}select-schema.xslt\"\/\u0026gt;\u003C\/span\u003E\u003C\/blockquote\u003E\n\u003Cbr \/\u003E\n****postscript****\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nHere is more info on the errors I'd gotten:\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nWhen a known and correct relative path was used, the collection() function resulted in this error (snipped for brevity):\u003Cbr \/\u003E\n\u003Cblockquote class=\"tr_bq\"\u003E\n\u003Cspan style=\"background-color: #f3f3f3;\"\u003EHTTP Status 500 - javax.servlet.ServletException: javax.servlet.jsp.JspException: net.sf.saxon.trans.XPathException: Cannot resolve relative URI: Invalid base URI: Expected scheme-specific part at index 5: jstl:: jstl:\u003C\/span\u003E\u003C\/blockquote\u003E\nMeanwhile when the full path is given, and the collection() function works correctly, later on in the process, the same full path in doc() function returns this error (also snipped):\u003Cbr \/\u003E\n\u003Cblockquote class=\"tr_bq\"\u003E\n\u003Cspan style=\"background-color: #f3f3f3;\"\u003EHTTP Status 500 - java.lang.IllegalArgumentException: Expected scheme-specific part at index 5: jstl:\u003Cbr \/\u003E\u0026nbsp;\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"background-color: #f3f3f3;\"\u003Ejava.lang.IllegalArgumentException: Expected scheme-specific part at index 5: jstl:\u003Cbr \/\u003E\u0026nbsp;\u0026nbsp;\u0026nbsp; java.net.URI.create(Unknown Source)\u003Cbr \/\u003E\u0026nbsp;\u0026nbsp;\u0026nbsp; java.net.URI.resolve(Unknown Source)\u003Cbr \/\u003E\u0026nbsp;\u0026nbsp;\u0026nbsp; net.sf.saxon.functions.ResolveURI.tryToExpand(ResolveURI.java:115)\u003Cbr \/\u003E\u0026nbsp;\u0026nbsp;\u0026nbsp; net.sf.saxon.StandardURIResolver.resolve(StandardURIResolver.java:165)\u003Cbr \/\u003E\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\u003Cspan style=\"background-color: #f3f3f3;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/blockquote\u003E\n\u003Cbr \/\u003E\u003Cdiv class=\"blogger-post-footer\"\u003Ehttp:\/\/www.strategicdevelopment.io\u003C\/div\u003E"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http:\/\/blog.strategicdevelopment.io\/feeds\/687752522655589059\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"http:\/\/www.blogger.com\/comment\/fullpage\/post\/2200693733508292186\/687752522655589059","title":"1 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/687752522655589059"},{"rel":"self","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/687752522655589059"},{"rel":"alternate","type":"text/html","href":"http:\/\/blog.strategicdevelopment.io\/2014\/08\/uriresolver-with-xslt2-using-saxon-on.html","title":"URIResolver with XSLT2 using Saxon on Tomcat and JSTL"}],"author":[{"name":{"$t":"Paul"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/10201367533944398106"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"thr$total":{"$t":"1"}},{"id":{"$t":"tag:blogger.com,1999:blog-2200693733508292186.post-1387938087518879524"},"published":{"$t":"2014-07-05T16:45:00.001-04:00"},"updated":{"$t":"2021-02-18T08:08:11.572-05:00"},"title":{"type":"text","$t":"The Definitive Guide to TMS Top 5 Lists"},"content":{"type":"html","$t":"This goes into the \"anything else\" category.  One of my other passions is rock and roll music.  And many people who hang around the worlds of hard rock and heavy metal are aware of a VH1 classic TV show called \"\u003Ca href=\"http:\/\/thatmetalshow.vh1.com\/\"\u003EThat Metal Show\u003C\/a\u003E\" (@ThatMetalShow\u0026nbsp; #TMS).  Hosted by Eddie Trunk, Don Jamieson, and Jim Florentine, the show has become a focal point of discussion, awareness, and fun around this music genre.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nThe show has numerous segments, but the one that struck me is the \"Top 5\" lists.  Host selected topics are debated and a \"final\" list is determined.  This blog post is to show you how diligent (or perhaps crazy) I've taken interest in these lists.  I've researched the shows and found that no where was there a definitive list of Top 5 lists.  So I created one myself!\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nHere is the link to \u003Ca href=\"http:\/\/strategicdevelopment.io\/tms\/index.html\" target=\"_blank\"\u003E\u003Cb\u003EThe Definitive Guide to TMS Top 5 Lists\u003C\/b\u003E\u003C\/a\u003E.  You can use this blog post to add comments (or to help me track down the few episodes for which I cannot find the list).  Enjoy!\n\u003Cdiv class=\"blogger-post-footer\"\u003Ehttp:\/\/www.strategicdevelopment.io\u003C\/div\u003E"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http:\/\/blog.strategicdevelopment.io\/feeds\/1387938087518879524\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"http:\/\/www.blogger.com\/comment\/fullpage\/post\/2200693733508292186\/1387938087518879524","title":"2 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/1387938087518879524"},{"rel":"self","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/1387938087518879524"},{"rel":"alternate","type":"text/html","href":"http:\/\/blog.strategicdevelopment.io\/2014\/07\/the-definitive-guide-to-tms-top-5-lists.html","title":"The Definitive Guide to TMS Top 5 Lists"}],"author":[{"name":{"$t":"Paul"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/10201367533944398106"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"thr$total":{"$t":"2"}},{"id":{"$t":"tag:blogger.com,1999:blog-2200693733508292186.post-8806781707761805584"},"published":{"$t":"2014-07-04T12:42:00.003-04:00"},"updated":{"$t":"2014-07-04T12:42:59.393-04:00"},"title":{"type":"text","$t":"great XSLT function site"},"content":{"type":"html","$t":"I want to give a shout out to Priscilla Walmsley's list of \u003Ca href=\"http:\/\/www.xsltfunctions.com\/xsl\/\" target=\"_blank\"\u003EXSLT functions\u003C\/a\u003E.\u0026nbsp; I have used it many times and find the site easy to read and consume.\u0026nbsp; Especially when I'm wrapping my head around some nasty namespace management issues, I find myself coming back to the site over and over.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nThanks \u003Ca href=\"http:\/\/www.datypic.com\/index.html\" target=\"_blank\"\u003EPriscilla\u003C\/a\u003E for this great XSLT resource!\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\u003Ca href=\"http:\/\/www.xsltfunctions.com\/xsl\/\"\u003Ehttp:\/\/www.xsltfunctions.com\/xsl\/\u003C\/a\u003E\u003Cbr \/\u003E\n\u003Cbr \/\u003E\u003Cdiv class=\"blogger-post-footer\"\u003Ehttp:\/\/www.strategicdevelopment.io\u003C\/div\u003E"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http:\/\/blog.strategicdevelopment.io\/feeds\/8806781707761805584\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"http:\/\/www.blogger.com\/comment\/fullpage\/post\/2200693733508292186\/8806781707761805584","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/8806781707761805584"},{"rel":"self","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/8806781707761805584"},{"rel":"alternate","type":"text/html","href":"http:\/\/blog.strategicdevelopment.io\/2014\/07\/great-xslt-function-site.html","title":"great XSLT function site"}],"author":[{"name":{"$t":"Paul"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/10201367533944398106"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-2200693733508292186.post-4602560399973930183"},"published":{"$t":"2013-11-18T10:39:00.001-05:00"},"updated":{"$t":"2013-11-18T10:39:36.362-05:00"},"title":{"type":"text","$t":"send me your worst use case! SchemaLightener update underway"},"content":{"type":"html","$t":"Am working in updating the code to the \u003Ca href=\"http:\/\/www.xmlhelpline.com\/tools\/SchemaLightener.php\" target=\"_blank\"\u003E#SchemaLightener\u003C\/a\u003E (which also flattens schemas and wsdl files) to use XSLT 2.0 and other enhancements.\u0026nbsp; Having offered this tool for years, I've accumulated many use cases that I can test with.\u0026nbsp; And of course, I use many consortia standard schemas and wsdls.\u0026nbsp; However, I want your worst use cases!\u0026nbsp; So I can make this tool the best it can be.\u0026nbsp; Don't worry - I won't redistribute them, so you are free to send me your ugliest cases!\u003Cbr \/\u003E\nSimply \u003Ca href=\"http:\/\/www.xmlhelpline.com\/contact.php\" target=\"_blank\"\u003Eemail me\u003C\/a\u003E and I'll work to incorporate these use cases into the testing of this new version.\u003Cbr \/\u003E\nAnd thank you.\u003Cdiv class=\"blogger-post-footer\"\u003Ehttp:\/\/www.strategicdevelopment.io\u003C\/div\u003E"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http:\/\/blog.strategicdevelopment.io\/feeds\/4602560399973930183\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"http:\/\/www.blogger.com\/comment\/fullpage\/post\/2200693733508292186\/4602560399973930183","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/4602560399973930183"},{"rel":"self","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/4602560399973930183"},{"rel":"alternate","type":"text/html","href":"http:\/\/blog.strategicdevelopment.io\/2013\/11\/send-me-your-worst-use-case.html","title":"send me your worst use case! SchemaLightener update underway"}],"author":[{"name":{"$t":"Paul"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/10201367533944398106"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-2200693733508292186.post-7322712644608752516"},"published":{"$t":"2013-11-02T11:02:00.002-04:00"},"updated":{"$t":"2013-11-02T11:02:23.383-04:00"},"title":{"type":"text","$t":"How I learned to love @OASISopen CAM"},"content":{"type":"html","$t":"I've played around with @OASISopen \u003Ca href=\"https:\/\/www.oasis-open.org\/committees\/tc_home.php?wg_abbrev=cam\" target=\"_blank\"\u003ECAM\u003C\/a\u003E in the past, but mostly from a learning and experimentation perspective.\u0026nbsp; I thought it an interesting technology and always wanted to find a reason to use it in real life.\u0026nbsp; But for some time that opportunity wasn't at hand.\u0026nbsp; \u003Cbr \/\u003E\n\u003Cbr \/\u003E\nThe most powerful aspect of this is to allow data model and constraints to travel and live together.\u0026nbsp; \u003Cbr \/\u003E\n\u003Cbr \/\u003E\nSchematron, (xml schema 1.1), and xslt\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nThe problem:\u003Cbr \/\u003E\nWe were working with industry standards in terms of xml schema data models.\u0026nbsp; These were the starting point.\u0026nbsp; There was a need to add on additional constraints.\u0026nbsp; But within the standard (i.e. co-occurence constraints which can't be put in xml schema) or outside the standard where busiensses take the standard and build their own additional constraints onto it as a base.\u0026nbsp; \u003Cbr \/\u003E\n\u003Cbr \/\u003E\nSchematron to the rescue?\u003Cbr \/\u003E\nThe most logical technology to use at the time was of course schematron (and still is of course).\u0026nbsp; The problem I was trying to solve was that schematron was understood by xml geeks like myself.\u0026nbsp; However, the people who knew the business rules were speaking an entirely different language.\u0026nbsp; So the only choices either to have the xml geeks be the translator or to create a translation tool for business people to use.\u0026nbsp; In one sense I was doing both.\u0026nbsp; I created an interface to simplified schematron specifically for business analysts.\u0026nbsp; By creating a simple interface, then business people could input simple rules without a problem.\u0026nbsp; No middle man.\u0026nbsp; But any more complex rules could only be roughed in and the xml geek would then need to step in and translate the business rules into schematron patters.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nThe interface started out as absolute simplicity.\u0026nbsp; It was \"if ... then\" at its core.\u0026nbsp; If this business condition exists, then some other rule applies.\u0026nbsp; At it's simplest, 2 element names were the minimum point needed.\u0026nbsp; And it was put in a simple HTML web form, an interface BAs were very familiar with.\u0026nbsp; The web form would take the input and generate the schematron assertions as well as use the schematron skeleton template to create an XSLT that would validate xml with these assertions.\u0026nbsp; At that time the skeleton was used widely because no ANT task or native schematron processor was in place.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nThe simplicity of this approach was both its biggest strength and of course also its biggest weakness.\u0026nbsp; Only a rudimentary knowledge of xml and a business analyst could create schmatron compliant rules by simply identifying 2 components of this \"if ... then\" assertion.\u0026nbsp; Scmeatron and XSLT validator came out the other end automagically.\u0026nbsp; But of course complex assertions defied this method and so the xml expert had to intervene and help the BA formulate the rules.\u0026nbsp; \u003Cbr \/\u003E\n\u003Cbr \/\u003E\nThis worked for its limited aims.\u0026nbsp; But we still had the problem of separate technologies for validation.\u0026nbsp; It would be best to have schematron embedded directly into the schema.\u0026nbsp; Indeed this is what eventually what xml schema 1.1 would enable.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nEnter @OASISopen CAM\u003Cbr \/\u003E\nWorking with CAM on a consulting gig moved me from seeing it not just as an interesting technology to one that I like.\u0026nbsp; One big benefit is that all validation rules can be put in one place.\u0026nbsp; Content model, data typing, co-occurence, or any other constraint could travel together.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nSecondly, there was a CAM processor that provided a relatively easy to use interface to creating assertions.\u0026nbsp; Not quite as simple as my earlier effort, but also not as limiting as it was as well.\u0026nbsp; So business analysts can do some of the work in creating assertions, although xml knowledge is of course essential.\u0026nbsp; \u003Cbr \/\u003E\n\u003Cbr \/\u003E\nWhile I'm still working with it and learning its warts, I've come to appreciate CAM.\u0026nbsp; And of course one can't mention CAM without a shout out to \u003Ca href=\"http:\/\/www.drrw.net\/\" target=\"_blank\"\u003EDavid Webber\u003C\/a\u003E.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\u003Cbr \/\u003E\u003Cdiv class=\"blogger-post-footer\"\u003Ehttp:\/\/www.strategicdevelopment.io\u003C\/div\u003E"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http:\/\/blog.strategicdevelopment.io\/feeds\/7322712644608752516\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"http:\/\/www.blogger.com\/comment\/fullpage\/post\/2200693733508292186\/7322712644608752516","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/7322712644608752516"},{"rel":"self","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/7322712644608752516"},{"rel":"alternate","type":"text/html","href":"http:\/\/blog.strategicdevelopment.io\/2013\/11\/how-i-learned-to-love-oasisopen-cam.html","title":"How I learned to love @OASISopen CAM"}],"author":[{"name":{"$t":"Paul"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/10201367533944398106"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-2200693733508292186.post-5464892473051453340"},"published":{"$t":"2012-12-11T19:35:00.003-05:00"},"updated":{"$t":"2012-12-11T19:37:36.450-05:00"},"title":{"type":"text","$t":"#OAGIS X reviewed - part 2"},"content":{"type":"html","$t":"\u003Cdiv class=\"post-body\"\u003E\n\u003Cdiv\u003E\nThis is part two of a review of \u003Ca href=\"http:\/\/www.oagi.org\/\" target=\"_blank\"\u003EOAGIS X\u003C\/a\u003E release candidate 1 from \u003Ca href=\"http:\/\/www.oagi.org\/\" target=\"_blank\"\u003EOAGi\u003C\/a\u003E.\u0026nbsp; (twitter: \u003Ca href=\"https:\/\/twitter.com\/OAGi_Standards\" target=\"_blank\"\u003E@OAGi_Standards\u003C\/a\u003E)\u0026nbsp; See review \u003Ca href=\"http:\/\/blog.xmlhelpline.com\/2012\/11\/oagis-x-reviewed-part-1.html\"\u003Epart one\u003C\/a\u003E. \n\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Cdiv\u003E\nOne of the interesting aspects of this release is around extensions.\u0026nbsp; The 2 main extension methods you've seen in previous releases are still there.\u0026nbsp; The \u0026lt;UserArea\u0026gt;\u003Cuserarea\u003E element is still ubiquitous.\u0026nbsp; And it is by design the last element in a content model in all cases except where there is a type derivation.\u0026nbsp; This handy element has been one of the mainstays of working with a standard in the real world of sometimes messy and custom data.\u0026nbsp; Secondly, the elements in release X are still almost all globally scoped.\u0026nbsp; This enables one to use the \u003Ca href=\"http:\/\/www.google.com\/url?sa=t\u0026amp;rct=j\u0026amp;q=\u0026amp;esrc=s\u0026amp;source=web\u0026amp;cd=2\u0026amp;cad=rja\u0026amp;ved=0CDUQFjAB\u0026amp;url=http%3A%2F%2Fwww.oagi.org%2Foagi%2Fdownloads%2FResourceDownloads%2FExtending_OAGIS_v9.doc\u0026amp;ei=p8bHUMHuNYfc8ATEnYDQAQ\u0026amp;usg=AFQjCNGIM1586OcwVRCwUMvHrvelQeP-vg\u0026amp;sig2=CUMjXSO6QHpclIahTD5FGQ\u0026amp;bvm=bv.1355247934,bs.1,d.eWU\" target=\"_blank\"\u003EsubstitutionGroup extension\u003C\/a\u003E method that is also common and goes back to version 8 of OAGIS.\u003C\/userarea\u003E\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Cdiv\u003E\nWhat is different about this release is that it makes management of extensions easier rather than employing some new engineering gadget.\u0026nbsp; Very practical.\u0026nbsp; To begin, there is an Extensions.xsd file which centralizes your extension management.\u0026nbsp; This file is the link between custom and standard content models.\u0026nbsp; It is where the UserArea global element is defined.\u0026nbsp; But there are changes from there.\u0026nbsp; The UserArea is defined as \"AllUserAreaType\".\u0026nbsp; This type is a convenince yet again as it extends the \"OpenUserAreaType\" (see below) with a sequence that ships as empty.\u0026nbsp; So one can simply add in elements to this sequence and instantly have widely impacted additions to the UserArea content model.\u0026nbsp; Nice.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\u0026nbsp;\u0026nbsp;\u0026nbsp; \u0026lt;xsd:element name=\"UserArea\" type=\"AllUserAreaType\"\/\u0026gt;\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\u0026nbsp;\u0026nbsp;\u0026nbsp; \u0026lt;xsd:complexType name=\"AllUserAreaType\"\u0026gt;\u003Cbr \/\u003E\n\u0026nbsp;\u0026nbsp;\u0026nbsp; \u0026nbsp;\u0026nbsp;\u0026nbsp; \u0026lt;xsd:complexContent\u0026gt;\u003Cbr \/\u003E\n\u0026nbsp;\u0026nbsp;\u0026nbsp; \u0026nbsp;\u0026nbsp;\u0026nbsp; \u0026nbsp;\u0026nbsp;\u0026nbsp; \u0026lt;xsd:extension base=\"OpenUserAreaType\"\u0026gt;\u003Cbr \/\u003E\n\u0026nbsp;\u0026nbsp;\u0026nbsp; \u0026nbsp;\u0026nbsp;\u0026nbsp; \u0026nbsp;\u0026nbsp;\u0026nbsp; \u0026nbsp;\u0026nbsp;\u0026nbsp; \u0026lt;xsd:sequence\u0026gt;\u0026lt;!-- easy to insert extensions here --\u0026gt;\u0026lt;\/xsd:sequence\u0026gt;\u003Cbr \/\u003E\n\u0026nbsp;\u0026nbsp;\u0026nbsp; \u0026nbsp;\u0026nbsp;\u0026nbsp; \u0026nbsp;\u0026nbsp;\u0026nbsp; \u0026lt;\/xsd:extension\u0026gt;\u003Cbr \/\u003E\n\u0026nbsp;\u0026nbsp;\u0026nbsp; \u0026nbsp;\u0026nbsp;\u0026nbsp; \u0026lt;\/xsd:complexContent\u0026gt;\u003Cbr \/\u003E\n\u0026nbsp;\u0026nbsp;\u0026nbsp; \u0026lt;\/xsd:complexType\u0026gt;\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003C\/div\u003E\n\u003Cdiv\u003E\nNext, as mentioned, there is the OpenUserAreaType.\u0026nbsp; This takes the most commonly used extension elements and puts them explicitly in the UserArea.\u0026nbsp; Things like name value pairings, codes, IDs, and text can all be used out of the box here.\u0026nbsp; They will look familiar to folks working with \u003Ca href=\"http:\/\/www.unece.org\/fileadmin\/DAM\/cefact\/codesfortrade\/CCTS\/CCTS-Version3.pdf\" target=\"_blank\"\u003ECCTS\u003C\/a\u003E Representation Terms and the\u0026nbsp; \u003Ca href=\"http:\/\/www.unece.org\/fileadmin\/DAM\/cefact\/codesfortrade\/CCTS-CatalogueVersion3.pdf\" target=\"_blank\"\u003EUN\/CEFACT Core Components Data Type Catalogue\u003C\/a\u003E. In all my years of experience, I've found these kinds of elements in the OpenUserAreaType to be the most often used in a pinch.\u0026nbsp; So again the management is easy.\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Cdiv\u003E\nLastly, there is the AnyUserAreaType which is an xsd:any with strict process contents.\u0026nbsp; This is how the UserArea used to be defined in previous releases.\u0026nbsp; In this release, it is a type that can be employed as needed.\u0026nbsp; In fact the UserAreaType is one of these \"any\" definitions.\u0026nbsp; However it is important to note that the UserArea global element is not defined as \"UserAreaType\" but as \"AllUserAreaType\" which extends \"OpenUserAreaType\".\u0026nbsp; So be sure to keep that straight and you'll have lots of possibilities for managing extensions at your fingertips.\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cdiv class=\"blogger-post-footer\"\u003Ehttp:\/\/www.strategicdevelopment.io\u003C\/div\u003E"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http:\/\/blog.strategicdevelopment.io\/feeds\/5464892473051453340\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"http:\/\/www.blogger.com\/comment\/fullpage\/post\/2200693733508292186\/5464892473051453340","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/5464892473051453340"},{"rel":"self","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/5464892473051453340"},{"rel":"alternate","type":"text/html","href":"http:\/\/blog.strategicdevelopment.io\/2012\/12\/oagis-x-reviewed-part-2.html","title":"#OAGIS X reviewed - part 2"}],"author":[{"name":{"$t":"Paul"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/10201367533944398106"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-2200693733508292186.post-9109402239697499012"},"published":{"$t":"2012-11-25T08:54:00.002-05:00"},"updated":{"$t":"2012-12-11T19:38:36.658-05:00"},"title":{"type":"text","$t":"#OAGIS X reviewed - part 1"},"content":{"type":"html","$t":"This is part one of a review of \u003Ca href=\"http:\/\/www.oagi.org\/\" target=\"_blank\"\u003EOAGIS X\u003C\/a\u003E release candidate 1 from \u003Ca href=\"http:\/\/www.oagi.org\/\" target=\"_blank\"\u003EOAGi\u003C\/a\u003E. (see \u003Ca href=\"http:\/\/blog.xmlhelpline.com\/2012\/12\/oagis-x-reviewed-part-2.html\" target=\"_blank\"\u003Epart 2\u003C\/a\u003E)\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nThe first part that is crucial to understand is that the semantics remain intact.\u0026nbsp; Indeed version X is a non-backwardly compatible major release.\u0026nbsp; So one might have concerns about changing data models.\u0026nbsp; However, at the high level, there was not any kind of large scale re-modeling of \nthe data models on the nouns, bods, or verbs.\u0026nbsp; This will be \ncomforting to those who have invested in previous version of OAGIS and \nwho may be worried about what has been done with a new release.\u0026nbsp; In fact, I was able to create a valid xml instance document from a valid 9.4 version document without much work. \u003Cbr \/\u003E\n\u003Cbr \/\u003E\nWhen comparing instance documents, the first area for change you'll notice is in attributes.\u0026nbsp; Specifically around codes and identifiers.\u0026nbsp; For example, the LogicalID element in version 9.4 looks like this:\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\u0026lt;LogicalID\u003Cbr \/\u003E\nschemeID=\"\" \u003Cbr \/\u003E\nschemeAgencyID=\"\"\u003Cbr \/\u003E\nschemeVersionID=\"\"\u003Cbr \/\u003E\nschemeName=\"\"\u003Cbr \/\u003E\nschemeAgencyName=\"\"\u003Cbr \/\u003E\nschemeURI=\"\"\u003Cbr \/\u003E\nschemeDataURI=\"\"\u003Cbr \/\u003E\n\u0026gt;\u0026lt;\/LogicalID\u0026gt;\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nWhereas the X version is streamlined looking like this:\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\u0026lt;LogicalID\u003Cbr \/\u003E\nschemeID=\"\" \u003Cbr \/\u003E\nschemeAgencyID=\"\"\u003Cbr \/\u003E\nschemeVersionID=\"\"\u003Cbr \/\u003E\n\u0026gt;\u0026lt;\/LogicalID\u0026gt;\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nThis effectively pushes values for agency name and such into basically a lookup table.\u0026nbsp; Not an unreasonable approach.\u0026nbsp; Generally I've not seen those attributes being used anyway.\u0026nbsp; So this simplification is good.\u0026nbsp; Certainly when generating sample documents or dealing with the schema as a data model, the existence of all these extra attributes was often cumbersome.\u0026nbsp; And similarly to this ID, the same streamlining was done on codes as well.\u0026nbsp; Strike one for simplification.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nThe second thing you might notice is the base namespace is the same.\u0026nbsp; \"http:\/\/www.openapplications.org\/oagis\/9\" is still the default namespace in BODs.\u0026nbsp; I haven't checked with the folks at OAGi about whether this should be \"10\" instead of \"9\" but I'll assume that by the time the bundle is released in the production version this would be changed.\u0026nbsp; In the short term though, this makes working between 9.4 and X that much easier (or harder in some cases).\u0026nbsp; I've kept them separate and so don't have collision problems, but if they must coexist you'll need to manage that carefully.\u0026nbsp; It is a candidate release.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nI've got more to say so I'll return and update you on this important new release of OAGIS.\u003Cbr \/\u003E\n(see \u003Ca href=\"http:\/\/blog.xmlhelpline.com\/2012\/12\/oagis-x-reviewed-part-2.html\" target=\"_blank\"\u003Epart 2\u003C\/a\u003E) \u003Cbr \/\u003E\n\u003Cbr \/\u003E\u003Cdiv class=\"blogger-post-footer\"\u003Ehttp:\/\/www.strategicdevelopment.io\u003C\/div\u003E"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http:\/\/blog.strategicdevelopment.io\/feeds\/9109402239697499012\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"http:\/\/www.blogger.com\/comment\/fullpage\/post\/2200693733508292186\/9109402239697499012","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/9109402239697499012"},{"rel":"self","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/9109402239697499012"},{"rel":"alternate","type":"text/html","href":"http:\/\/blog.strategicdevelopment.io\/2012\/11\/oagis-x-reviewed-part-1.html","title":"#OAGIS X reviewed - part 1"}],"author":[{"name":{"$t":"Paul"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/10201367533944398106"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-2200693733508292186.post-8503519837137401909"},"published":{"$t":"2012-05-05T10:48:00.003-04:00"},"updated":{"$t":"2012-05-05T10:48:47.419-04:00"},"title":{"type":"text","$t":"SchemaLightener turns 4 years old ... and still free!"},"content":{"type":"html","$t":"The initial release of the \u003Ca href=\"http:\/\/xmlhelpline.com\/tools\/SchemaLightener.php\"\u003ESchemaLightener\u003C\/a\u003E was four years ago this month.\u0026nbsp; And I've been getting requests for it every week since.\u0026nbsp; When I started, I didn't think it would last this long, but its taken on a life of its own.\u0026nbsp; I simply wanted to work with libraries of schemas easier.\u0026nbsp; I'd been frustrated at the inability of tools to lighten or flatten them.\u0026nbsp; So I made my own.\u0026nbsp; Four years on, I'm still happy to be getting requests and \u003Ca href=\"http:\/\/blog.xmlhelpline.com\/2011\/03\/latest-schemalightener-feedback.html\"\u003Egreat feedback\u003C\/a\u003E.\u0026nbsp; It's being used in over 19 countries and is still free.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nIt was a simple design, built with XSLT 1.0.\u0026nbsp; And now, its been updated and includes a nice GUI interface, sample data, batch files, and an ANT task as well.\u0026nbsp; The most important developments of course have been the expansion into three tools in one.\u0026nbsp; The Lightener surely does lighten schemas, providing sample based profiling of a larger data model.\u0026nbsp; But the addition of the SchemaFlattener makes working with schemas much easier as well.\u0026nbsp; It takes a tangled web of includes and condenses them down into the smallest number of files necessary (one per namespace).\u0026nbsp; The WSDLFlattener, a third tool, does the same thing for WSDL files.\u0026nbsp; Merging files to the minimum so they can be managed more easily.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nThe tool has been tested with many consortium libraries including\u0026nbsp; OAGi – Open Application Group – \u003Ca href=\"http:\/\/www.oagi.org\/\"\u003Ehttp:\/\/www.oagi.org\u003C\/a\u003E, Swift – Society for Worldwide Interbank Financial Telecommunication – \u003Ca href=\"http:\/\/www.swift.com\/\"\u003Ehttp:\/\/www.swift.com\u003C\/a\u003E, NIEM – National Information Exchange Model – \u003Ca href=\"http:\/\/www.niem.gov\/\"\u003Ehttp:\/\/www.niem.gov\u003C\/a\u003E, HR-XML – Human Resources XML – \u003Ca href=\"http:\/\/www.hr-xml.org\/\"\u003Ehttp:\/\/www.hr-xml.org\u003C\/a\u003E, OTA – Open Travel Alliance – \u003Ca href=\"http:\/\/www.opentravel.org\/\"\u003Ehttp:\/\/www.opentravel.org\u003C\/a\u003E, ACORD – Association for Cooperative Operations Research and Development \u0026nbsp;– \u003Ca href=\"http:\/\/www.acord.org\/\"\u003Ehttp:\/\/www.acord.org\u003C\/a\u003E, STAR – Standards for Technology in Automotive Retail – http:\/\/www.starstandard.org.\u0026nbsp; Plus countless company libraries and extensions.\u003Cbr \/\u003E\n\u003Ca href=\"http:\/\/www.starstandard.org\/\"\u003E\u003C\/a\u003E\u003Cbr \/\u003E\nSo if you're interested in getting a copy, just send me an \u003Ca href=\"http:\/\/www.xmlhelpline.com\/contact.php\"\u003Eemail\u003C\/a\u003E.\u0026nbsp; No spam or mailing list risk - so don't worry about getting hit with unwanted mail.\u0026nbsp; And thanks for all the \u003Ca href=\"http:\/\/xmlhelpline.com\/tools\/BuyMeACoffee.php\"\u003Ecoffee\u003C\/a\u003E and support over the years!\u003Cbr \/\u003E\n\u003Cbr \/\u003E\u003Cdiv class=\"blogger-post-footer\"\u003Ehttp:\/\/www.strategicdevelopment.io\u003C\/div\u003E"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http:\/\/blog.strategicdevelopment.io\/feeds\/8503519837137401909\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"http:\/\/www.blogger.com\/comment\/fullpage\/post\/2200693733508292186\/8503519837137401909","title":"2 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/8503519837137401909"},{"rel":"self","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/8503519837137401909"},{"rel":"alternate","type":"text/html","href":"http:\/\/blog.strategicdevelopment.io\/2012\/05\/schemalightener-turns-4-years-old-and.html","title":"SchemaLightener turns 4 years old ... and still free!"}],"author":[{"name":{"$t":"Paul"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/10201367533944398106"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"thr$total":{"$t":"2"}},{"id":{"$t":"tag:blogger.com,1999:blog-2200693733508292186.post-8046116657843543049"},"published":{"$t":"2011-08-16T15:07:00.000-04:00"},"updated":{"$t":"2011-08-16T15:07:08.625-04:00"},"title":{"type":"text","$t":"Profiling Xml Schema"},"content":{"type":"html","$t":"I've gotten some recent offline comments about the article I wrote called \"\u003Ca href=\"http:\/\/www.xml.com\/pub\/a\/2006\/09\/20\/profiling-xml-schema.html?page=1\"\u003EProfiling Xml Schema\u003C\/a\u003E\" on xml.com.\u0026nbsp; Its been quite a while since I wrote the piece.\u0026nbsp; At the time I was attempting to cull a \"best practices\" guide on how schema developers are actually using this technology.\u0026nbsp; I've run into too many tool bugs with the more advanced aspects of the spec. Looking back, the article holds up pretty well.\u0026nbsp; Most of the recommended practices are still the norm today.\u003Cbr \/\u003E\n\u0026nbsp;\u0026nbsp; \u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\u003Cdiv class=\"blogger-post-footer\"\u003Ehttp:\/\/www.strategicdevelopment.io\u003C\/div\u003E"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http:\/\/blog.strategicdevelopment.io\/feeds\/8046116657843543049\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"http:\/\/www.blogger.com\/comment\/fullpage\/post\/2200693733508292186\/8046116657843543049","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/8046116657843543049"},{"rel":"self","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/8046116657843543049"},{"rel":"alternate","type":"text/html","href":"http:\/\/blog.strategicdevelopment.io\/2011\/08\/profiling-xml-schema.html","title":"Profiling Xml Schema"}],"author":[{"name":{"$t":"Paul"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/10201367533944398106"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-2200693733508292186.post-4768482612012936921"},"published":{"$t":"2011-07-01T19:50:00.000-04:00"},"updated":{"$t":"2011-07-01T19:50:10.250-04:00"},"title":{"type":"text","$t":"ID3v2 tag editing - how I wish I could use Xml"},"content":{"type":"html","$t":"Trying to edit various tags in my music collection.\u0026nbsp; The good news is that there is a standard data format, namely \u003Ca href=\"http:\/\/en.wikipedia.org\/wiki\/ID3#ID3v2\"\u003EID3v2\u003C\/a\u003E.\u0026nbsp; The bad news is that the files can't be edited easily.\u0026nbsp; Specialized tag editors are needed to embed the artist name, album, genre etc into the mp3.\u0026nbsp; There is an awesome one I've used called \u003Ca href=\"http:\/\/www.mp3tag.de\/en\/\"\u003EMp3tag\u003C\/a\u003E.\u0026nbsp; Its free and works very well.\u0026nbsp; But things like embedding the album cover art is impossible to do.\u0026nbsp; Let alone other automated tasks.\u003Cbr \/\u003E\nI find myself wanting to get into the details of the tagging and perhaps write some scripts to automate some tagging tasks.\u0026nbsp; And I keep thinking I'd like to be able to use Xml to manage the metadata.\u0026nbsp; I could get the tools and edits I want done very fast.\u0026nbsp; And no need to get some specialized editor that has only some of the features I want.\u0026nbsp; Xml is just text, so any text editor would work.\u0026nbsp; And it manages delimited metadata very well.\u003Cbr \/\u003E\nUntil the standard changes, I'm stuck using someone else's tool.\u003Cdiv class=\"blogger-post-footer\"\u003Ehttp:\/\/www.strategicdevelopment.io\u003C\/div\u003E"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http:\/\/blog.strategicdevelopment.io\/feeds\/4768482612012936921\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"http:\/\/www.blogger.com\/comment\/fullpage\/post\/2200693733508292186\/4768482612012936921","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/4768482612012936921"},{"rel":"self","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/4768482612012936921"},{"rel":"alternate","type":"text/html","href":"http:\/\/blog.strategicdevelopment.io\/2011\/07\/id3v2-tag-editing-how-i-wish-i-could.html","title":"ID3v2 tag editing - how I wish I could use Xml"}],"author":[{"name":{"$t":"Paul"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/10201367533944398106"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-2200693733508292186.post-6812535095246591794"},"published":{"$t":"2011-06-10T20:49:00.000-04:00"},"updated":{"$t":"2011-06-10T20:49:02.694-04:00"},"title":{"type":"text","$t":"MISMO Trimester Meeting mentions use of Schema Lightener \/ Flattener"},"content":{"type":"html","$t":"Was recently contacted by Greg Alvord, the \u003Ca href=\"http:\/\/www.mismo.org\/\"\u003EMISMO\u003C\/a\u003E Architecture Committee Chairman about the \u003Ca href=\"http:\/\/www.xmlhelpline.com\/tools\/SchemaLightener.php\"\u003ESchemaLightener\/SchemaFlattener\u003C\/a\u003E.\u0026nbsp; He was doing a presentation that included extensions and wanted to mention this tool.\u0026nbsp; I've included MISMO in the testing of the tool, so I was happy to have them make use of it.\u003Cbr \/\u003E\nBelow is the title and direct link to the presentation given at the \u003Ca href=\"http:\/\/www.mismo.org\/meetings-and-events\/133-may-2011-trimester-wrapup.html\"\u003EMISMO Trimester Meeting\u003C\/a\u003E May 23 - 26, 2011 Las Vegas, Nevada.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nGreg Alvord\u003Cbr \/\u003E\nUnderstanding and Implementing Version 3.x\u003Cbr \/\u003E\n\u003Ca href=\"http:\/\/www.mismo.org\/mismo-files\/meetings\/Version3_1DeepDive.pdf\"\u003Ehttp:\/\/www.mismo.org\/mismo-files\/meetings\/Version3_1DeepDive.pdf\u003C\/a\u003E\u003Cdiv class=\"blogger-post-footer\"\u003Ehttp:\/\/www.strategicdevelopment.io\u003C\/div\u003E"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http:\/\/blog.strategicdevelopment.io\/feeds\/6812535095246591794\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"http:\/\/www.blogger.com\/comment\/fullpage\/post\/2200693733508292186\/6812535095246591794","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/6812535095246591794"},{"rel":"self","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/6812535095246591794"},{"rel":"alternate","type":"text/html","href":"http:\/\/blog.strategicdevelopment.io\/2011\/06\/mismo-trimester-meeting-mentions-use-of.html","title":"MISMO Trimester Meeting mentions use of Schema Lightener \/ Flattener"}],"author":[{"name":{"$t":"Paul"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/10201367533944398106"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-2200693733508292186.post-1121490565238723931"},"published":{"$t":"2011-03-24T19:14:00.002-04:00"},"updated":{"$t":"2011-03-24T19:16:11.228-04:00"},"title":{"type":"text","$t":"latest SchemaLightener feedback"},"content":{"type":"html","$t":"\"\u003Ci\u003EIt worked like a charm on my schemas :)\u0026nbsp; I bought you a few cups of coffee for the effort. Keep up the good work.\u003C\/i\u003E\"\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\"\u003Ci\u003EBrilliant thanks Paul.\u0026nbsp; I've downloaded your tool and it works really well.\u003C\/i\u003E\"\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\"\u003Ci\u003Ethank you for sending me the tools. The WSDL flattener helped me a lot and I will tell everybody in our office about it.\u003C\/i\u003E\"\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\"\u003Ci\u003EGreat job on the xml tool\u003C\/i\u003E\"\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\"\u003Ci\u003EPaul, thank you so much!\u0026nbsp; I’ll definitely buy you a coffee! ;)\u003C\/i\u003E\"\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\"\u003Ci\u003EPlease\u0026nbsp; could you let me know how to get hold of your WSDL flattener – those xs:includes are driving me nuts!\u003C\/i\u003E\"\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\"\u003Ci\u003EThanks a lot. I did test the sample data and it works beautifully.\u003C\/i\u003E\" \u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\"\u003Ci\u003EYour XML Schema Lightener and Flattener tool sounds like just what I need.\u003C\/i\u003E\"\u003Ci\u003E \u003C\/i\u003E \u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\"\u003Ci\u003EThanks Paul, this worked like a charm. A little bit of hacking at it  but we now have the schema we were after! Thanks for your contribution,  it would have been a nightmare without your XML Lightner tool.\"\u003C\/i\u003E\u003Cdiv class=\"blogger-post-footer\"\u003Ehttp:\/\/www.strategicdevelopment.io\u003C\/div\u003E"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http:\/\/blog.strategicdevelopment.io\/feeds\/1121490565238723931\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"http:\/\/www.blogger.com\/comment\/fullpage\/post\/2200693733508292186\/1121490565238723931","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/1121490565238723931"},{"rel":"self","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/1121490565238723931"},{"rel":"alternate","type":"text/html","href":"http:\/\/blog.strategicdevelopment.io\/2011\/03\/latest-schemalightener-feedback.html","title":"latest SchemaLightener feedback"}],"author":[{"name":{"$t":"Paul"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/10201367533944398106"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-2200693733508292186.post-339827425287442313"},"published":{"$t":"2011-03-05T14:58:00.000-05:00"},"updated":{"$t":"2011-03-05T14:58:49.344-05:00"},"title":{"type":"text","$t":"Schema Lightener \/ Schema Flattener \/ WSDL Flattener now updated - and still free"},"content":{"type":"html","$t":"\u003Cdiv class=\"MsoNormal\"\u003EThe Schema Lightener \/ Schema Flattener \/ WSDL Flattener tool has been recently upgraded.\u0026nbsp; \u003C\/div\u003E\u003Cdiv class=\"MsoNormal\"\u003EAnd of course it is still absolutely free.\u003C\/div\u003E\u003Cdiv class=\"MsoNormal\"\u003E\u003Cbr \/\u003E\n\u003C\/div\u003E\u003Cdiv class=\"MsoNormal\"\u003E\u003Cu\u003EA summary of enhancements:\u003C\/u\u003E\u003C\/div\u003E\u003Cdiv class=\"MsoNormal\"\u003E\u003Col\u003E\u003Cli\u003ESchema Flattener (and WSDL Flattener) now handle recursive includes.\u0026nbsp; This has been an ongoing request, and it’s finally done!\u0026nbsp;\u0026nbsp; See below for details.\u003C\/li\u003E\n\u003Cli\u003ESchema Lightener can use multiple Xml instances files.\u0026nbsp; \u003Ca href=\"http:\/\/blog.xmlhelpline.com\/2011\/02\/using-multiple-file-inputs-with-schema.html\"\u003EDetails on how to do it are blogged here.\u003C\/a\u003E\u0026nbsp; A sample multi-file is included in the download.\u003C\/li\u003E\n\u003Cli\u003EANT task files are included along with Apache Ant itself.\u0026nbsp; You can customize this to suit your needs.\u003C\/li\u003E\n\u003Cli\u003EUpdated GUI with fixes and ability to clear logs\u003C\/li\u003E\n\u003C\/ol\u003E\u003C\/div\u003E\u003Cdiv class=\"MsoNormal\"\u003EAs always, if you'd like to help support this effort and keep these tools free, you may choose to buy some coffee here:\u003Cbr \/\u003E\n\u003Ca href=\"http:\/\/www.xmlhelpline.com\/tools\/BuyMeACoffee.php\" target=\"_blank\"\u003Ehttp:\/\/www.xmlhelpline.com\/tools\/BuyMeACoffee.php\u003C\/a\u003E\u003Cbr \/\u003E\nAnd thank you!\u003C\/div\u003E\u003Cdiv class=\"MsoNormal\"\u003E\u003Cbr \/\u003E\n\u003C\/div\u003ETry it and if you like it, please blog or post about it so we can get the word out.   \u003Cbr \/\u003E\n\u003Cdiv class=\"MsoNormal\"\u003E\u003Cbr \/\u003E\n\u003C\/div\u003E\u003Cdiv class=\"MsoNormal\"\u003ETo get it, simply send me an email and I'll reply with the download link. (Don't worry, I won't spam you with unwanted email.)\u003C\/div\u003E\u003Cdiv class=\"MsoNormal\"\u003E\u003Cbr \/\u003E\n\u003C\/div\u003E\u003Cdiv class=\"MsoNormal\"\u003E\u003C\/div\u003E\u003Cdiv class=\"MsoNormal\"\u003EHere is a link to background information:\u003Cbr \/\u003E\n\u003Ca href=\"http:\/\/www.xmlhelpline.com\/tools\/\" target=\"_blank\"\u003Ehttp:\/\/www.xmlhelpline.com\/tools\/\u003C\/a\u003E\u003C\/div\u003E\u003Cdiv class=\"MsoNormal\"\u003E\u003Cbr \/\u003E\n**********************\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nRegarding the issue with recursive includes (\u003Ca href=\"http:\/\/blog.xmlhelpline.com\/2011\/02\/recursive-includesimports-in-xslt-tools.html\"\u003Esee post\u003C\/a\u003E): some of you have replied to me with error messages similar to the one below.\u0026nbsp; This issue was resolved in the Lightener some time ago but was a known limitation in the other tools.\u0026nbsp; I finally addressed it reusing this code in both the Schema Flattener and the WSDL Flattener.\u0026nbsp; So now no matter which tool you use, it can handle recursive includes.\u003Cbr \/\u003E\n------------------------------\u003Cbr \/\u003E\nProcessing ...\u003Cbr \/\u003E\nException: net.sf.saxon.trans.XPathException: Too many nested template or function calls. The stylesheet may be looping.\u003Cbr \/\u003E\nToo  many nested template or function calls. The stylesheet may be looping.;  SystemID:  file:\/C:\/tinyurl\/xmlHelplineFreeTools-3.1-working\/SchemaFlattenerF.xslt;  Line#: 566; Column#: -1\u003Cbr \/\u003E\n------------------------------\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\u003Cbr \/\u003E\n\u003C\/div\u003E\u003Cdiv class=\"MsoNormal\"\u003E\u003Cbr \/\u003E\n\u003C\/div\u003E\u003Cdiv class=\"blogger-post-footer\"\u003Ehttp:\/\/www.strategicdevelopment.io\u003C\/div\u003E"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http:\/\/blog.strategicdevelopment.io\/feeds\/339827425287442313\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"http:\/\/www.blogger.com\/comment\/fullpage\/post\/2200693733508292186\/339827425287442313","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/339827425287442313"},{"rel":"self","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/339827425287442313"},{"rel":"alternate","type":"text/html","href":"http:\/\/blog.strategicdevelopment.io\/2011\/03\/schema-lightener-schema-flattener-wsdl.html","title":"Schema Lightener \/ Schema Flattener \/ WSDL Flattener now updated - and still free"}],"author":[{"name":{"$t":"Paul"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/10201367533944398106"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-2200693733508292186.post-6525589271480223432"},"published":{"$t":"2011-02-25T20:17:00.000-05:00"},"updated":{"$t":"2011-02-25T20:17:16.096-05:00"},"title":{"type":"text","$t":"Fantasy iTunes"},"content":{"type":"html","$t":"Heard of fantasy football?  How about fantasy iTunes!  Here is my fantasy experience.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nI sit here working and listening to my music.  It has all my songs listed and sortable by artist, title, genre etc.  One of my favorites comes on and I think \"\u003Cspan style=\"font-style: italic;\"\u003EI'd like to get the lyrics for this song and read them\u003C\/span\u003E\".   Right click on the song \"\u003Cspan style=\"font-weight: bold;\"\u003Edisplay lyrics\u003C\/span\u003E\".  Now I can read some of the words that I may not hear correctly.  In my case, the crushing rock guitar rips in and stomps on a lead-in word so I can't make it out.  The lyrics really speak to me sometimes and now I have them.  If I don't, I'd be happy to pay extra for them.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nSatisfied, I return to my work.  Diligently getting things done.  Then I wonder, \"\u003Cspan style=\"font-style: italic;\"\u003Edidn't they make a cool video for that song?\u003C\/span\u003E\".  Right click on song and hit \"\u003Cspan style=\"font-weight: bold;\"\u003Ego to video on youtube\u003C\/span\u003E\".  As it turns out, they did make a video and it adds a visual to the aural experience of the song.  A great accompaniment.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nNow back to some work.  I must reach this deadline.  But wait, I was wondering on what album that song appeared.  I may want to go buy it.  Plus, I want to know who wrote it.  Was it created by the guitar hero or the soulful singer?  Right click \"\u003Cspan style=\"font-weight: bold;\"\u003Ego to liner notes\u003C\/span\u003E\".  Now I know \u003Cspan style=\"font-style: italic;\"\u003Ewho wrote the song, who produced it, and what album its on\u003C\/span\u003E.  Let's go buy the whole thing next.  And maybe the producer has worked with other bands I might be interested in.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nForget work.  I'm going to post a note on facebook about how great this song is.  Maybe see what my friends think.  And maybe they will give me advice on what songs I might like because they are related to or similar to this song.  Click \"\u003Cspan style=\"font-weight: bold;\"\u003Eshare\u003C\/span\u003E\".\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nNow, just like fantasy football, I have a total \"fan\" experience.  Cheap songs are great.  But so is watching football games on TV for free.  Go after the residuals and \u003Cspan style=\"font-weight: bold;\"\u003Egrow the fan base by supporting the real fanatics\u003C\/span\u003E.  The real music fans.  Who want the details.  Who buy lots of music and are passionate about it. \u003Cspan style=\"font-style: italic;\"\u003E \u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nThink of the total experience one could have.\u003Cbr \/\u003E\n\u003Cbr \/\u003E\nThat is my Fantasy iTunes experience.\u003Cdiv class=\"blogger-post-footer\"\u003Ehttp:\/\/www.strategicdevelopment.io\u003C\/div\u003E"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http:\/\/blog.strategicdevelopment.io\/feeds\/6525589271480223432\/comments\/default","title":"Post Comments"},{"rel":"replies","type":"text/html","href":"http:\/\/www.blogger.com\/comment\/fullpage\/post\/2200693733508292186\/6525589271480223432","title":"0 Comments"},{"rel":"edit","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/6525589271480223432"},{"rel":"self","type":"application/atom+xml","href":"http:\/\/www.blogger.com\/feeds\/2200693733508292186\/posts\/default\/6525589271480223432"},{"rel":"alternate","type":"text/html","href":"http:\/\/blog.strategicdevelopment.io\/2011\/02\/fantasy-itunes.html","title":"Fantasy iTunes"}],"author":[{"name":{"$t":"Paul"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/10201367533944398106"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"thr$total":{"$t":"0"}}]}}