9/12/18

This week's Wednesday Evening Training: a good old "klusavond" on IoT, 3D modelling and more…

In this week's Wednesday Evening Training we continued our individual projects on IoT, 3D modelling and more… On such evenings, things can be quiet (only typing noise) and lively in the same evening.



So what have we done?

Luc showed us progress on his Domoticz IoT project in which he was testing and optimizing connectivity in his "pool temperature measurement and adjustment project". He's promised us an intro on the Domoticz platform shortly. Quincy and I were propering next week's Wednesday Evening Training on WebGL, BabylonJS and 3d/game engines. There is really a LOT to demonstrate, explain and play with. For next week, we've determined the basic topics, selected examples and created some handson labs. Next week we will see how far we will come. In the tradition of the Wednesday Evening Training, we shift what we do not finish to the next week. It was instructive and fun!




Further reading

Do you want to read more on the topics in this post? Here are some links…

Domoticz: https://www.domoticz.com
BabylonJS: https://www.babylonjs.com
WebGL: https://en.wikipedia.org/wiki/WebGL 
OpenGL: https://en.wikipedia.org/wiki/OpenGL

Past Wednesday Evening Trainings

You 'll find post of previous sessions here: https://www.linkedin.com/search/results/content/?keywords=%23wednesdayeveningtraining

Next week 's Wednesday Evening Training

Next week, we'll have the intro on WebGL, BabylonJS and 3d/game engines. Worth mentioning: on October 3rd the Wednesday Evening Training "How to become a hacker! Introduction to security & handson hacking, part 2" will be open for visitors as well. See https://www.werkenbijcapgemini.nl/events/How-to-become-a-hacker if you want to read more and sign up for the event.

Last week's Wednesday Evening Training: Living documentation, automatic unit tests and top quality software with SpecFlow

In last week's Wednesday Evening Training one of our Microsoft leads, Bart Roozendaal, gave us a nice and practical introduction on SpecFlow. Specflow is the Cucumber counterpart on the .NET plaform. You can use natural language to make unambiguous functional specification and at the same time generate unit tests to test your code against it. Using this, the quality of unit tests do not solely dependent on developers, but also on other stakeholders. This can greatly improve quality.


So what have we done?

Bart demonstrated us SpecFlow using Conway's Game of Life program and gave us the opportunity to try ourselves in a handson lab. Also, there was a lot of room for Q&A and discussion. Thanks Bart, for sharing your knowledge with us!


Further reading

Do you want to read more on the topics in this post? Here are some links…

SpecFlow: http://www.specflow.org
Have your business analyst write unit tests (a nice article from Bart on unit testing and SpecFlow): www.capgemini.com/2018/08/have-your-business-analyst-write-unit-tests
Conway's Game of Life program: https://nl.wikipedia.org/wiki/Game_of_Life

Past Wednesday Evening Trainings

You 'll find post of previous sessions here: https://www.linkedin.com/search/results/content/?keywords=%23wednesdayeveningtraining

Next week 's Wednesday Evening Training

Next week, we'll have a good old "klusavond" in which we'll work on our IoT, 3D and other projects.

9/6/18

(October 3rd 2018, Wednesday Evening Training) How to become a hacker! An introduction to security & hands on hacking

Have you ever thought of becoming a hacker? Or to find out how hackers manage to break into systems and/or web applications?
Are you an IT specialist with a few years of working experience? Do you have programming knowledge and are you interested in security?

Join us on the 3rd of October in our Wednesday Evening Training to learn some hacking foundations and become familiar with some security best-practices. We will build use together our own hacking labs using running on virtual machines and get our hands dirty with some of the most used hacking tools & techniques.

Impression of our previous Wednesday Evening Training on hacking. See https://www.linkedin.com/feed/update/urn:li:activity:6438193513657094144

Preparation

All participants will receive the instructions to install VirtualBox and to download the virtual machines that are going to be used during the workshop.
Please make sure you bring your own laptop!

Agenda

17.30 – 18.30 Walk-in with dinner & food
18.30 – 18.45 Welcome by to Capgemini by Hans van Rijs
18.45 – 20.00 Multiple session “How to become a hacker!” workshops by Vincenzo Corona
21.00 Closing, networking & drinks

Location

Capgemini Nederland B.V. Reykjavikplein 1– 3500 GN Utrecht

Register

Read more and register to this event: https://www.werkenbijcapgemini.nl/events/How-to-become-a-hacker


9/5/18

3 oktober 2018 - Microsoft Ignite 2018 Recap

Wil je alles weten over Microsoft Ignite, de laatste insights & skills op het gebied van cloud, data, business intelligence, teamwork en productiviteit? Kom dan op 3 oktober naar ons Microsoft Ignite 2018 Recap event.

https://www.werkenbijcapgemini.nl/events/Microsoft-Ignite-2018-Recap

