4/13/19

Week #15's Wednesday Evening Training: Whack-a-LED!

In this week's Wednesday Evening Training, we had a great Arduino Micro controller lab: "Whack-a-LED!"

One of our Arduino champions, Aishwarya Dhall, prepared a nice little game implemented using the Arduino Micro Controller. The game is based on the well known game "Whac-A-Mole".



Using 4 push buttons, 4 LED's and a little Arduino program, the game is implemented. The LED's are lit one at a time in random order. The player must hit the corresponding button in time to proceed with the game and gain points. This requires a timer and some interrupts.

Nice lab to get started using the Arduino!



There was a special welcome to the students of the Hogeschool Utrecht who we assisted programming a LED panel with the Arduino.



Of course, there was also plenty of opportunity for other projects & topics. Even the first ever photograph of a black hole was discussed. That's agile learning ;) !

Thanks Aish and others for sharing your knowledge with us! That's all in the game in the Wednesday Evening Training!


Next Wednesday Evening Training...

Next Wednesday Evening Training, we'll continue our architecture series with modelling architecture patterns in Archimate and an introduction in Archi, a free Archimate editor. We'll also discuss proceedings on

Further study

Do you want to read more on the topics in this post or play around with the technology? Here are some links…

On the Whac-A-Mole game:
Whac-A-Mole: https://en.wikipedia.org/wiki/Whac-A-Mole

