10/30/18

BabylonJS applied | Model Train Simulator

Some nice examples of BabylonJS applications. Who doesn't like model trains anyway? :)





You'll find the project and demo's over here:

The project site (by Quintus Hegie): https://quintushegie.com/gardentrains/

We'll be organizing more workshops on BabylonJS in our Wednesday Evening Trainings!

This is great techology and a lot of fun programming! We've already had sessions on BabylonJS (and OpenGL and Unity3D) in our Wednesday Evening Trainings, and we'll definitely continue!

You 'll find post of previous WET sessions here: https://www.linkedin.com/search/results/content/?keywords=%23wednesdayeveningtraining, and more posts on BabylonJS here: http://hansrontheweb.blogspot.com/search/label/babylonjs

10/18/18

This week's Wednesday Evening Training: Progressive Web Apps (PWA) and an intermezzo on cryptography

In this week's Wednesday Evening Training we had a great intro on Progressive Web Apps (PWA) by one of our front end engineers Olaf van Venetie and I. As an intermezzo, Bart van Beek gave an excellent intro and Q&A on cryptography.





Progressive Web Apps (PWA's): what's the buzz?

Progressive Web Apps is a hot topic in the world of web development and its only growing further in popularity. It is a relatively new way to develop applications for the mobile phone, combining the best of the web and apps. 
This Wednesday Evening Training we covered the benefits using a PWA instead of traditional hybrid/native solutions, the basics and possibilities of a PWA. A PWA is actually just a basic web site that behaves like an App. Functionality like push notifications, offline usage, background processing (data loading from external resources, using Service Workers) can be implemented quite easily. We showed some neat examples of PWA's and we did a code walk through of a basic example (see the resources below). 







You can get started programming PWA's quick easily with the handson labs that Google provides. And that is just what we did during this evening.

In further sessions we can dive into more specific topics within the world of Progressive Web Apps, for example push notifications, background refresh, Service Workers and local storage.


An intermezzo on cryptography
Bart van Beek explained us the basics of cryptography, describing hashing strategies and answering questions from colleagues.




There definitely will be a sequel!
We are very enthusiastic on the PWA concept and it's potential to stirr the app development community. In upcoming Wednesday Evening Trainings we will take a deep dive in PWA related topics: notifications, service workers, local storage and combinations with other technologies like Web Assembly and frameworks like Angular. Also, we planned to take a security view on PWA's, what are the risks and how can we cope with these?
Also on cryptography, we'll will certainly discuss more cryptography topics in next Wednesday Evening Trainings.




Further reading

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

On Progressive Web Apps:

All you need to know about Progressive Web Apps: https://www.youtube.com/watch?v=0OJ24kCV-J8
Progressive Web Apps - Checklist: https://developers.google.com/web/progressive-web-apps/checklist

Desktop Progressive Web Apps: https://developers.google.com/web/progressive-web-apps/desktop
What Web Can Do Today - Can I rely on the Web Platform features to build my app? An overview of the device integration HTML5 API's: https://whatwebcando.today
PWA Rocks (PWA demo’s and example apps): https://pwa.rocks

Build a PWA yourself? Here are a neat lab that we used in our training:
Your First Progressive Web App: https://developers.google.com/web/fundamentals/codelabs/your-first-pwapp

On cryptography: 

Online examples of encrypting with well known standards: https://cryptii.com


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,  Aishwarya Dhall will give a workshop on the basics of Arduino's (IoT) development.

10/12/18

It's a Giant LED Cube!


It's a Giant LED Cube!

#wednesdayeveningtraining

(don't forget to put on your sunglasses)






This week's Wednesday Evening Training: a "klusavond" on a giant Arduino driven LED cube, a lot of sensors and generating 3D Archimate models

In this week's Wednesday Evening Training we had some great demo's and discussions on our individual projects on IoT and 3D modelling.





A lot of IoT

Aish showed us her giant LED cube (10x10x10 LED's, that's a lot of soldering!) and explained to us how she managed to build and run it. We discussed powering such a large collection of LED's and how the software was designed. Such a bug LED cube offers plenty of applications, including running 3D animations and games within the cube. We've started building a graphics library for basic LED handling that is going to be a great help in building such applications.

Aish also showed us her multi sensor project; a test platform on which all sorts of sensors are installed. We discusses the various sensor types, how to connect and use them and how (combined) measurements can best be done. Interesting stuff! One of the topics we also discussed is the way which the sensors are read in the software. That can be done in a loop but also using interrupts (low level event handlers). The latter method is faster, less error prone and cleaner. We'll be investigating this technique in the upcoming Wednesday Evening Training IoT sessions.







Archimate architecture models in BabylonJS 3D

This week's session, I gave give a demo of my BabylonJS prototype in which an Archimate model view (using the free Archi editor) is converted into a BabylonJS 3D model. For complex architectures, 3D modelling may give more insight than plain 2D models. Worth doing some experiments to see whether this is a good approach. The Technical Proof of Concept is running great. It uses MySQL as a central database and a simple website with some Web Workers to gather model data, generating and continuously updating a JavaScript Archimate model and a derived Babylon 3D model from this in the background. Our colleague Fred van Nimwegen also joined my project and he had experimented with Neo4j in which he stored the Archimate model.  Neo4j is a graph database (while MySQL is a relational database). Graph databases have some advantages over relational databases, mainly when querying data collections that naturally resemble networks. And that is exactly what an architectural model resembles: a network of related nodes. Moreover: modern architectures are getting more dynamic and will change over time more rapidly. When analyzing an architecture model to answer architectural questions like "what will happen when I change this?", an efficient query language and dito database are very convenient. We've planned a Wednesday Evening Training session on Graph databases and Neo4j in november. Fred will then share his knowledge gained with us.





Further reading

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

Considering building your own LED cube? Start simple with a 4x4x4 cube (still 64 LEDS, but at least you won't be needing a nuclear plant to power it): https://www.instructables.com/id/4x4x4-LED-Cube-Arduino-Uno/
BabylonJS: https://www.babylonjs.com
Archi: https://www.archimatetool.com
Archimate tool database plugin: https://github.com/archi-contribs/database-plugin
Neo4j: https://en.wikipedia.org/wiki/Neo4j


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 Progressive Web Apps (PWA)This a hot topic in the world of web development and its only growing further in popularity. It is a relatively new way to develop applications for the mobile phone, combining the best of the web and apps. We will cover benefits using a PWA instead of traditional hybrid/native solutions, the basics and possibilities of a PWA, show some examples in functionality and give an example of how you can get started building your own PWA’s quickly. Yes, there will also be a handson lab. In later sessions we expect to cover topics like push notifications, background refresh, et cetera. 

10/4/18

In this week's Wednesday Evening Training: How to become a hacker! An introduction to security & hands on hacking (part II)

Have you ever thought of becoming a hacker? Or to find out how hackers manage to break into systems and/or web applications? As a software engineer, you should know. How else will you be able to write code that is SAFE enough to withstand hackers? Also sysops should be aware; there are plenty of holes in your platforms and unless you start thinking like a hacker, you will not be able to find them (in time).


Security: even more important than it used to be

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 fast. Also, the way applications and devices are connected with each other constantly changes. That is because the devices and applications we use enable us to work almost anytime, anywhere and with multiple devices and applications (even at the same time). So in an ICT architecture, the amount of "borders" that we need to control and secure are expanding rapidly and these borders are constantly changing during customer journeys. It has become a dynamic ecosystem of devices, connections, applications, data streams and people.

This ecosystem gives plenty of opportunity for hackers to take advantage of. Moreover: we get increasingly dependent to the internet in our daily work and life. 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?

Yesterday, in our Wednesday Evening Training one of our security experts, Vincenzo Corona, taught us more on hacking foundations and we became a bit more familiar with security best-practices. Like in the previous hacking session in the Wednesday Evening Training, we built our own hacking labs on virtual machines and got our hands dirty with some of the most popular hacking tools & techniques.


What we did in this evening's training...

Like a hacker, we analyzed the vulnerabilities of a target machine and step by step, we collection little pieces of information to gain access. Amazing to see how small sloppiness in the configuration and programming of a system can provide enough information to break in and thus gain complete control over a system. Even tiny bits of information can give you clues on weak points.

Due to the badly updated web platform we were able to create a connection to the target server and pass simple commands to it. Gradually we were able to increase our privileges so that we eventually were able to access the database and could download credit card data. These were obviously encrypted but this security could also be broken.
This was, of course, a lab not reality. But this lab was based on an actual hack that took place some years ago and therefore, very realistic and instructive.

During the training we got plenty of opportunity to ask all kinds of questions on the operating system, working of web server platforms and networks.

Thanks Vince, for sharing your knowledge and experience with us!

We will definitely organize additional Wednesday Evening Training sessions on this topic.
After completing the labs, we did a quick inventory to see which topics we would like to discuss on next occasions. 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), hacking an Android device, a good old pc game (setting the highscore! :) ), taking countermeasures, studying pitfalls in programming (that cause security issues), etc..

Security is a continuous battle, and that is why it is all the more important to keep up.

There will be additional documentation available and for those colleagues that were not able to complete the labs this week and in next week's Wednesday Evening Training ( a good old Dutch "klusavond") we'll have plenty of time for this.


Resources

No, again 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.

To get started, you'll also need a virtual machine. You can download one at https://www.virtualbox.org/.

Follow us on LinkedIn

You'll find post of previous sessions here: https://www.linkedin.com/search/results/content/?keywords=%23wednesdayeveningtraining. You can follow us on LinkedIn by clicking on the "Follow" button.


Next week's Wednesday Evening Training

In next Wednesday Evening Training, we'll have a "klusavond" in which we'll continue on security and aditionally, Aish will demo an Arduino based LED cube and I'll give a demo and code walkthrough of my pet project: generating a 3D view on an Archimate architecture model created with Archi (a free architecture editor).


Wednesday Evening Trainings open for guests

Some of the Wednesday Evening Trainings will be open for guests. Just send me an email if you are interested.