#werkenbijcapgemini #capgemini #lifeatcapgemini #microsoft #ignite #microsoftignite

8/30/18

This week's Wednesday Evening Training: Quantum Computers are coming!

Could you imagine? You solve problems with a speed of light. What a classical computer takes 1000 years to complete, you can achieve in just 100 milliseconds. You can find a needle in a haystack in 1 nanosecond. You can simulate molecule structures as if they are real. You can send data with the speed of light. That is now possible with Quantum computing.



So what are Quantum computers?

A very very very short introduction on Quantum computers As progress on processing speed and miniaturization continues, we stuble on the phycical limits of modern binary digital electronic computers based on transistors. Using quantum physics, however, we can increase processing speed drastically. In digital computing data is encoded into binary digits (bits), each of which is always in one of two definite states (0 or 1). A quantum computer works with particles that can be in superposition. Quantum computers use Quantum Bits or Qubits, which can take on the value 0, or 1, or both simultaneously. This drastically speeds up processing. This, however, also poses other challenges.

For quantum computers to work, you'll need them to work in a supercooled condition. Also, calculation results may not be accurate. You'll need software to determine whether the result is correct.

Are there any Quantum Computers available yet? 

Yes... there are... but they are experimental and you can't yet buy them in the store nor can you online. IBM, Microsoft, Google, Apple and other companies are already building devices (see the resources below). At this moment, you can use online simulators to experiment with. Also see the resources below for a few examples.

What can we use Quantum computers for? 

In short: Quantum computers are not suitable for running all programs. But for very intensive applications such as simulations, processing huge amounts of data and artificial intelligence they can be very useful. Future will tell! Well, that's all in a nutshell. You'll find some excellent and comprehensible explanations in the resources mentioned below as well.


Back to this evening's training...

This Wednesday Evening Training, we got a nice introduction on Quantum Computers and Microsoft's Quantum Software Development Kit. One of our Quantum Computer experts, Ilyas Sener, explained us the physics, gave us a nice demo of a Quantum computer simulation and did a code walkthrough of a Q# software solution (using Microsoft's Quantum Software Development Kit and Visual Studio 2017). The Q# Programming Language Q# (Q-sharp) is a domain-specific programming language used for expressing quantum algorithms. It is to be used for writing sub-programs that execute on an adjunct quantum processor, under the control of a classical host program and computer.

Interesting stuff, but obviously we need more Wednesday Evening Trainings to understand the concepts and devise practical applications. And that's what the Wednesday Evening Trainings are all about: playing, learning & sharing knowledge!

We also welcomed our colleague from UWV, Robert Mast, one of their top .NET software engineers. Surely we'll be seeing you next session on Quantum Computers Robert!


Further reading

Do you want to read more on the topics in this post? Here are some links…

On the basics of quantum physics:
Quantum Computing Expert Explains One Concept in 5 Levels of Difficulty (an excellent way to start!): https://www.youtube.com/watch?v=OWJCfOvochA
Qubit (the basic unit of quantum information): https://en.wikipedia.org/wiki/Qubit
Quantum information (information that is held in the state of a quantum system): https://en.wikipedia.org/wiki/Quantum_information
Quantum system: https://en.wikipedia.org/wiki/Quantum_system
Quantum mechanics: https://en.wikipedia.org/wiki/Quantum_mechanics
Quantum Computing Primer: https://www.dwavesys.com/tutorials/background-reading-series/quantum-computing-primer
Quantum Computing basics: What is Quantum Computing?: https://www.microsoft.com/en-us/quantum/what-is-quantum-computing
Quantum Computing Technology: https://www.microsoft.com/en-us/quantum/technology

On quantum computer hardware:
IBM Q initiative to build commercially available universal quantum computers: https://www.research.ibm.com/ibm-q
Introduction to the D-Wave Quantum Hardware: https://www.dwavesys.com/tutorials/background-reading-series/introduction-d-wave-quantum-hardware
Software Architecture & environment: https://www.dwavesys.com/software

On quantum computer simulators:
IBM: https://quantumexperience.ng.bluemix.net/qx/editor
The QX Simulator: http://quantum-studio.net
Ready-to-use Linux Ubuntu Virtual Machine with QX installed: http://quantum-studio.net/#download_vm
Quantum Computing Playground: http://www.quantumplayground.net
QCEngine - active QC simulator: http://machinelevel.com/qc/
List of Quantum computer simulators: https://quantiki.org/wiki/list-qc-simulators
Another list of Quantum computer simulators: http://www.vcpc.univie.ac.at/~ian/hotlist/qc/simulation.shtml
Quantum computer simulator: https://qcsimulator.github.io/

