It's amazing how quickly the AI topic develops. In the past few months, I have seens so much new stuff emerging.
When I first saw this, I was amazed (happens a lot lately - maybe I am just too easy to motivate ;-). Then I thought: well voice enabled computing isn't new really, I mean all the hotlines do it. So while the Conversion UI basically serves the same purpose as traditional hotline conversation machines, the new thing about it is really the context based natural language interaction opposed to: request - response that it was in the past.
Goal for user:
Triggering a particular service
Goal for the AI:
Fetching all neccessary parameters from a natural language interaction in order to invoke the service.
Benefits for the User:
Natural language conversation, where the AI considers context (what has been said during the conversation, what environment the user is currently in (etc. location, time). Habits of the user are also taken into account as the history of how the user has been interacting with Google devices and services is tracked.
Benefits for the Developer:
Declarative approach to defining the conversation. It's based on examples rather than fixed rules, that the service can then turn into algorithms using it's AI.
What I stumbled across a lot lately is the issue of clearly identifying business problems that are applicable to machine learning, especially opposed to traditional programming solutions... The openSAP course "Enterprise Machine Learning in a Nutshell" does an excellent job in exactly that!
I will probably dive much deeper into this topic - many of my companies issues in knowledge management seem to be perfectly applicable to machine learning. Many issues in that field are regarding classification, that enable effective communication of knowlege in a fast growing organization.
Generally speaking machine learning is best applicable on highly repetative tasks (much data available) which has been done for a while. You can define success and failure for the training and testing data but solving the task is performed more along the lines of human intuition and experience.
Sometimes I stumble across things that are just jaw dropping. I have read a lot of articles and watched a lot of YouTube videos about AI. Google has great platforms and technology to power this, but what really is fascinating when you find something that steps from behind the glass wall of "me staring at it astonished" to "oh, hi there, let's play". This is what
is. An experimental Site where you can find an A.I. driven virtual playground. It may seem a little childish at first but then again children grow up really fast and become adults. This is something you don't want to be missing... not just watching but being a part of it.
And this here could be something, really useful for analytic technology fields. Probably one can find way's to apply this kind of pattern recognition to Business Intelligence releated questions. Isn't BI all about people trying to find patterns in data using visual tools like graphs and charts. We'll maybe machines can do that job quite well finding patterns in massive amounts of data...
For everybody who want's to get started with the concepts of machine learning in a fun way... As far as I get it, the basic idea to mimic evolutionary or learning based on experience.
A computer player in this scenario basically needs:
Senses like sight: Abstracting the actual screen to individual items like save ground, blocks/walls, gaps, enemies. Fortunately platforming games like Mario support abstraction really well as sprites can be though of as blocks of the above mentioned types
The ability to push buttons on the controller: Well there are APIs for that, right ;-)
Knowing what success means: e.g. advancing to the right side of the level without getting killed in the shortest amount of time
Patience, Endurance or the ability to massively parallelize the process of trying, trying, trying... as you are basically brute forcing every combination of button presses. But fortunately when you are failing you will have a sense of how successful you were based on how far you got in the level and how quickly you got there. Then you can take that as a starting point for further tries... or the next generation when shifting to evolutionary terms...
Worth a read is this paper which explains it much better than I tried (maybe my children will be more successful in explaining ;-)
In this course, we will focus on the new and improved features that were introduced in SAP HANA SPS 11 and 12. Developers taking this course should be able to get up to speed quickly and begin leveraging these new features to enhance their own productivity, as well…
When I just finished up first week's lectures and assignments I must admit I finally feel home. With XSA finally open and industry standards are adopted, rathen than reinventing the wheel over and over again:
Using GIT as a versioning repository instead of storing design time artefacts in database tables of the production system
Incorporating concepts of container based isolation opposed to "single-process-rules-them-all" approaches
Building on Cloud Foundary and thereby being much more open for existing applications and runtimes being migrated and then run on SAP HANA
Abstracting application users from technical users for accessing system or database ressources while unifying authentication and authorization
Now the HANA Platform opens itself to the rich ecosystem of that open source has to offer. As a developer I can use existing know how from non SAP backgrounds and maybe even new patterns and technologies emerge that you can take away from HANA and apply it in other areas and on other platforms.
So now Google is publishing its Slides API for programmatic use. This opens up a whole new world of slide generation.
This is especially interesting because I have previously been building my own REST Services for a Slide Service that we use for our own SaaS products at SNP Schneider-Neureither & Partner AG - such as the SNP System Scan. Results may look like this and a fully generated using a home-grown REST Service API.
Besides the REST API I have build additional higher level APIs, that can used e.g. directly in ABAP.
REPORT zdwi_generate_slides_test.
*"--- DATA DEFINITION -------------------------------------------------TYPE-POOLS: abap.*"--- PROCESSING LOGIC ------------------------------------------------START-OF-SELECTION.PERFORM main.FORM main.*"--- DATA DEFINITION -------------------------------------------------DATA: lr_deck TYPE REF TO /snp/cn02_cl_slidedeck.DATA: lr_slide TYPE REF TO /snp/cn02_cl_slide.DATA: lr_sub_slide TYPE REF TO /snp/cn02_cl_slide.DATA: lr_chart TYPE REF TO /snp/cn02_cl_slide_chart.DATA: lv_id TYPE string.DATA: lt_t000 TYPE TABLE OF t000.DATA: lv_layout TYPE string.DATA: lv_html TYPE string.DATA: lv_url TYPE string.*"--- PROCESSING LOGIC ------------------------------------------------
lv_id = /snp/cn00_cl_string_utils=>uuid( )."Generate the slidedeck
lr_deck = /snp/cn02_cl_slidedeck=>create(
iv_id = lv_id
iv_title = 'Fun with auto generated Slide Show'
iv_author = 'Dominik Wittenbeck'
iv_header = 'SNP Slideshow'
iv_footer = '<br/>')."--- Add first slide with some HTML Content
lr_slide = /snp/cn02_cl_slide=>create(
iv_title = 'First Slide with some HTML'
iv_topline = 'SNP Slides Showcase').CONCATENATE'<h1>' 'Headline' '</h1>''<p>''Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam''nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam''erat, sed diam voluptua. At vero eos et accusam et justo duo dolores''et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est''Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur''sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore''et dolore magna aliquyam erat, sed diam voluptua. At vero eos''et accusam et justo duo dolores et ea rebum. Stet clita kasd''gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.''</p>'INTO lv_html SEPARATED BY space.
lr_slide->add_html( lv_html ).
lr_deck->add_slide( lr_slide )."--- Create a second Slide with child slides
lr_slide = /snp/cn02_cl_slide=>create(
iv_title = 'Second Slide with child slides'
iv_topline = 'SNP Slides Showcase')."...with one child slide...
lr_sub_slide = /snp/cn02_cl_slide=>create(
iv_title = 'Second Slide with child slides'
iv_topline = 'SNP Slides Showcase').CONCATENATE'<p>''Check out the arrows on the lower right, this slide has another child slide''</p>'INTO lv_html.
lr_sub_slide->add_html( lv_html ).
lr_slide->add_slide( lr_sub_slide )."...and a second child slide...
lr_sub_slide = /snp/cn02_cl_slide=>create(
iv_title = 'Child Slide 2'
iv_topline = 'SNP Slides Showcase').
lr_sub_slide->add_html( 'Content of child slide 2' ).
lr_slide->add_slide( lr_sub_slide )."...oh, and don't forget to add the main slide to the deck ;-)
lr_deck->add_slide( lr_slide )."--- On the 3rd Slide letzt incorporate some data"Let's just fetch basic information about all clients...SELECT * FROM t000 INTO TABLE lt_t000."also split that slide into several parts using a layout
lr_slide = /snp/cn02_cl_slide=>create(
iv_title = 'Third Slide with a Chart'
iv_topline = 'SNP Slides Showcase'
iv_layout = 'vertical')."...and put that data in a bar chart in the" first part of the layout (=left side)
lr_chart = /snp/cn02_cl_slide_chart=>create_bar( ).
lr_chart->set_data(
it_data = lt_t000
iv_x_columns = 'ORT01' "Show number of clients per location).
lr_slide->add_chart( lr_chart )."...and put some descriptive text to the second part of" the layout (=right side)CONCATENATE'<p>''This is some descriptive text for the chart''</p>''<ul>''<li>' 'and while' '</li>''<li>' 'we''re at it, let''s' '</li>''<li>' 'have a few bullet points' '</li>''</ul>'INTO lv_html SEPARATED BY space.
lr_slide->add_html( lv_html )."...oh, and don't forget to add the main slide to the" deck... again ;-)
lr_deck->add_slide( lr_slide )."Publish the slide deck via the REST Service and Report" back the URL that would show it in a browser
lv_url = lr_deck->get_url( ).WRITE: / lv_url.ENDFORM.
So with the newly published Google Slides API maybe I could take this one step further....
From a methodological viewpoint, the visualization of management information is very similar to visualization in engineering drawings, the visualization of music, and visualizations in many other disciplines such
Not that I have tried it yet, but MobX looks like a straight forward alternative, especially for developers, that used to work with classical Model-Classes for a long time. It just seems so familiar.
Sometimes it's good to rethink our common practises. I'm not sure if I would apply this to a productive app, but it's worth thinking about the approaches presented.