GET calls are never nullipotent as they often have side effects like updating access logs or enforcing access control rules. While side effects are acceptable if they are expected behaviors in the domain or produce no observable changes, strictly speaking GET is not nullipotent. Additionally, HTTP verbs like POST and PUT do not always map directly to create and update operations in REST APIs. Response codes beyond 200 OK are also often used to indicate semantic errors rather than just syntax or transport errors. Finally, fully implementing HATEOAS with every response may not be practical or needed for many REST APIs.
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016Nagato Kasaki
現在、DMM.comでは、1日あたり1億レコード以上の行動ログを中心に、各サービスのコンテンツ情報や、地域情報のようなオープンデータを収集し、データドリブンマーケティングやマーケティングオートメーションに活用しています。しかし、データの規模が増大し、その用途が多様化するにともなって、データ処理のレイテンシが課題となってきました。本発表では、既存のデータ処理に用いられていたHiveの処理をHive on Sparkに置き換えることで、1日あたりのバッチ処理の時間を3分の1まで削減することができた事例を紹介し、Hive on Sparkの導入方法やメリットを具体的に解説します。
Hadoop / Spark Conference Japan 2016
http://www.eventbrite.com/e/hadoop-spark-conference-japan-2016-tickets-20809016328
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016Nagato Kasaki
現在、DMM.comでは、1日あたり1億レコード以上の行動ログを中心に、各サービスのコンテンツ情報や、地域情報のようなオープンデータを収集し、データドリブンマーケティングやマーケティングオートメーションに活用しています。しかし、データの規模が増大し、その用途が多様化するにともなって、データ処理のレイテンシが課題となってきました。本発表では、既存のデータ処理に用いられていたHiveの処理をHive on Sparkに置き換えることで、1日あたりのバッチ処理の時間を3分の1まで削減することができた事例を紹介し、Hive on Sparkの導入方法やメリットを具体的に解説します。
Hadoop / Spark Conference Japan 2016
http://www.eventbrite.com/e/hadoop-spark-conference-japan-2016-tickets-20809016328
Kubernetes as a ServiceをProduction環境で2年活用し、直面してきた課題と解決策 / YJTC19 in Shibuya A...Yahoo!デベロッパーネットワーク
ヤフーではKubernetes as a Service(KaaS)を使いオンプレミスのKubernetes(K8s)環境を構築し、活用しています。KaaSは約2年ほど前からProduction環境で稼働させ、現在400を超えるK8s Clusterを管理しています。
本セッションでは、このようなオンプレミスのKaaSを活用し、運用、開発チームそれぞれがどのような利益を得られたか、また、このような大規模数のCluster管理を行う上で直面してきた課題とその解決までのプロセスをご紹介しました。
Kubernetes as a ServiceをProduction環境で2年活用し、直面してきた課題と解決策 / YJTC19 in Shibuya A...Yahoo!デベロッパーネットワーク
ヤフーではKubernetes as a Service(KaaS)を使いオンプレミスのKubernetes(K8s)環境を構築し、活用しています。KaaSは約2年ほど前からProduction環境で稼働させ、現在400を超えるK8s Clusterを管理しています。
本セッションでは、このようなオンプレミスのKaaSを活用し、運用、開発チームそれぞれがどのような利益を得られたか、また、このような大規模数のCluster管理を行う上で直面してきた課題とその解決までのプロセスをご紹介しました。
Primary focus of this presentation is on the hypermedia as the engine of application state (HATEOAS) and how HTTP APIs may benefit from it. Provides sneak peek into HAL media type & gives an overview of hypermedia support in Java tools (JAX-RS / HalBuilder and Spring HATEOAS) along with practical suggestions for server-side design of hypermedia API. Also includes quick overview of Richardson Maturity Model based on a set of examples, current API trends.
Learn how to take advantage of Apigility to create APIs from scratch or to expose current functionality from an existent system. You'll learn the core API concepts, processes, functionality, logic, and in general how you can create good APIs, including documentation and all the considerations you must have.
The REST Architectural Style
Resources
Representations
Actions
Security
This presentation has been developed in the context of the Mobile Applications Development course, DISIM, University of L'Aquila (Italy), Spring 2014.
http://www.ivanomalavolta.com
Provides an introduction to the principles of Representational State Transfer (ReST), as an architectural style. Includes a comparison between the different alternatives of application to application communications. Explains the Richardson's maturity model, and shed light on the different degrees of maturity, with an emphasis on the Hypermedia services and the concepts of HATEOAS, and how Hypermedia services can participate in driving the Domain Application Protocol.
This session will provide attendees with hands-on experience and in-depth knowledge of using Node.js as a runtime environment and Express.js as a web framework to build scalable and fast backend systems. Additionally, attendees will learn about Passport.js, a popular authentication middleware for Node.js, and how to use Prisma ORM to handle database operations in a type-safe and efficient manner.
The session will be conducted by experienced developers who have worked with these technologies and will be able to provide valuable insights and best practices. The session will be interactive and include plenty of opportunities for attendees to ask questions and work on real-world projects.
These were prepared to teach the module "Emerging Technologies" for the 3rd year Undergraduates of the Asia Pacific Institue of Information Technology, Colombo-2, Sri Lanka (Remotely)
Similar to Five Inconvenient Truths about REST (20)
Ever seen a drawing trying to explain the architecture or the functionality of an IT system, and you couldn't make any sense of it because it was drawn so badly? Do you feel that your drawings are OK, but could probably be improved substantially with a few tricks, but you don't really know what they would be?
I've made a lot of drawings over the years. I'm pretty sure not all of them were a success in terms of understandability. But at some point in time, I started reflecting on how my drawings look, and since then, I'm getting comments that apparently, my drawings look good.
In this session, I would like to share some of the reflections I make when I see somebody else's drawing, show you some obviously bad drawings and discuss what's wrong with them, and some of the tricks I use to create better drawings. The goal should be that when you leave this session, you've practiced a bit on how you can make your drawing look better, such that the reader or the viewer will understand it better.
How JSR 385 could have saved the Mars Climate OrbiterFilip Van Laenen
In 1999, NASA lost the $125 million Mars Climate Orbiter as it went into orbital insertion. Due to a mismatch between US customary and SI units of measurements in one of the APIs, the spacecraft came to close to the planet, passed through the upper atmosphere and disintegrated. Sadly, this hasn’t been the only instance where a mismatch between units of measurements had catastrophic consequences, but it’s certainly one of the most spectacular and expensive ones.
How could this happen? The bad news is: if you use primitive types to handle quantities in your code, due to that very same practice. At best, you’ve codified the unit in the name of the variable or the database field, e.g. calling it lengthInMetres. Otherwise, you’re only relying on convention, just like Lockheed Martin and NASA did.
Join this workshop to learn how JSR 385 can help you avoid $125 million mistakes, and discover the immeasurable world of dimensions, units and quantities.
Source code for the exercises during the workshop can be found at https://github.com/filipvanlaenen/booster2019.
How JSR-385 Could Have Saved the Mars Climate OrbiterFilip Van Laenen
In 1999, NASA lost the $125 million Mars Climate Orbiter as it went into orbital insertion. Due to a mismatch between US customary and SI units of measurements in one of the APIs, the spacecraft came to close to the planet, passed through the upper atmosphere and disintegrated. Sadly, this hasn’t been the only instance where a mismatch between units of measurements had catastrophic consequences, but it’s certainly one of the most spectacular and expensive ones.
How could this happen? The bad news is: if you use primitive types to handle quantities in your code, due to that very same practice. At best, you’ve codified the unit in the name of the variable or the database field, e.g. calling it lengthInMetres. Otherwise, you’re only relying on convention, just like Lockheed Martin and NASA did.
Join this talk to learn how JSR-385 can help you avoid $125 million mistakes, and discover the immeasurable world of dimensions, units and quantities.
Mutation testing is the true test for whether or not your source code does the right thing, and whether it's properly tested by your unit tests. But while we're on a killing spree against the mutants of our source code, let's reflect a bit on what these mutants really represent, and why we want to include the unit tests that kill them in our test suite.
What's the real point of boundary testing? Do we really need every statement in the source code? Have we tested all calculations? How do we know that we got all the access modifiers on our methods right? These are some of the questions that we would like to reflect on for a moment.
We'll start this talk with a short introduction to mutation testing, but only to set the stage. The core of this talk consists of a walk-through of Java code and unit tests, and a reflection on TDD and the quality of our unit tests. At the end of this talk you should be more suspicious about both your source code and your unit tests.
Hvor finner jeg en bra oversikt over de siste meningsmålingene i Norge? Hva slags
informasjon kan man trekke ut av dem? Og hvordan pleier det å gå galt når en journalist
skriver om det, og hvor galt kan det bli?
Statistikk rundt meningsmålinger er en av de mest ironiske delfagene innen matematikk: de
interessante, opplagte konklusjonene fra råtallene pleier å være feil, men så snart de
begynner å bli sanne igjen er de ikke lenger så interessante.
Bonusmateriale: en kvalifisert gjetning for hvem som kommer til å vinne valget i Oslo.
How Free Data Can Drive Some of the Monkey Business Out of Political Journali...Filip Van Laenen
Who will win the next election? Political journalists and scientist will be eager to tell you, but usually they're either telling you the obvious, or proposing their personal political preferences as a neutral expectation. How can we tell the difference?
There's a lot of free data (sadly not so much “open data”) out there about elections, going from general information about past and future elections, to detailed results per election constituency and polling data for upcoming results. Once you know where to look for the information, it's no so difficult to distill answers to the key questions around an upcoming question. Who will be the largest party in parliament? Who won't meet the threshold? Political journalists and scientists often give you the wrong answer, because they don't do the maths. This talk will tell you how you can do it right.
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Globus
The U.S. Geological Survey (USGS) has made substantial investments in meeting evolving scientific, technical, and policy driven demands on storing, managing, and delivering data. As these demands continue to grow in complexity and scale, the USGS must continue to explore innovative solutions to improve its management, curation, sharing, delivering, and preservation approaches for large-scale research data. Supporting these needs, the USGS has partnered with the University of Chicago-Globus to research and develop advanced repository components and workflows leveraging its current investment in Globus. The primary outcome of this partnership includes the development of a prototype enterprise repository, driven by USGS Data Release requirements, through exploration and implementation of the entire suite of the Globus platform offerings, including Globus Flow, Globus Auth, Globus Transfer, and Globus Search. This presentation will provide insights into this research partnership, introduce the unique requirements and challenges being addressed and provide relevant project progress.
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamtakuyayamamoto1800
In this slide, we show the simulation example and the way to compile this solver.
In this solver, the Helmholtz equation can be solved by helmholtzFoam. Also, the Helmholtz equation with uniformly dispersed bubbles can be simulated by helmholtzBubbleFoam.
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Shahin Sheidaei
Games are powerful teaching tools, fostering hands-on engagement and fun. But they require careful consideration to succeed. Join me to explore factors in running and selecting games, ensuring they serve as effective teaching tools. Learn to maintain focus on learning objectives while playing, and how to measure the ROI of gaming in education. Discover strategies for pitching gaming to leadership. This session offers insights, tips, and examples for coaches, team leads, and enterprise leaders seeking to teach from simple to complex concepts.
GraphSummit Paris - The art of the possible with Graph TechnologyNeo4j
Sudhir Hasbe, Chief Product Officer, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
Large Language Models and the End of ProgrammingMatt Welsh
Talk by Matt Welsh at Craft Conference 2024 on the impact that Large Language Models will have on the future of software development. In this talk, I discuss the ways in which LLMs will impact the software industry, from replacing human software developers with AI, to replacing conventional software with models that perform reasoning, computation, and problem-solving.
We describe the deployment and use of Globus Compute for remote computation. This content is aimed at researchers who wish to compute on remote resources using a unified programming interface, as well as system administrators who will deploy and operate Globus Compute services on their research computing infrastructure.
First Steps with Globus Compute Multi-User EndpointsGlobus
In this presentation we will share our experiences around getting started with the Globus Compute multi-user endpoint. Working with the Pharmacology group at the University of Auckland, we have previously written an application using Globus Compute that can offload computationally expensive steps in the researcher's workflows, which they wish to manage from their familiar Windows environments, onto the NeSI (New Zealand eScience Infrastructure) cluster. Some of the challenges we have encountered were that each researcher had to set up and manage their own single-user globus compute endpoint and that the workloads had varying resource requirements (CPUs, memory and wall time) between different runs. We hope that the multi-user endpoint will help to address these challenges and share an update on our progress here.
Globus Connect Server Deep Dive - GlobusWorld 2024Globus
We explore the Globus Connect Server (GCS) architecture and experiment with advanced configuration options and use cases. This content is targeted at system administrators who are familiar with GCS and currently operate—or are planning to operate—broader deployments at their institution.
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisGlobus
JASMIN is the UK’s high-performance data analysis platform for environmental science, operated by STFC on behalf of the UK Natural Environment Research Council (NERC). In addition to its role in hosting the CEDA Archive (NERC’s long-term repository for climate, atmospheric science & Earth observation data in the UK), JASMIN provides a collaborative platform to a community of around 2,000 scientists in the UK and beyond, providing nearly 400 environmental science projects with working space, compute resources and tools to facilitate their work. High-performance data transfer into and out of JASMIN has always been a key feature, with many scientists bringing model outputs from supercomputers elsewhere in the UK, to analyse against observational or other model data in the CEDA Archive. A growing number of JASMIN users are now realising the benefits of using the Globus service to provide reliable and efficient data movement and other tasks in this and other contexts. Further use cases involve long-distance (intercontinental) transfers to and from JASMIN, and collecting results from a mobile atmospheric radar system, pushing data to JASMIN via a lightweight Globus deployment. We provide details of how Globus fits into our current infrastructure, our experience of the recent migration to GCSv5.4, and of our interest in developing use of the wider ecosystem of Globus services for the benefit of our user community.
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeAftab Hussain
Understanding variable roles in code has been found to be helpful by students
in learning programming -- could variable roles help deep neural models in
performing coding tasks? We do an exploratory study.
- These are slides of the talk given at InteNSE'23: The 1st International Workshop on Interpretability and Robustness in Neural Software Engineering, co-located with the 45th International Conference on Software Engineering, ICSE 2023, Melbourne Australia
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxrickgrimesss22
Discover the essential features to incorporate in your Winzo clone app to boost business growth, enhance user engagement, and drive revenue. Learn how to create a compelling gaming experience that stands out in the competitive market.
Software Engineering, Software Consulting, Tech Lead.
Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Security,
Spring Transaction, Spring MVC,
Log4j, REST/SOAP WEB-SERVICES.
Understanding Globus Data Transfers with NetSageGlobus
NetSage is an open privacy-aware network measurement, analysis, and visualization service designed to help end-users visualize and reason about large data transfers. NetSage traditionally has used a combination of passive measurements, including SNMP and flow data, as well as active measurements, mainly perfSONAR, to provide longitudinal network performance data visualization. It has been deployed by dozens of networks world wide, and is supported domestically by the Engagement and Performance Operations Center (EPOC), NSF #2328479. We have recently expanded the NetSage data sources to include logs for Globus data transfers, following the same privacy-preserving approach as for Flow data. Using the logs for the Texas Advanced Computing Center (TACC) as an example, this talk will walk through several different example use cases that NetSage can answer, including: Who is using Globus to share data with my institution, and what kind of performance are they able to achieve? How many transfers has Globus supported for us? Which sites are we sharing the most data with, and how is that changing over time? How is my site using Globus to move data internally, and what kind of performance do we see for those transfers? What percentage of data transfers at my institution used Globus, and how did the overall data transfer performance compare to the Globus users?
Enterprise Resource Planning System includes various modules that reduce any business's workload. Additionally, it organizes the workflows, which drives towards enhancing productivity. Here are a detailed explanation of the ERP modules. Going through the points will help you understand how the software is changing the work dynamics.
To know more details here: https://blogs.nyggs.com/nyggs/enterprise-resource-planning-erp-system-modules/
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Crescat
Crescat is industry-trusted event management software, built by event professionals for event professionals. Founded in 2017, we have three key products tailored for the live event industry.
Crescat Event for concert promoters and event agencies. Crescat Venue for music venues, conference centers, wedding venues, concert halls and more. And Crescat Festival for festivals, conferences and complex events.
With a wide range of popular features such as event scheduling, shift management, volunteer and crew coordination, artist booking and much more, Crescat is designed for customisation and ease-of-use.
Over 125,000 events have been planned in Crescat and with hundreds of customers of all shapes and sizes, from boutique event agencies through to international concert promoters, Crescat is rigged for success. What's more, we highly value feedback from our users and we are constantly improving our software with updates, new features and improvements.
If you plan events, run a venue or produce festivals and you're looking for ways to make your life easier, then we have a solution for you. Try our software for free or schedule a no-obligation demo with one of our product specialists today at crescat.io
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Five Inconvenient Truths about REST
1. FIVE INCONVENIENT TRUTHS ABOUT REST
Filip van Laenen
1
https://www.flickr.com/photos/grantmac/4192158869
2. Who Am I?
2
●
18 years of experience as a developer/architect
●
Been involved in a number of REST projects
– Client/consumer
– Server/producer
●
Things I wish I knew a couple of years ago…
http://www.slideshare.net/filipvanlaenen/
3. REST – Representational state transfer
3
From Wikipedia:
“Representational State Transfer (REST)
is a software architecture style for
building scalable web services.
REST gives a coordinated set of
constraints to the design of components
in a distributed hypermedia system that
can lead to a higher performing and
more maintainable architecture.”
4. REST – Representational state transfer
4
From Wikipedia:
“RESTful systems typically, but not
always, communicate over the Hypertext
Transfer Protocol with the same HTTP
verbs (GET, POST, PUT, DELETE, etc.)
which web browsers use to retrieve web
pages and to send data to remote
servers.
REST interfaces usually involve
collections of resources with identifiers,
for example /people/paul, which can be
operated upon using standard verbs,
such as DELETE /people/paul.”
8. Ever Heared a REST-Discussion about “State”?
8
From Wikipedia:
“The client–server communication is
constrained by no client context being
stored on the server between requests.”
9. INCONVENIENT TRUTH #1:
GET calls are never nullipotent
9
https://www.flickr.com/photos/grantmac/4192158869
11. What does «nullipotent» mean?
11
From Wikipedia:
“The GET method is a safe method (or
nullipotent), meaning that calling it
produces no side-effects.”
12. What does «nullipotent» mean?
12
From Wikipedia:
“The GET method is a safe method (or
nullipotent), meaning that calling it
produces no side-effects.”
14. Wanted Side-effects
●
Access log from a REST resource
●
Access control
– Three strikes and you're out
●
One-time downloads
– Think “Snapchat”
14
15. GET Methods with Side-effects Are OK
15
…if the side-effects are:
●
General good practices
●
Part of the domain
16. GET Methods with Side-effects Are OK
16
…if the side-effects are:
●
General good practices
●
Part of the domain
In other words:
●
Unobservable
●
Expected
21. HTTP/1.1 Spec about POST and PUT
21
The POST method is used to request that the origin server
accept the entity enclosed in the request as a new
subordinate of the resource identified by the Request-URI
in the Request-Line.
The PUT method requests that the enclosed entity be
stored under the supplied Request-URI. If the Request-URI
refers to an already existing resource, the enclosed entity
SHOULD be considered as a modified version of the one
residing on the origin server. If the Request-URI does not
point to an existing resource, and that URI is capable of
being defined as a new resource by the requesting user
agent, the origin server can create the resource with that
URI.
22. HTTP/1.1 Spec about POST and PUT
22
The POST method is used to request that the origin server
accept the entity enclosed in the request as a new
subordinate of the resource identified by the Request-URI
in the Request-Line.
The PUT method requests that the enclosed entity be
stored under the supplied Request-URI. If the Request-URI
refers to an already existing resource, the enclosed entity
SHOULD be considered as a modified version of the one
residing on the origin server. If the Request-URI does not
point to an existing resource, and that URI is capable of
being defined as a new resource by the requesting user
agent, the origin server can create the resource with that
URI.
23. HTTP/1.1 Spec about POST and PUT
23
The POST method is used to request that the origin server
accept the entity enclosed in the request as a new
subordinate of the resource identified by the Request-URI
in the Request-Line.
The PUT method requests that the enclosed entity be
stored under the supplied Request-URI. If the Request-URI
refers to an already existing resource, the enclosed entity
SHOULD be considered as a modified version of the one
residing on the origin server. If the Request-URI does not
point to an existing resource, and that URI is capable of
being defined as a new resource by the requesting user
agent, the origin server can create the resource with that
URI.
24. HTTP/1.1 Spec about POST and PUT
24
The POST method is used to request that the origin server
accept the entity enclosed in the request as a new
subordinate of the resource identified by the Request-URI
in the Request-Line.
The PUT method requests that the enclosed entity be
stored under the supplied Request-URI. If the Request-URI
refers to an already existing resource, the enclosed entity
SHOULD be considered as a modified version of the one
residing on the origin server. If the Request-URI does not
point to an existing resource, and that URI is capable of
being defined as a new resource by the requesting user
agent, the origin server can create the resource with that
URI.
28. Martin Fowler on HATEOAS
28
“The key elements that are supported
by the existence of the web are the
strong separation between safe (eg
GET) and non-safe operations, together
with using status codes to help
communicate the kinds of errors you
run into.”
http://martinfowler.com/articles/richardsonMaturityModel.html
32. What If Something Else Is Wrong?
32
Semantical errors, but syntactically correct:
●
References to resources that don't exist
●
Illegal values
●
Invalid combination of choices
●
Anything else that doesn't make sense in your
domain
34. 422 Unprocessable Entity
34
From IETF RFC 4918:
“The 422 (Unprocessable Entity) status code means the server
understands the content type of the request entity (hence a 415
(Unsupported Media Type) status code is inappropriate), and the
syntax of the request entity is correct (thus a 400 (Bad Request)
status code is inappropriate) but was unable to process the
contained instructions.
For example, this error condition may occur if an XML request
body contains well-formed (i.e., syntactically correct), but
semantically erroneous, XML instructions.”
https://tools.ietf.org/html/rfc4918#section-11.2
38. HATEOAS
38
Hypermedia as the engine of application state
From Wikipedia:
“Clients make state transitions only through
actions that are dynamically identified within
hypermedia by the server.
Except for simple fixed entry points to the
application, a client does not assume that any
particular action is available for any particular
resources beyond those described in
representations previously received from the
server.”
43. Martin Fowler on HATEOAS
43
“One obvious benefit of hypermedia
controls is that it allows the server to
change its URI scheme without
breaking clients. As long as clients look
up the ‘addTest’ link URI then the server
team can juggle all URIs other than the
initial entry points.”
http://martinfowler.com/articles/richardsonMaturityModel.html
44. Martin Fowler on HATEOAS
44
“A further benefit is that it helps client
developers explore the protocol. The
links give client developers a hint as to
what may be possible next. It doesn't
give all the information: both the
“latest” and “cancel” controls point to
the same URI – they need to figure out
that one is a GET and the other a
DELETE. But at least it gives them a
starting point as to what to think about
for more information and to look for a
similar URI in the protocol
documentation.”
http://martinfowler.com/articles/richardsonMaturityModel.html
45. Cost/Benefit of HATEOAS
What will change most often?
●
Behavior
●
Content
●
URIs
What's hard to refactor?
●
Behavior
●
Content
●
URIs
45
48. HATEOAS
48
●
Uses a lot of bandwidth
●
To avoid refactoring something
that's easy to refactor
●
Infrequent changes
●
YAGNI (You aren't gonna need it)
52. Composition
●
A hire on an asset cannot exist
without the asset
●
A subhire on a superhire cannot
exist without the superhire
●
A journey during a hire cannot
exist without the hire
●
Etc…
52
https://www.flickr.com/photos/aspis7/5075169756
66. Thank You for Your Attention!
66
Contact information:
@filipvanlaenen
fvl@computas.com / f.a.vanlaenen@ieee.org
https://no.linkedin.com/in/filipvanlaenen
http://www.slideshare.net/filipvanlaenen/