On quantum computer software:
Microsoft Quantum Development Kit: https://www.microsoft.com/en-us/quantum/development-kit and https://docs.microsoft.com/en-us/quantum/?view=qsharp-preview
The Q# Programming Language: https://docs.microsoft.com/en-us/quantum/quantum-qr-intro?view=qsharp-preview
Download Quantum Studio: http://quantum-studio.net/#download_qs

Other resources:
Microsoft's Quantum Computing portal: https://www.microsoft.com/en-us/quantum
Microsoft's Quantum Computing, technologies (Physics, Materials, Devices, Control, Runtime): https://www.microsoft.com/en-us/quantum/technology
IBM Q Experience! Guides, demo's etc.: https://quantumexperience.ng.bluemix.net/qx/experience
Microsoft Quantum: https://www.microsoft.com/en-us/quantum
Microsoft Research on Quantum Computing: https://www.microsoft.com/en-us/research/lab/quantum/
Hello Quantum - Explore the building blocks of quantum mechanics through puzzles: http://helloquantum.mybluemix.net

Past Wednesday Evening Trainings

You 'll find post of previous sessions here: https://www.linkedin.com/search/results/content/?keywords=%23wednesdayeveningtraining

Next week 's Wednesday Evening Training

In next week's Wednesday Evening Training, we’ll give a 100-level introduction to Specflow, the Cucumber counterpart on the .NET plaform. We’ll show how you can use natural language to make unambiguous functional specification and at the same time generate unit tests to test your code against it.

#wednesdayeveningtraining #capgemini #lifeatcapgemini #quantumcomputing #qsharp

8/23/18

This week's Wednesday Evening Training: How to become a hacker! Introduction to (a bit of) security & hands-on hacking

This week's Wedneday Evening Training: How to become a hacker! Introduction to security & handson hacking

Have you ever thought of becoming a hacker? Or to find out how hackers manage to break into systems and/or web applications? This evening we got an excellent opportunity to experience this. One of our security experts, Vincenzo Corona, gave us a workshop to learn some hacking foundations and become familiar with some security best-practices.


So why hacking?

Security of information systems has always been an important topic. In the last decade, however, it even got more important. Since we seem to connect about anything to the internet (the web infrastructure is expanding rapidly) there are much more opportunities for hackers to take advantage of. Moreover: we get increasingly dependent to the internet in our daily life. So the business case for hackers is getting better every day. The more reason to give increasingly more attention to security.

And what better way for architects, sysops and software engineers is there than to learn to think like a hacker?

That is just what we did in this evening's training...

The best way to learn  is to get your hands dirty (figuratively speaking then). We built our own hacking lab using virtual machines and got our hands dirty with some of the most used hacking tools. Step by step we learned how to analyze the vulnerabilities of a target machine, to find and apply various hacking tools and methods and finally seizing complete control over the machine (root control). And this is exactly the way hackers work! It is amazing how much information you can get from a running machine! Even tiny bits of information can give you clues on weak points.
During the training we got plenty of opportunity to ask all kinds of questions on the operating system, working of webserver platforms and networks.


We are very enthusiastic on the way this workshop went. We wil definitely organize additional workshops in which we will explore more advances hacking scenario's. There are plenty of idea's for that, e.g. hacking an IoT infrastructure (in other Wednesday Evening Trainings we are already experimenting a lot with devices like the Raspberry Pi, Arduino and WittyCloud). We will also be paying attention to the countermeasures, both on infra / configuration and software engineering. There are many measures you can take to secure platforms and applications (safe and secure programming). It is a continuous battle, and that is why it is all the more important to keep up.

Thanks Vincenzo, for sharing your knowledge with us! And we look forward to the next sessions!

Resources

No, I'm not going to share links to hacking tools :)

Instead, I'll give you a link to the OWASP site: https://www.owasp.org
OWASP is an open community dedicated to enabling organizations to conceive, develop, acquire, operate, and maintain applications that can be trusted. All of the OWASP tools, documents, forums, and chapters are free and open to anyone interested in improving application security. We advocate approaching application security as a people, process, and technology problem because the most effective approaches to application security include improvements in all of these areas.
What you will find on their site is, among many other topics, are:

  • Common types of application security attacks
  • Guides, e.g. OWASP Guide to Building Secure Web Applications and Web Services, a Testing Guide
  • Articles specifically about performing security penetration testing on web applications and web services

A site well worth to visit!

To get started, you'll also need a virtual machine. You can download one at https://www.virtualbox.org/.
VirtualBox is a powerful x86 and AMD64/Intel64 virtualization product for enterprise as well as home use. Not only is VirtualBox an extremely feature rich, high performance product for enterprise customers, it is also the only professional solution that is freely available as Open Source Software under the terms of the GNU General Public License (GPL) version 2. See "About VirtualBox" for an introduction.

Past Wednesday Evening Trainings

You'll find post of previous sessions here: https://www.linkedin.com/search/results/content/?keywords=%23wednesdayeveningtraining

