Tuesday, March 3, 2020

If not for the budget, Could have nearly achieved a voice based provisioning platform - CWM Extension

Following would be key steps/aspects 


1) Open Standards in providing NLP inputs ( any RFC present ? yes Ref[1] ) 
2) Mapping the voice input to the back end business workflow use case
3) Identify additional input and prompt it with user who can pick it in interactive manner
4) Validate input in step 3) 
5) Construct JSON and invoke REST API
6) Invoke the workflow as in existing system today.

This would have meant a voice-ready remediation platform.
A feature that BMC remedy product would also need to think off in near future.

Anyways. Some one else will do it.

References:
[1]
https://tools.ietf.org/html/rfc4313

Good reading(s)
[2]
https://www.softwaretestinghelp.com/voice-recognition-software/
https://www.totalvoicetech.com/how-voice-recognition-technology-works/

[3]
Voice sense - Research
https://www.readingrockets.org/article/speech-recognition-learning

Remember the Voice Configuration Assitant hackthon - 2016
This could have been a feature in CUCM. One that I repent not doing it.

Also Microsoft O365 has voice assitant who subsitutes stenographer work of older days.
:)

[4]
https://www.twilio.com/bots

Transactional bots are like goldfish – they don’t remember previous interactions with the user and can’t maintain extended dialogue with the user.
 

Conversational bots are like elephants – they maintain the state of the conversation and carry information between turns of the conversation.
[5]
https://www.drift.com/wp-content/uploads/2018/01/2018-state-of-chatbots-report.pdf
 

More readings in Python and my crafted formulae 4 March 2020


[1]
Python + NoSQL DB ops = Python Flask
Good article that illustrates this is 
https://opensource.com/article/18/4/flask

[2]
Python is heavily used in ML (Machine Learning) domain
Innovative way of blogging/writing a book review by commenting on screenshot taken with important pages in text book.

https://no-title.victordomingos.com/articles/2020/book_review_machine_learning_with_python/
https://no-title.victordomingos.com/articles/2019/book_review_python_for_programmers/
https://no-title.victordomingos.com/articles/2018/book_review_python_tricks/

 [3]
Do not be afraid of exploring this functional programming

https://blog.codinghorror.com/a-scripter-at-heart/ 
..
Larry Wall (of Google) highlights the following axes of language design in his survey:

  •     Binding: Early or Late?
  •     Dispatch: Single or Multiple?
  •     Evaluation: Eager or Lazy?
  •     Typology: Eager or Lazy?
  •     Structures: Limited or Rich?
  •     Symbolic or Wordy?
  •     Compile Time or Run Time?
  •     Declarational or Operational?
  •     Classes: Immutable or Mutable?
  •     Class-based or Prototype-based?
  •     Passive data, global consistency or Active data, local consistency?
  •     Encapsulatation: by class? by time? by OS constructs? by GUI elements?
  •     Scoping: Syntactic, Semantic, or Pragmatic?
 ...
The reason why dynamic languages like Perl, Python, and PHP are so important is key to understanding the paradigm shift. Unlike applications from the previous paradigm, web applications are not released in one to three year cycles. They are updated every day, sometimes every hour. Rather than being finished paintings, they are sketches, continually being redrawn in response to new data.

In my talk, I compared web applications to Von Kempelen's famous hoax, the mechanical Turk, a 1770 mechanical chess playing machine with a man hidden inside. Web applications aren't a hoax, but like the mechanical Turk, they do have a programmer inside. And that programmer is sketching away madly
..

[4]
Some good blogs in python
https://blog.eduonix.com/software-development/top-python-blogs-follow-2019/


[5] Know that Apple Co is a also a big fan of python

Busniess iPhone ; China ; CEO ; Tim Cook ; CNBC ; Interview
https://medium.com/datadriveninvestor/no-more-budget-iphones-fba97ff5c902

With these thoughts march forward into 2020 for the moment.


 



Recap work of 2018-2019


Tags : Microservices , CWM , CUCM

http://ramekris.wixsite.com/research/cwm

http://ramekris.wixsite.com/research/post/message-queues-rabbitmq-vs-kafka

Highly indebted and grateful to Atul paldhikar and Ramesh Krishnamurthy, with whom I work with here


Monday, March 2, 2020

If you were to be software IT infrastructure enginner - [ Material/Thinking/Market Jargon ]


You earlier had developed feature for CUCM-CER product line, in category of  location based services, wherein ,  Cisco WLAN controller were configured in CUCM system and a sync service will infer access points ( AP ) deployed and configured at physical location of office space.

Voice call ( originating from VoIP phone(wireless) ) going via AP helped in tracking precise physical location of caller , thereby making emergency res ponders quickly get to the incident site.

A white paper of its deployment , and best practices recommended by Cisco can be found here, towards the last pages

https://www.cisco.com/c/dam/en/us/td/docs/wireless/controller/technotes/8-6/Enterprise_Best_Practices_for_iOS_devices_and_Mac_computers_on_Cisco_Wireless_LAN.pdf

This feature is way back in 2016.
This is good starting point of thinking in terms of solution deployement from hardware perspect.

Now in 2020, people are talking about SDN - Software Defined Networks.

Before jumping into new technology, lets see
Advantages 

https://www.networkworld.com/article/3209131/what-sdn-is-and-where-its-going.html?page=2

Challenges/Shortcomings
https://searchnetworking.techtarget.com/feature/Five-reasons-IT-pros-are-not-ready-for-SDN-investment
https://www.networkcomputing.com/networking/6-reasons-your-network-isnt-ready-sdn

 Analogical thinking 
