mishmash.log 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. What do you mean by SDK and protocol for VDI systems
  2. what sort of driver is it?
  3. so it's a driver in that it's loaded as a module which gets used by Citrix
  4. if you've ever worked with Citrix or with the Citrix Xenapp Virtual Drivers
  5. the Citrix Workspace or Citrix Virtual Channel SDK
  6. also the Citrix Workstation
  7. so the Citrix Workstation is on the client side
  8. which, thus far, we've had a targer which is a windows environment
  9. The Citrix pattern is a solution for controlling a remote workstation
  10. Generally other solutions like a remote desktop interface or application are well let's think of a few of them
  11. there is reminmmma
  12. there are the VNC type clients
  13. there are some variations of those, such as solutions created in Go
  14. I haven't used all of them, I'v egenerally loathed using any sort of remote desktop solution because they're sluggish, and I've never had to rely on one
  15. generally if I need to do anything remote, I prefer to use ssh and some sort of a text based session where I can do the specific things that I need without having to think about a graphical user experience
  16. but as far as remote desktops rae concerned, Citrix seems to be the most fluid, performant, responsive, comprehensive that I've tried
  17. that said, i've also seen plenty of flaws in the documentation and in the example code that we're given
  18. I mean thigns work, but the documentation was not so great in the sense that it's written in a very confusing way
  19. which suggests that either it's written by a developer who isn't very good at technical writing
  20. or is perhaps not very experienced in doing it
  21. or it's written by someone who does technical writing, but isn't a defveloper or an engineer
  22. and in this sense it can be a bit frustrating, because the terms they choose to represent things are ambiguous and inconsistent, sometimes alluding to the possibility that they could be referring to multiple things
  23. causing you to question the progression of working through the components of the tutorial or setting up the examples
  24. that being said, it all worked in the end
  25. it seems that the software is fairly good, and that though there have been some issuesdsiscovered over the years, everthing appears to be gettting resolved eventually
  26. there are even capabilities which we haven't had to wory about, that we've entertained at least having to support in our work, such as the feature of being able to use up to 8 simultaneous monitors for one desktop environment
  27. that's pretty insane, i can't think of anyone who's had to do that, especially not for a remote session
  28. but nevertheless, we made sure we could support several in our testing, using different measurements on each etc..
  29. so in essence it' sa driver which is a module loaded by the Citrix Workspace, previously Citrix Xenapp, and it provides the means of leveraging a session lifecycle with their citrix technology
  30. the way this work si sby registering a virtual channel
  31. a wire to write and read from
  32. you register your virtual channel, and get a pointer to a C functiointerface
  33. and you write your data on a single thread and have it come out on the other side made available through another Citrix API where you can register another set of functions for use in the other environment
  34. we made this into a library which interfaces with Node JS, allowing you to regisjAvascript functions and import them into a NodeJS application
  35. the goal here was to make an SDK that javascript developers could use to wriet tent applications which are split as two applications in each system environment
  36. so you have a client side application which the user interacts with, such as a messaging or telecommunication program
  37. our use case was video calling application which makes use of the other SDKs provided by our company which couldn't be used by clients who have virtual desktop solutions, such as in banks (at least, our direct client is a major international bank)
  38. and so since they aren't able to use our SDK in their remote session, because the video is unusuable and the media is awful, we set out to create a solution which allows for the commands to be invoked from the user's environment
  39. causing actions in a remote application which is loaded in the user's immediate environment
  40. that remote application is where all of the signalling is performed
  41. then we provide a window from the remote environment which is overlayed in a predictable fashion such that it appears as though it is in the user's remote environment
  42. ie it is over the Citrix Window, and tracks accordingly
  43. so again the idea here is that they needed a video call application to run in a remote desktop environment, where the signalling is being performed locally in an application which could be thought fo as a remote application relative to the primary application
  44. the remote application is run in the driver running in the user's local system, which interfaces with citrix and writes data on a virtual wire which has been registered as what they term a Virtual Channel
  45. the data is split into packets which are somewhat easier to put back together on the other side, as it's not a stream, they are packets with a fixed size which are guaranteed to come out in the same size of chunk
  46. so we essentially referred to that process as packetization, by taking an RFC which detailed the same, and plugged in our numbers, ie the limitation of packet size, and implemented it
  47. our sdk provides several features, including a protocol for messages to be structuredsessions with a lifecycle represented as a progression of states
  48. the original solution was all built into the same process driver process
  49. this created its own rpocesses however as we were using CEF, Chromium Embedded Framework
  50. Chromium Embedded Framework is another SDK which can be used to create Chromium browsers
  51. this allows you to leverage the entire Chromium API, which in our case we were using for loading a remote application which was itself a JavaScript application which holds the other SDK of our company
  52. that SDK provides access to our subscription based services Software as a Service SAAS I should say
  53. we decided to refactor all of this, because the original solution had been rushed as a proof of concept and to get a deployed solution available for the client to use as soon as possible
  54. they were happy with the solution and have been using it internally, first with one team in Hong Kong, and eventually ramping it up to I believe a quarter million of their employees
  55. they are actively using this now
  56. we noticed some bottlenecks in the messaging and some issues which might be alleviated if it were not all piggybacking on the citrix viewer's process
  57. so what we did was redesign it with concerns split amongst separate processes which work together as a networking solution
  58. the first is a Communication link which houses a channel port, encoder/decoder and serializer/deserializer
  59. this would allow us to utilize different serialization solutions in the future, once we adapt the solution for something not involving Citrix
  60. on the radar was,has been and currently is VMWare
  61. essentially any serializer/deserializer could be used
  62. the communication link handles incoming requests from the client side applicationreceives them, sanitizes them, converts them to our own driver's messaging protocol, and then sensd them forward over IPC to another process called the Orchestrator
  63. the orchestrator is
  64. the orchestrator houses a controller to manage session logic and determine message flow, and a process host which we can use for launching other processes
  65. at the moment those other processes are window hosts and browser hosts
  66. the browser host is a daemon which can launch CEF browsers for any number of ongoing sessions
  67. and manage the state of those browsers to ensure that they are acting in accordance with our sessions and processes
  68. the window host is something which can procure, manage the lifecycle of, and destroy a window
  69. and this has to be implemented for each platform
  70. we have window solutions for linux, windows and mac
  71. the linux solution has been deployed for various thin clients
  72. the windows solution mostly for windows 10 64
  73. and the mac solution is one which we are working on right now, is the project for which I am accountable, and is nearing its deployment
  74. we've had to learn some ObjectiveC in order to implement the window properly on MacOS
  75. using a C bridge to give us access to the ObjectiveC API from our C++ based application
  76. I implemented that as an extern declared constant struct which has functions which create an ObjectiveC UI object, call methods on it, and perform cleanup as is necessary
  77. there is multithreading involved, yes
  78. we have a worker class which can be leveraged anywhere it's needed, such as with our orchestrator, whose use of a worker thread is handy for processing message queues
  79. so there are many processes at play here, all communicating and with one another in a patetrn whic his made to allow for a lot of overhead if needs be
  80. we imeplemnted wthis using ZeroMQ, a messaging library for reliable sockets
  81. it offers a few patterns which can be easily implemented
  82. the one which we settled on was a REQUEST-Reply pattern whereby wherein every message sent has to be responded to before another one can go out
  83. this allows us to track the exact order of a messaging scheme
  84. exit
  85. having words tos peak
  86. having thoughts to elucidate
  87. having a point of focus
  88. these are things that we take for granted as human beings
  89. based on our understanding of the definition of being human, having consciousness, and having the assumption that these capacities extend indefinitely
  90. of course, this is not always the case, as we see exceptions based on genetic circumstances or events incurred during development
  91. and these become more pronounced as one ages, as we see with our fellow brethren who unfortunately fall victim to neurodegenerative disease and suffer dementia later in life
  92. it may very well be taht they have a point of focus, and in that they are more or less aware of what it is, or that it can be acknowledged, might cloud our ability to discern whether or not they indeed have a point of focus
  93. likely so long as the mind continues to exist with a nervous system, there is a point of focus which is expressed temporally
  94. that being said, it would seem that we are coming to a point where our point of focus might no longer be our own
  95. this is already something that's theorized about and written about
  96. documentaries are made explicating the degree to which our social media companies have provided an interface into human behaviour and human observation
  97. which allows for a human's daily actions to be manipulated based on many methods, with one of the most easily understood examples being content suggestions which are placed in the most opportune view for the human to recognize and observe them
  98. exit