On Arduino:
Arduino Interrupts Tutorial (explanations, 2 demo's/labs): https://www.youtube.com/watch?v=QtyOiTw0oQc
My YouTube playlist on YouTube: https://www.youtube.com/playlist?list=PLSiMhBs48YvV86iiXFJY-BRxOsP2A2pnH
10 Awesome Beginner Arduino Projects: https://create.arduino.cc/projecthub/RoyTobby/10-awesome-beginner-arduino-projects-78a6a6
Arduino project - Adaptive LED Morse Code Decoder and Timer Interrupt: https://create.arduino.cc/projecthub/shjin/adaptive-led-morse-code-decoder-and-timer-interrupt-8d18a7
Arduino - Multitasking (e.g. interrupts): https://learn.adafruit.com/multi-tasking-the-arduino-part-2/overview
Arduino Interrupts: https://www.instructables.com/id/Arduino-Interrupts
Arduino Playgrounds - Interrupts: http://playground.arduino.cc/code/interrupts

On Fritzing:
Fritzing official site: http://fritzing.org/home
A quick overview on Fritzing: https://www.slideshare.net/HansRontheWeb/fritzing-breadboard-editor

Week #14's Wednesday Evening Training: A good old Micro controller klusavond

In this week's Wednesday Evening Training, we had a good old "klusavond" (Dutch for "a pleasant and educational evening in which we worked on our own projects and shared knowledge") on Micro controllers.

We gave some demo's on the proceedings on our projects, discussed the usage of sensors and I gave a short intro on Fritzing. Fritzing is a nice and free CAD application that can be used to design breadboard circuits for Arduino and Raspberry Pi. It's easy to use and I often use it to create illustrations for manuals for Arduino and Raspberry Pi labs.



Next Wednesday Evening Training...

Next Wednesday Evening Training, we'll continue our experiments with Micro controllers with a special lab: "Whack a LED!" using the Arduino Micro controller. Make sure to follow my posts!

Further study

Do you want to read more on the topics in this post or play around with the technology? Here are some links…

On Arduino:
Arduino Interrupts Tutorial (explanations, 2 demo's/labs): https://www.youtube.com/watch?v=QtyOiTw0oQc
My YouTube playlist on YouTube: https://www.youtube.com/playlist?list=PLSiMhBs48YvV86iiXFJY-BRxOsP2A2pnH
10 Awesome Beginner Arduino Projects: https://create.arduino.cc/projecthub/RoyTobby/10-awesome-beginner-arduino-projects-78a6a6
Arduino project - Adaptive LED Morse Code Decoder and Timer Interrupt: https://create.arduino.cc/projecthub/shjin/adaptive-led-morse-code-decoder-and-timer-interrupt-8d18a7
Arduino - Multitasking (e.g. interrupts): https://learn.adafruit.com/multi-tasking-the-arduino-part-2/overview
Arduino Interrupts: https://www.instructables.com/id/Arduino-Interrupts
Arduino Playgrounds - Interrupts: http://playground.arduino.cc/code/interrupts

On the Raspberry Pi:
Raspberry Pi: https://en.wikipedia.org/wiki/Raspberry_Pi
Raspberry Pi (official site): https://www.raspberrypi.org
Comparison of single-board computers: https://en.wikipedia.org/wiki/Comparison_of_single-board_computers

On Fritzing:
Fritzing official site: http://fritzing.org/home
A quick overview on Fritzing: https://www.slideshare.net/HansRontheWeb/fritzing-breadboard-editor

Past Wednesday Evening Trainings on all topics

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

Work @Capgemini?

Do you want to join us? We're always looking for and well-motivated young professionals. Do you have a bachelor or master degree or extensive practical experience? Or do you have a relevant ICT / Informatics training and you have become curious about us? Please send me an mail. Working for us gives you access to all Wednesday Evening Trainings!

Week #13's Wednesday Evening Training: Keeping up architecture with Neo4J graph database

In this week's Wednesday Evening Training, Fred van Nimwegen and I gave an introduction to graph-oriented databases, and Neo4j in particular. Also, we gave an update on our proceedings in using databases to store and query architecture models.

So what is a graph database? And what is Neo4j?

A graph database is a type of NoSQL database that uses graph theory to store, map and query relationships. This is essentially a collection of nodes and edges. Each node represents an entity and each edge represents a connection or relationship between two nodes. Graph databases are very well suited for analyzing networks, e.g. to mine data from social media.

Read my introduction on Neo4j here: Dealing with architecture models and views using graph databases like Neo4j



Back to our Wednesday Evening Training...

This evening, Fred explained us the basics of graph databases, and us how to query networks using the Cypher Query Language. He also showed us prototypes of extensive Archimate models generated using Neo4j. Using Neo4j and three.js (JavaScript library) 3D views of architecture models (networks) were displayed and filtered, showing all kinds of relations between architecture elements. Quite a useful way of gaining insight in a complex architecture!

Of course there was plenty of opportunity for experimenting. We did some handson labs and did walk throughs of some examples and demo's. You can find these in the resources mentioned below.

We'll continue our research on architecture modeling using Neo4j for sure and in upcoming Wednesday Evening Trainings we'll update our community on our proceedings.




Next Wednesday Evening Training on Neo4j

In our Wednesday Evening Training of April 17th, we will give a workshop on Modeling patterns & solutions in Archimate using Archi. We'll also give an update on how to use Neo4j with Archimate, Archi & architecture models. Yes, we'll continue experimenting with this great platform!

Further study

Do you want to read more on the topics in this post or play around with the technology? Here are some links…

On Graph databases:
What is a Graph Database? https://neo4j.com/developer/graph-database
Graph Databases for Beginners: Why Graph Technology Is the Future: https://neo4j.com/blog/why-graph-databases-are-the-future
Graph database: https://en.wikipedia.org/wiki/Graph_database
Instructive video's on Graph Databases: https://www.youtube.com/playlist?list=PLSiMhBs48YvXpvmWiUNeThqxOikTH1Zy4

On Neo4j:
Neo4j (GitHub repo): https://github.com/neo4j/neo4j
Neo4j homepage: https://neo4j.com/
Cypher Query Language: https://neo4j.com/developer/cypher-query-language/
Fred's GitHub repo (explanation, examples, in Dutch): https://gitlab.com/fredvn-woensdagavond/neo4j-2018-12
Learn Cypher in minutes: https://learnxinyminutes.com/docs/cypher
Neo4j Sandbox (handson labs, built-in guides and sample datasets for popular use cases): https://neo4j.com/sandbox-v2

Examples:
The Graph of Thrones [Season 7 Contest]: https://neo4j.com/blog/graph-of-thrones/
Dataset: Movie Database: https://neo4j.com/developer/movie-database/#_the_dataset
Exploring a UK Open Government Dataset with Neo4j: https://leanjavaengineering.wordpress.com/2015/04/10/exploring-a-uk-open-government-dataset-with-neo4j

On related topics:
4+1 architectural view model: https://en.wikipedia.org/wiki/4%2B1_architectural_view_model
Database export/import plugin that store Archi models in a central database repository: https://github.com/archi-contribs/database-plugin
threejs (cross-browser JavaScript library and Application Programming Interface (API) used to create and display animated 3D computer graphics): https://threejs.org/

Past Wednesday Evening Trainings on all topics

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

Work @Capgemini?

Do you want to join us? We're always looking for and well-motivated young professionals. Do you have a bachelor or master degree or extensive practical experience? Or do you have a relevant ICT / Informatics training and you have become curious about us? Please send me an mail. Working for us gives you access to all Wednesday Evening Trainings!


4/12/19

Dealing with architecture models and views using graph databases like Neo4j

(I'll be updating this intro with additional explanations & insights, so check this post regularly)

In my work as an architect I'm dealing with quite large architectures, modeling them in Archimate and UML. Having an architecture model is only step 1, using it in an effective way is really important and is gives much more challenges. Usually, a collection of usefull architecture views are defined to illustrate the architecture from the point of view of the stakeholders. The Archimate standard provides a set of views and the 4+1 architectural view model as well. But when architectures are getting more extensive and more dynamic, you'll more often find yourself needing a powerful way of "searching" and "selecting" relevant elements in an architecture model. For example, when determining impact of architectural changes, this may be the case. Since architectures can be stored in databases (e.g. by using plugins like the Database export/import plugin for Archi), you should be able to query them, hence creating dynamic architecture views.

Querying a relational database

I have done some research on this and found out that querying a relational database isn't that efficient. You can look on an architecture model as a collection of element (types) interconnected with each other. Each architecture element can have a relation of some kind with another element. For example: a service has a assignment relation with an application interface that has a realization relation with an application that can have serving relations with other applications. Finding all services that in some way are influences by infrastructure processes, for example, is not that easy. An architecture is actually a network that is hard (inefficient) to query on using a relational database using, for example, joins or procedures. This is caused by the concept of a relational database that just isn't suitable for models that look like networks of interconnected elements. Luckily, the Database export/import plugin for Archi also supports Neo4j, a graph database, which seems to be more suitable for this. Graph databases like Neo4j actually provide an excellent way of displaying complex architectures in which there exist many connections between elements.

So what is a graph database? And what is Neo4j?

A graph database is a type of NoSQL database that uses graph theory to store, map and query relationships. This is essentially a collection of nodes and edges that needs to be queried. Each node represents an entity and each edge represents a connection or relationship between two nodes. Graph databases are very well suited for analyzing networks, e.g. to mine data from social media.

Neo4j is a graph database management system. It can be described as an ACID-compliant transactional database with native graph storage and processing.

Neo4j databases can be queried by using a special query language: Cypher.

The Cypher Query Language

Cypher is a declarative language for expressive and efficient querying and maintaining a property graph. It's based on the Property Graph Model, based on elements of nodes and edges (relationships between elements) and labels and properties that can be added to them.

An example query for Actors in one of the example Neo4j databases available is:

MATCH (nicole:Actor {name: 'Nicole Kidman'})-[:ACTED_IN]->(movie:Movie)
WHERE movie.year < $yearParameter
RETURN movie

You'll find some nice instructive video's on Graph Databases on YouTube...

Intro to Graph Databases Episode #5 - Cypher, the Graph Query Language



More in this series:
  • Intro to Graph Databases Episode #1 - Evolution of DBs
  • Intro to Graph Databases Episode #2 - Properties of Graph DBs & Use Cases
  • Intro to Graph Databases Episode #3 - Property Graph Model
  • Intro to Graph Databases Episode #4 - (RDBMS+SQL) to (Graphs+Cypher)
  • Intro to Graph Databases Episode #5 - Cypher, the Graph Query Language
  • Intro to Graph Databases Episode #6 - Continuing with Cypher

See: https://www.youtube.com/playlist?list=PLSiMhBs48YvXpvmWiUNeThqxOikTH1Zy4

Further study

Do you want to read more on the topics in this post or play around with the technology? Here are some links…

On Graph databases:
What is a Graph Database? https://neo4j.com/developer/graph-database
Graph Databases for Beginners: Why Graph Technology Is the Future: https://neo4j.com/blog/why-graph-databases-are-the-future
Graph database: https://en.wikipedia.org/wiki/Graph_database
Instructive video's on Graph Databases: https://www.youtube.com/playlist?list=PLSiMhBs48YvXpvmWiUNeThqxOikTH1Zy4

On Neo4j:
Neo4j (GitHub repo): https://github.com/neo4j/neo4j
Neo4j homepage: https://neo4j.com/
Fred's GitHub repo (explanation, examples, in Dutch): https://gitlab.com/fredvn-woensdagavond/neo4j-2018-12
Neo4j Sandbox (handson labs, built-in guides and sample datasets for popular use cases): https://neo4j.com/sandbox-v2

On Cypher Query Language:
Cypher Query Language: https://en.wikipedia.org/wiki/Cypher_Query_Language
Cypher Query Language: https://neo4j.com/developer/cypher-query-language/
Learn Cypher in minutes: https://learnxinyminutes.com/docs/cypher

Examples:
The Graph of Thrones [Season 7 Contest]: https://neo4j.com/blog/graph-of-thrones/
Dataset: Movie Database: https://neo4j.com/developer/movie-database/#_the_dataset
Exploring a UK Open Government Dataset with Neo4j: https://leanjavaengineering.wordpress.com/2015/04/10/exploring-a-uk-open-government-dataset-with-neo4j

On related topics:
4+1 architectural view model: https://en.wikipedia.org/wiki/4%2B1_architectural_view_model
Database export/import plugin that store Archi models in a central database repository: https://github.com/archi-contribs/database-plugin
threejs (cross-browser JavaScript library and Application Programming Interface (API) used to create and display animated 3D computer graphics): https://threejs.org/