(a)
Similar to virtualization jargon ( Iaas,Paas,SaaS,AaaS ) now SDN can be thought of as
NaaS - Network as a Service

SDN is for network routing protocols aware engineers; who can evaluate (service level argeement) SLA and mapping  to network (quality of service)  QoS parameters for the enterprise applications.

Over the week, was reading of LiFi networks and spatial modulation and network segregation . So one catapulting use case in near future would be to have separate networks,  for
a) having a separate network for IoT traffic
b) having a separate network for enterprise app traffic
c) having a separate network for secure /confidential  data traffic

(b)
Network administrator role is maturing to be called infrastructure specialist and probably a SDN specialist in near future.

(c)
One of NSO objective in CWM project  , would also be to automate the provisioning of switches and routers and have better control on packet routing and paths in production environment, which also maps to the basic theme here.

Reference

[1] https://www.sitepoint.com/li-fi-lighting-the-future-of-wireless-networks/

[2] Loving IBM documentation - on SDN
https://www.ibm.com/services/network/sdn-versus-traditional-networking


Tags
Image result for SDN icons
Image result for Cisco WLAN Controller  iconsImage result for Cisco WLAN Controller  iconsImage result for Li Fi   icons





 

Friday, February 21, 2020

Comparing object state represented in JSON - A tree comparison techinque in Java for AUD visualization

When persisting data representing as JSON into Mongo DB would be easier, there would also be a good need to compare to object state for changes ( Addition, Updation,Deletion ) AUD, of member/atrributes.

Now comes the next challenge. What if the JSON object has nested attributes or complex java-types.

How will be compare it.
Here are some Java libraries to do the same.

[1]
https://www.baeldung.com/jackson-compare-two-json-objects

[2]

https://stackoverflow.com/questions/50967015/how-to-compare-json-documents-and-return-the-differences-with-jackson-or-gson

https://cassiomolin.com/2018/07/23/comparing-json-documents-in-java/ 

Consider the following JSON documents:
{
  "name": {
    "first": "John",
    "last": "Doe"
  },
  "address": null,
  "birthday": "1980-01-01",
  "company": "Acme",
  "occupation": "Software engineer",
  "phones": [
    {
      "number": "000000000",
      "type": "home"
    },
    {
      "number": "999999999",
      "type": "mobile"
    }
  ]
}
------------------   - - - -- - - - -- - - - - --   
{
  "name": {
    "first": "Jane",
    "last": "Doe",
    "nickname": "Jenny"
  },
  "birthday": "1990-01-01",
  "occupation": null,
  "phones": [
    {
      "number": "111111111",
      "type": "mobile"
    }
  ],
  "favorite": true,
  "groups": [
    "close-friends",
    "gym"
  ]
}
------------------   - - - -- - - - -- - - - - --   
It will produce the following output:
 
Entries only on left
--------------------------
/address: null
/phones/1/number: 999999999
/phones/1/type: mobile
/company: Acme


Entries only on right
--------------------------
/name/nickname: Jenny
/groups/0: close-friends
/groups/1: gym
/favorite: true


Entries differing
--------------------------
/birthday: (1980-01-01, 1990-01-01)
/occupation: (Software engineer, null)
/name/first: (John, Jane)
/phones/0/number: (000000000, 111111111)
/phones/0/type: (home, mobile)
 


Other experts from read ..
Everything was good until I had to compare complex JSON documents, with nested objects and arrays. A JSON document with nested objects is represented as a map of maps and Maps.difference(Map, Map) doesn’t give nice comparison results for that.
So yes this will ease up the problem.

Extension if you were to implement  JSON  Object State Change Notification, you will need to do some more post processing to get to format like

{
   "member_attr_name_1" : { "from_val" : "XYZ","to_val":"ABC"},
   "member_attr_name_2" : { "from_val" : "123","to_val":"789"},
   "member_attr_name_3" : { "from_val" : "2020-02-21T08:37:33+00:00","to_val":"2018-08-21T08:37:33+00:00"},

 ...
}



Analogy : NCS Client of CUCM , DBCNF processing of SQL records change , key functionality at informix level. if it breaks wheww , big things goes at stake.


Related thoughts :
 [1]
You may want to compare two similar mongo collections .
 https://stackoverflow.com/questions/41222805/compare-a-mongo-diff-on-two-collections/41223773

[2]
Pros:
  • you can specify subset of fields to compare.
  • you can see the actual diff of the records.
Cons:
  • to compare the full records, you need to know all possible fields.
  • mongoexport can be slow for huge databases.
To get all fields in all documents in a collection, see this answer.

Above two approaches help in solving set operation problems

[3]

From SQL Result set into JSON 
 

https://stackoverflow.com/questions/6514876/most-efficient-conversion-of-resultset-to-json
https://www.javacodegeeks.com/2018/09/streaming-jdbc-resultset-json.html
http://biercoff.com/nice-and-simple-converter-of-java-resultset-into-jsonarray-or-xml/


 Enjoy :)



Thursday, February 20, 2020

Tweaking pure RDBMS like Informix to store JSON

After having a quick overview in NoSQL DB, a natural thought was 
How can 
sql="insert into table(col1,col2,jsoncol) values(?,?,(?::JSON))";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, '');
pstmt.setString(2, '');
pstmt.setString(3, jsondata.toJSONString().replaceAll("\\\\/","/"));
pstmt.executeUpdate();
?::JSON like this
select data::JSON from table_name
 
Please note this is
works for Informix DB alone.

Followers