If you wonder what happened with last week's Wednesday Evening Training: it just went on. In our CoZone our Wednesday Evening Training community had a "klusavond" on various topics. I, however, had a workshop abroad in the German Harz on gastronomy.


Next week's Wednesday Evening Training

Next Wednesday Evening Training, we'll have an introduction to Quantum computing and we'll experiment with the Microsoft Quantum Software Development Kit (Q language). Can you imagine? Solving problems with a speed of light?


#wednesdayeveningtraining #capgemini #werkenbijcapgemini #lifeatcapgemini #security #hacking

8/9/18

This week's Wednesday Evening Training: Microservices architecture and implementation in Java

A bit of architecture and a lot of code this week's Wednesday Evening Training. Together with Bart van Beek, one of our expert Java software engineers, I gave explanation on the architecture, design and engineering of a Microservices architecture.


So what is this "Microservices" architecture?

Let me give you a very, very, very short introduction. See the links in the bottom of this article for further reading & coding.

Since the creation of the first applications, we've continously been attempting to divide an application in manageable parts, so that we could design, develop, deploy and manage applications more effectively and efficiently. This is crucial because solutions nowadays more resembles a continuously changing eco system, rather than a stable and easily manageable one-piece software. Web services have made it possible to connect full applications over the internet in a standardized way, Microservices take this a step further. Microservices are deployed as a light weight, but fully functional applications with very limited functionality. Connected, they form fully functional capabilities (ready to use functionality and data) of which the parts can be changed, deploy and managed independently of each other. This enables continuously changing and deploying sofware parts by independend teams, in different technologies (e.g. Java, .NET) and scaling more easily by deploying the parts on different locations. Using virtual infrastructure and containers (e.g. Docker) you will be able to scale in and out very fast so that you can tune your software infrastructure neatly to what you need at a particular moment.

This drastic increase in flexibility comes with it's price: you will need to put more effort in implementing functionality like communication, coordination, orchestration, monitoring and exception handling that is normally handled in application and integration platforms. Also, engineers need also to be proficient with infrastructure and business processes, instead of just one programming language and related tools.

Therefore, it is increasingly important to follow patterns (standardized solutions). Luckily, there are a lot of patterns available. See the links in the bottom of this article for some of the resources on patterns.


Back to this evening's training...

After my introduction on Microservices architectures and related patterns, Bart gave us a demo and code walkthrough of a Java based Microservices implementation. We could experiment with the example implementation he provided and learned a lot of this. On the internet, we also found a reference implementation of a (Microsoft) Azure reference implementation. In a follow up we'll do a walkthrough of this implementaion as well, and also create a prototype solution in which we'll implement a Microservices solution using both Java and Microsoft technologies. To be continued...

One of the nice things of the Wednesday Evening Training is that we can decide on the spot which technology to discuss. So an evening that is originally focussed on a particular technology can suddenly be enriched with a completely different topic. One of our colleagues, Quincy Jacobs, had dived into OpenGL. OpenGL is closely related to BabylonJS which can be used combined with Unity3D, on which we already had some workshops. On the spot, we decided to plan an wednesday evening combining these topics, combining explanation on the underlying (3d) concepts and experimenting combining the technologies. Also to be continued...


Further reading

Do you want to read more on the topics in this post? Here are some links...

Introductions:
Microservices: https://en.wikipedia.org/wiki/Microservices
Service Oriented architecture: https://en.wikipedia.org/wiki/Service-oriented_architecture
Microservices vs SOA: https://www.bmc.com/blogs/microservices-vs-soa-whats-difference/
Microservices, a definition of this new architectural term: https://martinfowler.com/articles/microservices.html
Why a microservices approach to building applications? (giving an approach to designing and implementation) https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-overview-microservices
Designing, building, and operating microservices on Azure: https://docs.microsoft.com/en-us/azure/architecture/microservices/

Patterns:
Microservice patterns (explanation and patterns): http://www.microservicepatterns.org/
Cloud patterns (explanation and patterns): http://cloudpatterns.org/

Lots of info on patterns on Wikipedia as well...

Example code:
https://github.com/mspnp/microservices-reference-implementation

By the way: in https://github.com/mspnp (Microsoft patterns & practices on GitHub) you'll find lot's of interesting example code on patterns. Well worth visiting!

Past Wednesday Evening Trainings

You'll find post of previous sessions here: https://www.linkedin.com/search/results/content/?keywords=%23wednesdayeveningtraining

Next Wednesday Evening Training

Next Wednesday Evening Training, we'll have a "klusavond" in which we'll work on our projects. In the photo below, you'll see Aish already busy preparing the hardware :).



#capgemini #werkenbijcapgemini #lifeatcapgemini #wednesdayeveningtraining #microservices #microsoft #java