 The next speaker is a co-worker of mine, and we'll talk about the technology we are using in our company, as well as our customers. It's something that, in all projects, we have seen increasingly. And that stops on the web. Thank you, Pawan. Thank you so much for giving me the chance to present the paper and be here today. Thank you. So, first of all, I want to introduce myself. Okay, I am Sexist Ernest, and I work for Forever. It's okay that it's a Spanish consultancy firm that is part of the entity data group. Okay, and you can find me around in Twitter, maybe GitHub. Okay, I have also my own blog that I mainly blog about. Microsoft Technologies, but also more and more about other things. Okay, why? Because mainly I've become a consultant related with Microsoft Technologies. Okay, I grow from developer to architect and then lead architect. Okay, so it's also a red for me to come to an open source event with Microsoft Technologies, and they also will realize that I'm with a Mac, so I think it looks promising. Microsoft architect, Mac and open source. Okay, so I want to talk about two things today. The first one, a crazy idea that I have in my mind and how we are applying Microsoft Technologies to try to make it real. Okay, and I want to start with three simple questions. Okay, how many of you are involved in some way with corporate or department applications? Okay, good. Using Microsoft Technologies? Good, good to know. How many or how many plan to use some corporate applications in the future if they are not applying it now? Okay, you're not thinking to change anything? Okay, so okay, when I talk, when I say corporate applications, I mean to RRP, CRM, CRS, okay, those kind of technologies that the companies need to run their business, okay, because there are a lot of solutions, okay, that in the market that the companies need to choose, need to access, and then install, and then maintain over and over the time. And in my experience running as consultants in Spain, I've been a while here in Brussels and now also in Switzerland, I realize that there's several problems with the solutions that you find on the market. They are expensive solutions with closed source, okay, they are extremely difficult to integrate one between others. You can buy a big SAP, but then it's really difficult to integrate with other solutions. For instance, sometimes the user experience is ugly and it's something that is very, very important in today's mobile first world. Users are used to beautiful user interface, so it's a very, very common problem. The setup, the most of the times it's painful and it's a very complex process of deployment and it's really difficult to adjust to the business, okay. You always try to keep these corporate applications as a standard as possible, okay, and don't talk about switching from one product to other because it's really a pain. I mean, when on the earth, there's a lot of people that you can see around us here in Poland that is creating some technologies that are disconnected. You have a lot of dots in the path that if we make this, going to this quote from the Stanford commencement speech 2005 of Steve Jobs, he said, you can connect the dots looking forward. You can connect only them looking backward. So you have to trust that the dots will some connect in the future. Okay, so we have, we'll go around and see all the dots that the people is putting on the table right now. And you have a look, for example, this dot that is the iPhone and the dots that Apple then realized. So the app store, we firstly think why there is no web desktop that provides the ability to companies to deploy corporate applications like the personal app stores do, no? Why there is no a click and deploy? So you can modularize or you can choose the best solution for your company. And you need to go for standard solutions, closed solutions that you cannot customize, you cannot integrate because there's a battle between the companies. So why we can open a new business model where any developer in the world can create a module that can be deployed to app store and any company in the world can download. So this is more or less what I truly believe, not that with the existing technologies like we saw before, for example, with Kubernetes, with Ansible, all of those automation tools that we have right now in the market, if we connect them all and we put the right investment and vision, we can create a new business model, okay, a corporate web desktop, okay, where there's with an attached app store inside, okay, covering all the business needs that a company may have because maybe big companies have the budget that they need to install, for example, one big solution for CRM or whatever. But when you're in startup, you don't have that budget, but you have more or less the same needs. You need to control your money, you need to control your clients. So for instance, all these small companies that are starting would be immediately benefited from these kind of tools. And this gives us to the second part, how can technically we're trying to approach to this model because this is a long path, okay, we'll take the later. We're trying to switch using Microsoft technologies from a model where we develop using applications that are manually deployed to IIS or whatever, okay, and trying to switch to, it's not a microservice from way to an IPI model, okay, where every application is split into sites. The first site is the front end that is completely disconnected from the back end, okay, and the only and only point of interest is this web desktop, okay. This is a user that wants to get into the platform. They have this single sign-on point of entrance. They get into the desktop, and the desktop is getting the information from all the applications that are inside, okay, this big cluster of applications. And this is also true for mobile phones. We can extend also this model to create some sort of applications that are read from all these back end systems that we are deploying, okay. And as I said, this is something that is in our hands now because now using Microsoft technologies you can create a Kubernetes cluster in Azure. You can deploy the front end technologies and the back end technologies, split it and offer the service scaling specifically as the user needs in your own premises, in your private or your public cloud, okay. So this is, I see this and I think that it's something that is misused. This technology has a lot of power that applying the right changes or the right effort, we can create something more, okay. But the point is this is a long road, okay, and we are barely in the first step, no. We're trying to set a base development framework, okay, based on dotnet technologies because it's one of the technologies that we at Ever is use, okay. We're not only Microsoft based. We have Microsoft Oracle SAP, okay. We cover the vast variety of technologies that the market demands. But I wanted to relate in one of our bases that it was the Microsoft technologies and leverage our knowledge on it to create this, okay. So we need to set this base framework. We need to architect, define and implement this view of web desktop that you can deploy the application automatically, run them, define an app store model open to everyone so they can connect, get any application they need for this business and get it to run, okay. Create the model, the app store, feel it, that is the hard part because you need a lot of business knowledge that a lot of companies may have in the market and put it on their way, okay. So the first step, okay, how we are trying to make this first step is to create a web desktop using Microsoft technologies, okay. So we started from this point that is more or less how we used to architect solutions from Microsoft technologies, okay. We used jQuery in the front end combined with some sort of server rendering, okay. Using WCF services, okay. This sounds familiar for some of you, you know. I used to Microsoft technologies more or less, okay. And most of them were closed source, okay. It was on the Microsoft control and they, okay. We know what this means, okay. And with this development model, we found that we have several issues. For example, we found that we have performance problems for instance in the front end development point of view. Because all these problems with the VOS state, no, the state management, okay. All these implements that have the server rendering, okay. We also have problems with the maintainability, okay. With the HTML and JS hate that many of the developers demonstrated to us when we planted, we said this architecture said, I don't feel comfortable with HTML. I rather than do this in the back end, okay. We also found problems with this architecture with the user experience, okay. In the elasticity of the solutions, how we can scale or how we can give all the resources that the companies need, okay. And also from the costs, okay, from the economic point of view, the development maintenance and the hosting were not cheap, okay. And also the time to market and also the integration, okay. So we had to find a point. So what we can improve starting from where we are, how we can change all the pieces to create some sort of corporate web desktop that can start to work the path that we want to follow. So we wanted to find a super user experience. We want to offer what users are truly expecting from applications nowadays, okay. We also wanted to try to relate on open source software, replacing all the pieces that were closed or were out of maintenance and open the door to new technologies under the Microsoft Spectra, okay. We also wanted to align with the trend that Microsoft is setting now, okay. It's a new brand open source point of view. They are following now, opening the .NET Core code, actively developing it in GitHub, okay. We want to decouple also the front and the back end and we try to use metro libraries, okay. And again, we want to leverage the existing knowledge in the technologies that we have. So basically, we started replacing from the previous slide to start changing all the technologies that we have. We had, for example, we chose Angular replacing the old jQuery approach. We switched from the closed version of the .NET framework to the open version, one with .NET Core, okay. We are trying to run our business with .NET Core also. Switching also to the open versions of .NET Framework and .NET Lead Upper, okay. And if we compare with the previous one, we are moving to a more open solution rather than relying only with the closed version, okay. So getting into the technology that we chose, okay, that maybe there are several questions. So what we changed, okay, with jQuery. We found that with this technology in the presentation layer, engineers express their hate and I don't like to work with HTML and JS. I don't know if you have also this feeling in the past with you worked with this kind of technology that maybe the people you work with don't like it. No, we found, okay. So this made the engineers tend to do everything in back ends, okay. Ignoring the network for hopes, okay. And the poor user experience that it is giving, it was given to the solutions. So we switched to an appear client side rendering using Angular, okay. So we tried to have as low as the developer learning as low as possible. So now the developers really love developing the front end, okay. We found that when someone starts working with Angular at the beginning it's a bit difficult but in the middle term it's very, very positive, okay. The feedback that we have from them. So now we have a clear control, okay. A clear vision from what is front end only Angular. This is your presentation layer and you cannot develop out of it and the backend, okay. Where all the controls and all the C sharp code is running. So this give us a truly amazing user experience, okay. And also a very good performance. And then this is the second major decision that we've made over the Microsoft stack about removing completely the service side rendering, okay. The developers are not allowed anymore to do any HTML rendering in the backend, okay. Because we had serious issues with the session handling and we have very, very difficult moments handling the VOS state because this is very, very big, okay. So we made this, I think, brave decision because sometimes it's questioning why you do this, why you remove the backend rendering. So we think that this is very, very positive when you are designing a web solution or more a web desktop one, okay. To move this piece out. Then we tried to move everything from WCF that is a proprietary technology from Microsoft that is very flexible but it's also difficult to understand and it's difficult to integrate with other solutions, okay. For example, if you try to make a WCF connection to Java or PHP, it was sometimes very, very difficult. And we tried to make a simplified version of this WCF using SPNet, WebAPR and Swagger to offer to the frontend all the information that it needs. So at the end you have a frontend with a lot of HTML applications that are consuming, okay. All this information from REST APIs. At the end this is so, so much simple. At the service layer, we also removed all these applications, all these processes that is running inside the IIS, okay. The services were also a difficult piece to work with. We are very tied to the Windows infrastructure. So we switched also the services layer to .NET Core and we had also the ability to run this hour code in Red Hat, Ubuntu and Mac OS apart from Windows, okay. We are opening the hosting abilities that we have with our current existing .NET Core code. Everything that is in .NET cannot be directly migrated to .NET Core because not all the APIs from the framework are being current open source. So you have the limitation that the .NET Core is a subset of the bigger framework from Microsoft. So not all the codes can be migrated but have a majority of it, okay. In terms of data access in the bottom of the technology stack, we've worked with Microsoft technologies for long also. We will lay it first with data sets then with entity framework in this previous closed source version and now we are switching to the open version one with entity framework one core and also we are giving the developers the chance to work with this double that is an open source library from Stack Overflow that is very, very fast in read operations. So we are giving the chance to the developers to choose the right tool for the right access, data access moment, okay. Then at the level of the framework, we are removed all the old enterprise library. I don't know if even you've worked anyone with these enterprise libraries in the past, okay, from Microsoft, that Microsoft lately removed the support and stopped developing them. So we had to switch to other open source solutions to run the injection dependency and properties mapping and so on, okay. Any questions so far about the technology stack? Okay, continue. Okay, at login level also, we also relate in the past with the Microsoft Patterns and Practices login block and we made the switch to this common login solution. In the Java world it's widely known and it's quite standard nowadays. And from a hosting point of view, we relied always with the Microsoft IIS for all the applications and now we are moving to a scenario where Donut Core brings us the ability to deploy to any container solution that we have in the market. So all the problems that you may have in the past hosting applications within the IIS like we've seen, you have a problem or you have to change digital certificate from the server and all the applications stop working and so on, they are already gone because you can create packages of your application and deploy them to other systems. And I think that Docker is one of the core technologies that bring me the idea that we can create small packages like we can create small containers with our software modules with any technology and we can deploy it in a way an app store does. So I think that Docker is a starting point where the idea came in and it's the base to create this corporate desktop. And last but not least, in terms of security, we have extensively relate with Active Directory Federation Services, Windows Authentication and the Windows Entity Foundation module from Microsoft and lately we are switching to an open source solution that you can freely look at GitHub that is called Identity Server. Identity Server is a solution that follows the OpenID Connect specification. It is WS Federation compatible. It can work with all the previous scenarios you found in the enterprises. And it also has an ASAP.NET identity extension out of the box. That means that you can create any application using Microsoft Stack and connect to a central single sign-on solution that is also free for you. You don't need to pay anything to get up and running a basic solution for handling the user identifications. What I think that is especially important because it's also the point that most of the companies have found. How can I handle these scenarios where you need to make the single sign-on? Well, you need to create custom integrations to authenticate your users. I need to form facts and authentications. What can you do? You can purchase a product market that they are going to build you for the product and then any modifications on any plugins you need. Don't look at this project. You can customize it. You can be off to compliant and you can run it also inside a container. At the end, it's giving us great flexibility to work on this. At the point of the first stage of the idea, we have a very simple visual studio solution that has two clear software pieces. The front end based in HTML and JS only and the backend with .NET solutions. And a single sign-on solution that we can fully customize to any client and any needs they have. And also we can offer, for the first time in the history, deploy to any platform the clients may need in their data centers. Also important, the design of the framework allows us to change any technology. For example, if we don't want in the future to develop using Microsoft technologies, it's a piece in the architecture that we can replace. We can use Java, PHP or we can create a vast ecosystem of developers using several languages. So I think that in the near future, following this path, creating architecture that can be put inside containers that can be polished to an app store and then can be deployed to several enterprises. It's something that may be not revolutionary, but I think that this is a real need for any company to create a desktop and have the ability to download an application, automatically upload it and so on. That's all for my part. Do you have any questions regarding the idea, the concept? Are you able to show any of the front-end you've developed? Sorry? Are you able to show any of the front-end? Not at the moment, because we have not the ability right now to publish anything. Because how we are funding the idea is private funding from companies that is paying for private projects. But we hope in the soon to be able to publish something that we can share with the community. I hope and Paolo Koremi, if I'm wrong, that we may find us the way to open source these tools maybe. Right. The thing is, even as a consultancy parent, that not really have a great history of open source. But thanks to the acquisition by the ITT data, bigger consultancy and tremendous consultancy, they are really a lot in open source. They are in top-capital to Hadoop. So they are forcing Ibris to release more. In fact, next week I am meeting with the with the guy in charge of the crowd-sourcing, open-sourcing, whatever they are calling Ibris Imperial program which will pay the way to this is one of the goals for the company for the next two years. Open-sourcing and opening and having more possible by communities and making money not on the product itself but on the service around it. So they should be. But I think we can show, you can show on the screen, like something maybe the App Launcher or some application. You mean showing? Of this frame. If it works from here, do you expect it? No, I don't have I don't have the access right here because we need to VPN and everything. So at the moment I think it's not possible. I hope that soon we can start showing things in public. Are you using this approach just for Greenfield project? So have you converted any legacy, say WPF desktop apps into what this new architecture is called? We're doing one interesting project that was a big system that is making the forecast purchasing from a supermarket in Spain. And what we've basically done is removing all presentation layer and put in place a new front end. So this is a partial migration of big applications. And then we have we've been able to create WPF this web API that is posting all the legacy services and all the information that has not been modified because in terms of time and money it was not feasible to recreate everything from scratch and create this solution using this new framework. You have two scenarios basically. You can start from scratch with this amount of money if this is a critical application and you can go layer by layer replacing the technologies that is running. And did you find any holes between stuff you could do on a thick desktop application such as printing and going to a browser based approach? Did the users like the final result? Was it a success? Can you repeat on any story? Sorry, how was the transition from a desktop application to do things like printing or playing sounds to a web-based application? Did users find the transition easy? The point is that the application in this concrete case was also a web application. A very old web application that was an aisle on the company. So we've put this tool inside this desktop and started working. So for the users was really nice because as I said the experience is 10 years. In the technology world that is like 100 years for us. Any further questions? How tight is your coupling between the layers? How tight? In other words, can you use AngularJS? Yes. If tomorrow you know how it goes, you develop... Yes. The point is that all the years are very very decoupled. The only point of coupling between the presentation and the back end is the rest services. So you can easily change Angular for React for instance, if you feel more comfortable or whatever. Or even you can combine it to technologies because at the end the desktop is a framework that is rendering HTML for the user. So you can even combine these two technologies based on the real needs of the client. We're relying on Angular. We started one year and a half ago. We started with Angular 1 and 2 I think. We found that was really productive. We have very good feedback from the engineers that started or switching from the old Microsoft paradigm of MBC or Webforms to Angular. And I think that we've made in the past the right choice and we need to see now what happens if we migrate to Angular 2 or maybe change to React or Flux or whatever. This is something that we need to discuss now. My personal bet is to keep going to Angular because it gives us good results in the past. They fix one of the main problems that they had in the past was the performance. They made a big change to attack this issue that they had. So let's see what happens. We wrote it. Do you have control over the client browser you're having to deal with things like Internet Explorer 9, 10 and what testing do you use for the client side? We have to bring support to Internet Explorer because in Spain especially I'm from Valencia, the Valencia region is very Microsoft prone. They have a lot of Internet Explorer 8, 9, 10. So we are very, very tight also to the Angular version 1, 4 because we need to grant the functionality in these old browsers. At the same time we're trying to the clients to upgrade the browser because for us it's a pain because we need to create a lot of technology. We need to use Selenium and automate everything and we need to even develop patches to make all the things work fine because in Chrome everything works perfect. But when you go to Internet Explorer 8 and you saw this issue, Internet Explorer 9 or 9 or 10, I don't know the version 9. Internet Explorer 9 adds serious issues when you open a lot of async operations at the same time because it's really difficult but it's also a challenge for us. The thing with web technology sorry for stealing the science there's so many browsers I'm getting and they are releasing versions so quickly that when you develop a web application that will last longer than a couple of years you have to support 8, 10, 20 browser versions so it's difficult for corporate applications that only get maybe once or twice a year and they go two or three years without with no updates. I think that that part of the equation will be taken care by the browser developers or the web framework developers. A few years ago I worked for an optimization company and the kind of products that we developed for defense and industrial innovation lasts for 20 or 30 years. So when we developed an application in Delphi I was sure that the same binary worked flawlessly with those 25 to windows 10 same binary I said I'm going to vote over anything but it was maybe a morning four or five hour work and I had a 20 year span for that application now with web application I gave up that's when the moment I said I would rather go to the development but they started developing the application and after six months when they are still developing the application in Delphi works with the browser that used to work it's now we have a newer version of Chrome or Firefox or over have changed the rendering engine or whatever and boom everybody wanted to work with the latest Android version or iOS version or anything you are no longer in control of anything and when something breaks the user drinks you the customer drinks you that's the main problem we have with web also dependency on old products you purchase a product it only turns for A910 it's worse than that so you buy a very big product for your business or any corporate application that we mentioned before and they give you support for Internet Explorer 9 and this software should span from 10 to 15 years 20 years and you are blocked to this version of the browser and it's very very difficult to handle the situations but also the web solution also give us the ability to automate all the deployment pipeline and start replacing versions and it's very very very dynamic for us any question I think we have 3 minutes also is that all thank you also you have any interest or you want to share your thoughts with me about what I said feel free to email me with me whatever and we can further discuss this, thank you