Improving on a previous version of this session delivered in Lisbon, this deck describes the real experiences in architecting and developing a large software project that took 3 years to go live. It was presented at a 3,5hr ITARC2015 workshop in Stockholm, Sweden.
C'è ancora diffidenza nei confronti dell'Internet of Things e il costo delle soluzioni custom non aiuta. Azure IoT Central è un servizio SaaS personalizzabile che rende accessibile a costi sostenibili. Vediamo quali sonole peculiarità di questo servizio.
Node.JS Vs PHP: Which Is The Top Server-Side Programming Language?Pixel Crayons
While there is no denying that PHP is an excellent choice as a server-side programming language, Node.js has been increasing in popularity since its release in 2009. Let's check out the battle of Node vs PHP.
We always want the best when investing our hard-earned money. So, in this blog, we will do a fact check on PHP vs Node, which is better for us.
Pointers:
Pros of Node.js and PHP- Individually
Comparison Overview: Node vs PHP
Who Wins Where
Limitations of Node.js and PHP
Final Winner
Do Visualizations help during development? Using Moose while coding.ESUG
First Name: Rainer
Last Name: Winkler
Title: Do Visualizations help during development? Using Moose while coding.
Type: Talk
Youtube: https://youtu.be/0ttLYM1tkek
Abstract: I will discuss how visualizations can help while coding. I
explain the intention behind the visualization tool RW-Moose-Diagram
(http://www.smalltalkhub.com/#!/
~RainerWinkler/RW-Moose-Diagram)
which is based on Moose and Roassal. It is used to make dependency
diagrams that focus on a certain aspect of an application. It supports
comments; elements can be dragged; changes to diagrams can be
stored. I speak about the experiences I made while using it with ABAP
and Smalltalk. The main intention was to make understanding code
easier while working with Legacy code. I discuss also in which cases
it can help while working with new applications that have a very high
test coverage.
Bio: Rainer Winkler is developer for SAP applications specialized in
SAP tools for reporting. He is interested in software maintenance and
in getting Legacy code under control. He works primarily with ABAP and
enjoyed to learn Pharo recently to utilize Roassal and Moose.
Your Future HTML: The Evolution of Site Design with Web ComponentsKen Tabor
This talk is dedicated to helping you understand how you can easily build reusable pieces of user interface while assembling your overall experience. Specifically the emerging technology of web components is introduced as the way you can package your HTML, CSS, and JavaScript to produce drop-in solutions. It’s like building UI elements and widget controls for the web.
By using this tactic to architect your sites you’ll reduce time, and increase quality, of the work your development team produces. See how designers and developers will use the deep functionality web components offer. Make custom HTML tags backed by the necessary markup, style, and code. This unique bundle mixes presentation with behavior creating rich and flexible micro-interactions.
I’ll review how the popular browser makers are implementing this emerging technology on desktop and mobile. I’ll introduce Google’s Polymer library as a way you can use web components now while platform owners are in the process of supporting the proposed standard.
Oracle Application Express has proven itself as a powerful development platform for internal development needs in countless organizations worldwide. One of the new frontiers it is starting to conquer is building commercial applications. This session covers what it takes to use Oracle Application Express as a platform for building commercial applications. It looks at all facets of the software development lifecycle and discusses different infrastructures, deployments, processes, and tools used to make development with Oracle Application Express as streamlined and cost-effective as possible. Real-world examples are given throughout the session. Much of what is discussed in this session can also be applied to medium to large Oracle Application Express projects.
C'è ancora diffidenza nei confronti dell'Internet of Things e il costo delle soluzioni custom non aiuta. Azure IoT Central è un servizio SaaS personalizzabile che rende accessibile a costi sostenibili. Vediamo quali sonole peculiarità di questo servizio.
Node.JS Vs PHP: Which Is The Top Server-Side Programming Language?Pixel Crayons
While there is no denying that PHP is an excellent choice as a server-side programming language, Node.js has been increasing in popularity since its release in 2009. Let's check out the battle of Node vs PHP.
We always want the best when investing our hard-earned money. So, in this blog, we will do a fact check on PHP vs Node, which is better for us.
Pointers:
Pros of Node.js and PHP- Individually
Comparison Overview: Node vs PHP
Who Wins Where
Limitations of Node.js and PHP
Final Winner
Do Visualizations help during development? Using Moose while coding.ESUG
First Name: Rainer
Last Name: Winkler
Title: Do Visualizations help during development? Using Moose while coding.
Type: Talk
Youtube: https://youtu.be/0ttLYM1tkek
Abstract: I will discuss how visualizations can help while coding. I
explain the intention behind the visualization tool RW-Moose-Diagram
(http://www.smalltalkhub.com/#!/
~RainerWinkler/RW-Moose-Diagram)
which is based on Moose and Roassal. It is used to make dependency
diagrams that focus on a certain aspect of an application. It supports
comments; elements can be dragged; changes to diagrams can be
stored. I speak about the experiences I made while using it with ABAP
and Smalltalk. The main intention was to make understanding code
easier while working with Legacy code. I discuss also in which cases
it can help while working with new applications that have a very high
test coverage.
Bio: Rainer Winkler is developer for SAP applications specialized in
SAP tools for reporting. He is interested in software maintenance and
in getting Legacy code under control. He works primarily with ABAP and
enjoyed to learn Pharo recently to utilize Roassal and Moose.
Your Future HTML: The Evolution of Site Design with Web ComponentsKen Tabor
This talk is dedicated to helping you understand how you can easily build reusable pieces of user interface while assembling your overall experience. Specifically the emerging technology of web components is introduced as the way you can package your HTML, CSS, and JavaScript to produce drop-in solutions. It’s like building UI elements and widget controls for the web.
By using this tactic to architect your sites you’ll reduce time, and increase quality, of the work your development team produces. See how designers and developers will use the deep functionality web components offer. Make custom HTML tags backed by the necessary markup, style, and code. This unique bundle mixes presentation with behavior creating rich and flexible micro-interactions.
I’ll review how the popular browser makers are implementing this emerging technology on desktop and mobile. I’ll introduce Google’s Polymer library as a way you can use web components now while platform owners are in the process of supporting the proposed standard.
Oracle Application Express has proven itself as a powerful development platform for internal development needs in countless organizations worldwide. One of the new frontiers it is starting to conquer is building commercial applications. This session covers what it takes to use Oracle Application Express as a platform for building commercial applications. It looks at all facets of the software development lifecycle and discusses different infrastructures, deployments, processes, and tools used to make development with Oracle Application Express as streamlined and cost-effective as possible. Real-world examples are given throughout the session. Much of what is discussed in this session can also be applied to medium to large Oracle Application Express projects.
What is Puppet | Puppet Tutorial for Beginners | Puppet Configuration Managem...Edureka!
This DevOps Puppet Tutorial on "What is Puppet" will help you understand what is Configuration management and why it was introduced. This tutorial also explains how Puppet achieves Configuration Management in detail and includes a Hands-On session around Puppet by the end of which you will learn how to write Manifests, Modules and how to establish a secure connection between Puppet Master and Puppet Agent. Below are the topics covered in this tutorial:
1. Why Configuration Management?
2. What is Configuration Management?
3. Configuration Management Tools
4. What is Puppet?
5. Puppet Architecture
6. Puppet Components
7. Demo on Puppet
Integrate Machine Learning into Your Spring Application in Less than an HourVMware Tanzu
SpringOne 2020
Integrate Machine Learning into Your Spring Application in Less than an Hour
Hermann Burgmeier, Senior Software Engineer at Amazon
Qing Lan, Software Developement Engineer at AWS
Mikhail Shapirov, Senior Partner Solutions at Amazon Web Services, Inc
Vaibhav Goel, Sr. Software Development Engineer at Amazon
Build embedded and IoT solutions with Microsoft Windows IoT Core (BRK30077)Callon Campbell
Windows IoT is a family of products that enables rich edge devices and applications that can take full advantage of Azure IoT capabilities. We’ll explore the latest capabilities for Windows IoT, and then show how you can use all of your existing Windows development skills to create solutions ranging from fun hobby projects all the way through to critical Intelligent Edge solutions.
You will learn the following
- Introduction to Azure Resource Manager Templates and its benefits.
- Provision applications to Azure using a declarative template.
- How to deploy multiple services along with their dependencies using a single template.
- Also, offer the option of splitting up your ARM templates into multiple templates that each describes individual resources.
Bringing AI to the edge: On-premise Azure Cognitive Services Luis Beltran
Azure Cognitive Services allow developers to build powerful AI-based solutions, enabling different capabilities in our software: vision. speech, search, text analytics, language understanding, and much more. Basically, the model is already built by Microsoft, you just need to do an API call to the Azure cloud and the service retrieves a result. For instance, you send a message and the Text Analytics API returns its sentiment score.
However, there might be cases in which our customers need a local, non-cloud AI solution (either because of limited Internet access or data compliance). This is now possible thanks to the latest update of Azure Cognitive Services, which offers containerization support. Using containers, we can still deliver ML-driven solutions while keeping the data in-house.
In this talk, we'll explore what it takes to configure and use containers in Azure Cognitive Services. Demos will be showcased as well for local Face and Text Cognitive Services.
- Overview of a use case - Sentiment analysis
- Introduction - Using Jupyter Notebook & AWS SageMaker
- Setup New Project
- Setup and Run the Build CI/CD Pipeline
- Setup the Release Pipeline
- Test Build and Release Pipelines
- Testing the deployed solution
- Examining deployed model performance
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)Ryan Cuprak
Java EE 7 provides a strong foundation for developing the back end for your HTML5 mobile applications. This heavily code-driven session shows you how you can effectively utilize Java EE 7 as a back end for your Apache Cordova mobile applications. The session demonstrates Java EE 7 technologies such as JAX-RS 2.0, WebSocket, JSON-P, CDI, and Bean Validation. It provides an overview of the basics of Apache Cordova as well as the tooling support added in NetBeans 8. The session also demonstrates an integrated approach to rapidly developing HTML5 mobile applications with Java EE 7 and NetBeans and concludes with best practices and pitfalls.
The Path Towards Spring Boot Native ApplicationsVMware Tanzu
SpringOne 2020
The Path Towards Spring Boot Native Applications
Sébastien Deleuze, Spring Framework Committer at VMware
Andy Clement, Director at VMware
What is Puppet | Puppet Tutorial for Beginners | Puppet Configuration Managem...Edureka!
This DevOps Puppet Tutorial on "What is Puppet" will help you understand what is Configuration management and why it was introduced. This tutorial also explains how Puppet achieves Configuration Management in detail and includes a Hands-On session around Puppet by the end of which you will learn how to write Manifests, Modules and how to establish a secure connection between Puppet Master and Puppet Agent. Below are the topics covered in this tutorial:
1. Why Configuration Management?
2. What is Configuration Management?
3. Configuration Management Tools
4. What is Puppet?
5. Puppet Architecture
6. Puppet Components
7. Demo on Puppet
Integrate Machine Learning into Your Spring Application in Less than an HourVMware Tanzu
SpringOne 2020
Integrate Machine Learning into Your Spring Application in Less than an Hour
Hermann Burgmeier, Senior Software Engineer at Amazon
Qing Lan, Software Developement Engineer at AWS
Mikhail Shapirov, Senior Partner Solutions at Amazon Web Services, Inc
Vaibhav Goel, Sr. Software Development Engineer at Amazon
Build embedded and IoT solutions with Microsoft Windows IoT Core (BRK30077)Callon Campbell
Windows IoT is a family of products that enables rich edge devices and applications that can take full advantage of Azure IoT capabilities. We’ll explore the latest capabilities for Windows IoT, and then show how you can use all of your existing Windows development skills to create solutions ranging from fun hobby projects all the way through to critical Intelligent Edge solutions.
You will learn the following
- Introduction to Azure Resource Manager Templates and its benefits.
- Provision applications to Azure using a declarative template.
- How to deploy multiple services along with their dependencies using a single template.
- Also, offer the option of splitting up your ARM templates into multiple templates that each describes individual resources.
Bringing AI to the edge: On-premise Azure Cognitive Services Luis Beltran
Azure Cognitive Services allow developers to build powerful AI-based solutions, enabling different capabilities in our software: vision. speech, search, text analytics, language understanding, and much more. Basically, the model is already built by Microsoft, you just need to do an API call to the Azure cloud and the service retrieves a result. For instance, you send a message and the Text Analytics API returns its sentiment score.
However, there might be cases in which our customers need a local, non-cloud AI solution (either because of limited Internet access or data compliance). This is now possible thanks to the latest update of Azure Cognitive Services, which offers containerization support. Using containers, we can still deliver ML-driven solutions while keeping the data in-house.
In this talk, we'll explore what it takes to configure and use containers in Azure Cognitive Services. Demos will be showcased as well for local Face and Text Cognitive Services.
- Overview of a use case - Sentiment analysis
- Introduction - Using Jupyter Notebook & AWS SageMaker
- Setup New Project
- Setup and Run the Build CI/CD Pipeline
- Setup the Release Pipeline
- Test Build and Release Pipelines
- Testing the deployed solution
- Examining deployed model performance
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)Ryan Cuprak
Java EE 7 provides a strong foundation for developing the back end for your HTML5 mobile applications. This heavily code-driven session shows you how you can effectively utilize Java EE 7 as a back end for your Apache Cordova mobile applications. The session demonstrates Java EE 7 technologies such as JAX-RS 2.0, WebSocket, JSON-P, CDI, and Bean Validation. It provides an overview of the basics of Apache Cordova as well as the tooling support added in NetBeans 8. The session also demonstrates an integrated approach to rapidly developing HTML5 mobile applications with Java EE 7 and NetBeans and concludes with best practices and pitfalls.
The Path Towards Spring Boot Native ApplicationsVMware Tanzu
SpringOne 2020
The Path Towards Spring Boot Native Applications
Sébastien Deleuze, Spring Framework Committer at VMware
Andy Clement, Director at VMware
Deploying your apps in the cloud - the options: an overviewCisco DevNet
A session in the DevNet Zone at Cisco Live, Berlin. There are numerous ways to deploy applications within the cloud. The current rage is deploying within containers, but many applications continue to be deployed on VMs as well as on bare metal. In this session we will discuss the pros and cons and each approach and how to determine which method of deployment is best for your needs. While there is not one way to rule them all, OpenStack provides common APIs that can be used to orchestrate all your workloads regardless of the deployment options you need. OpenStack components and options covered include Heat, Murano, Kolla, and Magnum. Finally, we touch briefly on why you might want to consider building your application using microservices and how Shipped can help.
Architecting a Large Software Project - Lessons LearnedJoão Pedro Martins
In large projects, the Software Architect role includes both the client communication and requirements management, and the solution design itself, making sure technical quality is garanteed. This presentation describes the lessons learned with a highly successful project that took 3 years of development until its production phase, in technical, functional, and architeture aspects.
Presented at the 50th meeting of the Netponto Community in Lisboa, Portugal.
A presentation on best practices for J2EE scalability from requirements gathering through to implementation, including design and architecture along the way.
Covering topics like:
CI CD DevOps Jenkins TFS TeamCity Compile Test Package Delpoy
See Disclaimer in the last slide and/or in file comments, if available.
Availability in a cloud native world v1.6 (Feb 2019)Haytham Elkhoja
Guidelines for mere mortals. These are a collection of guidelines picked up in the field... hopefully they would help developers and SREs building or modernizing apps ensuring the highest level of availability to their applications.
The development of a product from the point of view of a technician, starting from the concept, passing to the minimum viable till a management of a fully operational and deployed app.
AI algorithms offer great promise in criminal justice, credit scoring, hiring and other domains. However, algorithmic fairness is a legitimate concern. Possible bias and adversarial contamination can come from training data, inappropriate data handling/model selection or incorrect algorithm design. This talk discusses how to build an open, transparent, secure and fair pipeline that fully integrates into the AI lifecycle — leveraging open-source projects such as AI Fairness 360 (AIF360), Adversarial Robustness Toolbox (ART), the Fabric for Deep Learning (FfDL) and the Model Asset eXchange (MAX).
When to Code / Config / Config + Code in Salesforce - Nikunj DoshiSakthivel Madesh
When to Code / Config / Config + Code in Salesforce - Nikunj Doshi
In this session discussed about,
- Key Criteria in deciding right solution.
- Pragmatic takeaways from Salesforce's decision guide https://link.medium.com/SNjI4Rs6Udb
- Sample solutions displaying power of Configurable Code!
- - Any Object to Big Objects archiving utility
- - Metadata Driven declarative rollup
- Q&A & Share our horror/memorable stories on this topic
DATEV Meetup Online, Februar 2023, Mario-Leander Reimer (@LeanderReimer, CTO @QAware).
== Dokument bitte herunterladen, falls unscharf! Please download slides if blurred! ==
IaC without tests is like a broken window. Clean IaC comes to rescue like clean code.
Webinar by Igor Kolosov, Automation/Performance Architect, Consultant at GlobalLogic, Kharkiv
Fast and effective analysis of architecture diagrams:
Black-box is not a panacea
Pitfalls of chaotic approach
From chaos to process
How to speed up architecture diagram analysis?
Collecting valuable inputs
Workshop with examples
Azure Service Fabric and the Actor Model: when did we forget Object Orientation?João Pedro Martins
Session presented at DDD event in TVP/Microsoft UK HQ. Introduction to Azure Service Fabric, and focus on the actor model (formerly known as Project Orleans), with demos and documentation on how it is supported in Service Fabric. Goal: ask ourselves why did we really replace OO with "stateless services".
Overview session of Microsoft's Azure Service Fabric Overview (v1.5.175), delivered at AzurePT community event in Lisbon, held March 26. The session describes all the main components of the platform, with a focus on its architecture.
Session presented at Microsoft Developer TechRefresh 2015 in Lisbon - Portugal. A remake of the Build 2015 session, with updated contents and new demos.
This deck was presented at the Windows Azure Spring Summit held at Microsoft Portugal in Lisboa, 2013.04.09. The goal was do describe features of Azure that are especially interesting for eCommerce web sites, based on the presenter's and Create It's real experience.
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...informapgpstrackings
Keep tabs on your field staff effortlessly with Informap Technology Centre LLC. Real-time tracking, task assignment, and smart features for efficient management. Request a live demo today!
For more details, visit us : https://informapuae.com/field-staff-tracking/
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.
Accelerate Enterprise Software Engineering with PlatformlessWSO2
Key takeaways:
Challenges of building platforms and the benefits of platformless.
Key principles of platformless, including API-first, cloud-native middleware, platform engineering, and developer experience.
How Choreo enables the platformless experience.
How key concepts like application architecture, domain-driven design, zero trust, and cell-based architecture are inherently a part of Choreo.
Demo of an end-to-end app built and deployed on Choreo.
Designing for Privacy in Amazon Web ServicesKrzysztofKkol1
Data privacy is one of the most critical issues that businesses face. This presentation shares insights on the principles and best practices for ensuring the resilience and security of your workload.
Drawing on a real-life project from the HR industry, the various challenges will be demonstrated: data protection, self-healing, business continuity, security, and transparency of data processing. This systematized approach allowed to create a secure AWS cloud infrastructure that not only met strict compliance rules but also exceeded the client's expectations.
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Globus
The Earth System Grid Federation (ESGF) is a global network of data servers that archives and distributes the planet’s largest collection of Earth system model output for thousands of climate and environmental scientists worldwide. Many of these petabyte-scale data archives are located in proximity to large high-performance computing (HPC) or cloud computing resources, but the primary workflow for data users consists of transferring data, and applying computations on a different system. As a part of the ESGF 2.0 US project (funded by the United States Department of Energy Office of Science), we developed pre-defined data workflows, which can be run on-demand, capable of applying many data reduction and data analysis to the large ESGF data archives, transferring only the resultant analysis (ex. visualizations, smaller data files). In this talk, we will showcase a few of these workflows, highlighting how Globus Flows can be used for petabyte-scale climate analysis.
Listen to the keynote address and hear about the latest developments from Rachana Ananthakrishnan and Ian Foster who review the updates to the Globus Platform and Service, and the relevance of Globus to the scientific community as an automation platform to accelerate scientific discovery.
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?
Into the Box Keynote Day 2: Unveiling amazing updates and announcements for modern CFML developers! Get ready for exciting releases and updates on Ortus tools and products. Stay tuned for cutting-edge innovations designed to boost your productivity.
Enhancing Research Orchestration Capabilities at ORNL.pdfGlobus
Cross-facility research orchestration comes with ever-changing constraints regarding the availability and suitability of various compute and data resources. In short, a flexible data and processing fabric is needed to enable the dynamic redirection of data and compute tasks throughout the lifecycle of an experiment. In this talk, we illustrate how we easily leveraged Globus services to instrument the ACE research testbed at the Oak Ridge Leadership Computing Facility with flexible data and task orchestration capabilities.
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?XfilesPro
Worried about document security while sharing them in Salesforce? Fret no more! Here are the top-notch security standards XfilesPro upholds to ensure strong security for your Salesforce documents while sharing with internal or external people.
To learn more, read the blog: https://www.xfilespro.com/how-does-xfilespro-make-document-sharing-secure-and-seamless-in-salesforce/
Code reviews are vital for ensuring good code quality. They serve as one of our last lines of defense against bugs and subpar code reaching production.
Yet, they often turn into annoying tasks riddled with frustration, hostility, unclear feedback and lack of standards. How can we improve this crucial process?
In this session we will cover:
- The Art of Effective Code Reviews
- Streamlining the Review Process
- Elevating Reviews with Automated Tools
By the end of this presentation, you'll have the knowledge on how to organize and improve your code review proces
In software engineering, the right architecture is essential for robust, scalable platforms. Wix has undergone a pivotal shift from event sourcing to a CRUD-based model for its microservices. This talk will chart the course of this pivotal journey.
Event sourcing, which records state changes as immutable events, provided robust auditing and "time travel" debugging for Wix Stores' microservices. Despite its benefits, the complexity it introduced in state management slowed development. Wix responded by adopting a simpler, unified CRUD model. This talk will explore the challenges of event sourcing and the advantages of Wix's new "CRUD on steroids" approach, which streamlines API integration and domain event management while preserving data integrity and system resilience.
Participants will gain valuable insights into Wix's strategies for ensuring atomicity in database updates and event production, as well as caching, materialization, and performance optimization techniques within a distributed system.
Join us to discover how Wix has mastered the art of balancing simplicity and extensibility, and learn how the re-adoption of the modest CRUD has turbocharged their development velocity, resilience, and scalability in a high-growth environment.
How to Position Your Globus Data Portal for Success Ten Good PracticesGlobus
Science gateways allow science and engineering communities to access shared data, software, computing services, and instruments. Science gateways have gained a lot of traction in the last twenty years, as evidenced by projects such as the Science Gateways Community Institute (SGCI) and the Center of Excellence on Science Gateways (SGX3) in the US, The Australian Research Data Commons (ARDC) and its platforms in Australia, and the projects around Virtual Research Environments in Europe. A few mature frameworks have evolved with their different strengths and foci and have been taken up by a larger community such as the Globus Data Portal, Hubzero, Tapis, and Galaxy. However, even when gateways are built on successful frameworks, they continue to face the challenges of ongoing maintenance costs and how to meet the ever-expanding needs of the community they serve with enhanced features. It is not uncommon that gateways with compelling use cases are nonetheless unable to get past the prototype phase and become a full production service, or if they do, they don't survive more than a couple of years. While there is no guaranteed pathway to success, it seems likely that for any gateway there is a need for a strong community and/or solid funding streams to create and sustain its success. With over twenty years of examples to draw from, this presentation goes into detail for ten factors common to successful and enduring gateways that effectively serve as best practices for any new or developing gateway.
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.
Strategies for Successful Data Migration Tools.pptxvarshanayak241
Data migration is a complex but essential task for organizations aiming to modernize their IT infrastructure and leverage new technologies. By understanding common challenges and implementing these strategies, businesses can achieve a successful migration with minimal disruption. Data Migration Tool like Ask On Data play a pivotal role in this journey, offering features that streamline the process, ensure data integrity, and maintain security. With the right approach and tools, organizations can turn the challenge of data migration into an opportunity for growth and innovation.
How Recreation Management Software Can Streamline Your Operations.pptxwottaspaceseo
Recreation management software streamlines operations by automating key tasks such as scheduling, registration, and payment processing, reducing manual workload and errors. It provides centralized management of facilities, classes, and events, ensuring efficient resource allocation and facility usage. The software offers user-friendly online portals for easy access to bookings and program information, enhancing customer experience. Real-time reporting and data analytics deliver insights into attendance and preferences, aiding in strategic decision-making. Additionally, effective communication tools keep participants and staff informed with timely updates. Overall, recreation management software enhances efficiency, improves service delivery, and boosts customer satisfaction.
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.
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
ITARC15 Workshop - Architecting a Large Software Project - Lessons Learned
1. Architecting a Large Software
Project – Lessons Learned
João Pedro Martins
ITARC 2015
IASA WORLD SUMMIT
2. Ground Rules and Expectations
∃ Break
Interaction expected – share your experiences
Software Architecture level (yes, technology is included)
3. João Pedro “jota” Martins
CTO @ |create|it|
Software Architect
TechEd 2006 – “Iron Architect” Winner
BizTalk Server MVP 2006-2011
Co-founder - GASP + APPU
Windows Azure Insider
4. What’s this session about?
Architecting a
Large
Software Project –
Lessons Learned
5. Overview
Internal Banking application for corporate credit
allocation. 3000+ users.
Dev started Jun-2011, R1 installed Jul-2014. Currently on
progressive rollout with updates.
Web-based, running inside a Windows Forms shell,
developed on Microsoft technologies.
Scrum - 56 sprints, ~15 dev-years
Core team: 14 (5 devs) + ~10 in other teams
Integrates with 11 systems
THEPROJECT
6. Current statistics
Applicationcode- LOCs
Presentation: 63,664
Backend:116,145
Business Rules(xml):36,473
Database:~4,000
Automatedtests:157,586
And also…
GeneratedCodeLOCs
81VisualStudioProjects
24Services with213Operations
86Presentation views
1,481classes,96databasetables
1,755AutomatedTests,~80%coverage of
backendcode.
100%StyleCopcompliance
>15libraries andpackages~800,000
THEPROJECT
Storiesand Issues
~550userstories
1,064issues:98%closed,78%bugs.0.04%
showstoppers.
Inlast5sprints…
56%timenewdevelopments,44%
fixes/enhancements
Production updatesevery4days
7. ConceptualArchitectureandTechnologies
THEPROJECT
browser dataservicesweb
Controller
View
Model
business logic
rule engine
integration
tables + views
data access
stored procedures
browser web services data
NET 4.0
CODESMITH +
NETTIERS TEMPLATES
T-SQL
SQL SERVER + VS
DATA TOOLS
SSMS
NET 4.0
WCF
NXBRE
LOG4NET
UNITY (ENTLIB)
VS UNIT TESTING
RHINO.MOCKS
SPREADSHEET.NET
QUICKGRAPH.NET
TOOLKIT CREATE
.NET 4.0
ASP.NET MVC3
LOG4NET
JSON.NET
UNITY (ENTLIB)
TOOLKIT CREATE
BALSAMIQ MOCKUPS
HTML + CSS
JQUERY
KNOCKOUTJS
UNDERSCOREJS
KENDOUI
MOMENTJS
TOASTR
8. Architecture design: from Theoretical
toPragmatictoImplementable
Theoretical Implementable
ESB/Integration Bus BizTalk Server SOAP Web Services with
bank’s custom ServiceHost
Enterprise Rules
Engine
BizTalk Server BRE / Excel
Services
NxBRE (OSS) – XML Rules
Engine
Distributed Cache VelocityCTP3 / Windows
AppFabric
Cookies + Web Server
Afinity
Load Tests VS2010 Test with
distributed agents
VS2010 single server load
Application Lifecycle
Management (ALM)
TFS SVN + Issue Tracker + Excel
Product/Sprint Backlogs
Increasing levels of contraints limit the choices:
- Cost, time, available IT, risks, governance, security, skillsets, …
10. Secrets forthe success
Scrum
[Dev] Agility
Retrospectives
Frequent releases/user demos
Notion of Progress
User Interface
Motivated Team Focus
Usable and simple
Aesthetic
Innovative
(not what you would expect in a bank)
Team principles - quality
Continuous improvement
Individual initiative&strengths
Redundancy in skills
Very low turnover
Work-life balance
Challenges
Latest&Greatest technology
Physical workspace
Great relationships
OVERVIEW
12. How toworkaround this?
SOLID principles - Single Responsibility
Domain Driven Design – vertical slices of behavior
Separation of Concerns – partial classes + smaller
classes
When in doubt:
• Create another class
• Use interfaces
LEARNING#1
13. Logging
Do you have detailed logging enabled in your
production environments?
LEARNING#2
Is this useful?
14. Logging
Instead of this (the “Laconic Logging” Anti-Pattern)…
… do something like this…
LEARNING#2
15. Logging-hints
Log operation details vs Security/Privacy
Use end-to-end correlation.
Define your logging policy.
Beware of impact on performance.
Beware of storage space required. DO cleanup/archive.
LEARNING#2
16. Interfaces vs Inheritance
“Why extends is evil - Improve your code by replacing
concrete base classes with interfaces” (Allen Holub)
http://www.javaworld.com/article/2073649/core-java/why-extends-is-evil.html
LEARNING#3
Dependency injection interfaces.
Very limited use of OO inheritance
- Base Data Contracts with minimum property set (e.g., id + name)
- About ~10 uses in total
18. Dependency Injection
"All problems in computer science can be solved by
another level of indirection“ (David Wheeler)
LEARNING#4
Config
If asked for IServiceA create
ServiceA instance
creates&uses
A
19. Dependency Injection pitfalls
Initial setup can be demanding (skills+time)
Programming configurations (complex debugging)
Impact on runtime performance
Productivity (F12 goes to interface and not implementation)
LEARNING#4
20. Cache
Cache transparentlyviainterception +
configuration.
Cache before accessing the network.
Initially designed for 3freshness configs.
Idempotence as a side-benefit.
LEARNING#5
Presentation Layer
Whenever this assembly is used
… and a method with this name is called
… apply this interceptor with this configuration
21. Cache: ooops!
Business information presented must be accurate –
and data is not stable in external systems.
Very little external reference data.
User authorization.
Transparent, configuration-based cache, is convenient -
however, you can’t selectively expire contents
LEARNING#5
22. Transparent caching pitfals
Per operation call, not per business entity
E.g.,“method_1_2_3”ascache_key,insteadof“client_1”
You don’t control cache keys on the runtime (general purpose
cache-key: hash generator of input parameters)
Hard Impossible to track dependencies in complex business
models.
=> Cache invalidation is all-or-nothing
LEARNING#5
23. Automated tests
Requirement: 80% coverage by automated tests in
service layer.
Team principle: the AGILE team is not afraid to change
any piece of code for fear of breaking something.
Approach: service-level, end-to-end tests
- Visual Studio Tests framework
- Not unit tests integration, end-to-endtests
- Depend on external data
- Sprint Backlog: One service operation one test set
LEARNING#6
24. Automated tests – mmmm…
Test suite takes too long to run (~2-3h) :
- SQL scripts SQL Database Snapshots
- Service layer tests Business layer tests
External data not stable – mocks
But: how to test complex business cases dependent on
external data of which we can’t be sure?
LEARNING#6
25. Automated tests – moremmmm…
Have a Test King in the team to nurture and run tests
VS2012test runner worse/slower than VS2010 (!)
Smart asserts can help improve code-coverage:
Tool recommendation: SSMS to generate T-SQL from data
LEARNING#6
26. Code Conventions
Agree on coding conventions and stylecop compliance
at start of project.
Architect/Dev Lead name all the main artifacts: service
contracts, database artifacts, etc. Strive for consistency.
LEARNING#7
27. Code Conventions notes
Focus on code legibility:
- Comment your code (take special care with algorithms)
- Don’t use var for non-anonymous types
- Don’t overdo Linq statements
Mistakes will happen, and rename refactors will be
needed (mixing PTwith EN is frequent).
Standardize verbs in services/methods, db naming (ex:
List vs GetAll)
Do NOT argue tab size. When in doubt, use defaults.
LEARNING#7
28. Negotiation…withyourteam,andwiththecustomer
Always voice your opinion, focusing on what you think
is the best for the project architecture-wise. Create a
trust relationship.
When your recommendation is not followed, and you
are sure you are right, present objective arguments –
don’t be emotional. Argue for as long as you must, but
no longer. And don’t say “I told you so”.
Accept defeat, make compromises.
LEARNING#8
29. Negotiation…somemorenotes
Be attentive of the other’s possible hidden motivations,
but be careful in exposing them.
Consensus is not always possible. Your options will be
questioned, and sometimes you will be wrong.
Remember the 3 views of architecture: theoretical,
pragmatic, implementable.
Ask open questions.
LEARNING#8
30. Functional team/domain experts
They are your peers, and part of the team. You
depend on well written and clear user stories.
Domain experts that understand Scrum,
priorities and constraints make the difference.
Rely heavily on them and their tools. When you
don’t understand, ask questions until you do.
LEARNING#9
31. Functional Team do’s and don’ts
Sometimes the way a story is written crystalizes a way
of implementation.
Some stories will be hard to understand and
decompose into tasks. Ask for clarifications and don’t
implement blindly.
Business context is sometimes missing.
Tendency to “follow the old ways”.
Tendency to abide to single-user/hierarchical requests.
32. Use Your Brain:design elegantly
You are not paid to write code, you are paid to think
and communicate.
Think things through before committing to a solution.
Try to isolate and design autonomous and change-
tolerant components.
Step back, look at the larger picture. As an Architect,
you DO NOT have to be a technical expert in
everything: focus on capabilities and structure.
LEARNING#10
33. Impediments to using your brain
Interruptions, background noise, phones, no
whiteboard, lack of natural light, music on
headphones, time or budget pressure, too
much coffee, personal problems, lack of sleep, …
What’s your style: collaborate then design, or design and then
collaborate? Isolate yourself to design. Make drawings, and then
document your proposed solution.
*Thinking is hardwork.
34. Wireframes
Create and discuss
mockups pre-
implementation.
Ps: if you have an UI
expert in your team,
don’t let business
experts create them.
Tool recommendation:
BalsamiqMockups
LEARNING#11
35. UsabilityTests
Usability tests are simple! Just looking at users during
training uncovered both problems and ideas for
improvement.
LEARNING#12
36. Revisiting 4 technical choices
KnockoutJS or MVC3?
Took time to decide and spike,
there was an initial setback with
KO and adoption was reversed.
2nd attempt and investment
proved correct.
NxBRE Rules Engine
QuickGraph.net3.6 DistributedCache
XML-based rules engine DLL.
XML file can be replaced without
recompilation. Works fine and is
fast, but hard to code and read.
Jury is still out.
Formal Architectural feedback was
tacitally dismissed as non-
pragmatic, and package was used.
VelocityCTP3 was refused as non-
supported. AppFabric not available
in Windows 2003. Oracle
Coherence never provided.
39. Use diagrams to communicate
and structure your ideas.
NOT MY SKETCH
40. Use an issue tracker, designate someone(s) to
do the triage, and configure mail alerts, your
pages/modules, team, and sprints.
Teach the client
how to use it for bugs
& enhancements.
42. 4 layers & no distributed cache
mean no real-time features
43. Be lazy. Don’t waste time
coding your own, special, data-
access layer/library/....
Scavenge codeplex, github,
nugget, etc. for assets&tools to
reuse or buy.
44. Use extension methods – don’t
pollute your classes with
auxiliary methods (ex: finders
in collections)
* and kill those «helper» classes, too
45. Just 3 more…
Humans make mistakes. Scripts don’t. Use scripts and
obsessively automate repetitive tasks or installations.
Know your branches, merges, shelves, labels,
versioning (just use best practices, don’t invent).
Innovating and surprising your customer, and the
cherry on the cake, makes a world of difference.
46. Closing message
It’s an architect job to address the
clients’ needs and deliver quality
products.
Three stone cutters were asked abouttheir jobs.
The first one replied, “I’m paidto cutstones.”
The second replied, “I usespecialtechniquesto shapestones inan exceptional
way,hereletme showyou.” He proceeded to demonstrate.
The third just smiled and said, “I buildcathedrals.”
-Ricardo Semler
Hope I helped!
47. João Pedro “jota” Martins
jota@create.pt
(+351) 96 782 5537
blogit.create.pt/joaomartins/
twitter.com/lokijota
pt.linkedin.com/in/joaopedromartins/
ITARC 2015
IASA WORLD SUMMIT
Thanks!
Questions?Thoughts?
48. |create|it|
Started 2001 @ Lisboa, Portugal
Systems Integrator
Team of 26
Microsoft Gold Certified Partner
Azure
BizTalk
Office365
SharePoint
Umbraco
NopCommerce
Editor's Notes
Logo font: Monserrat Regular
Logo color: #9a8e5e (154,142,94)
Morning workshops 09:00–12:30
Hello, good morning. My name is João Martins, but people usually just call me “jota”, which is probably also easier for you to say .
We’re going to spend the next 3,5 hours discussing real-life experiences in architecting and implementing a software project I did in Portugal, both the good and the bad.
But before we go on, I’d like to clarify some ‘rules’ and expectations regarding this session.
First, there will be a break. [PRECISO DE SABER SE HÁ E QUANDO É EXPECTÁVEL].
Second, this session relies on there being interaction and questions, or else it’ll be just me passing slides for the duration. Ask questions, clarifications, comments, share your own experiences.
Third, a lot of what we’ve heard yesterday was somewhat on a conceptual level. This session is much more operational, covering specific programming concepts, team dynamics, user experience, etc. and the learnings from the concrete experience of setting up a specific project for what turned out to be much longer than we expected.
This said, I’d like to have an idea how this maps to your own expectations: is this what you are looking for? What is your role in your organizations?
GASP was the Portuguese software architecture group, a former IASA chapter, where I was the president, and APPU is the Portuguese usability professionals organization, of which I was the chairman.
GUARDAR O COMENTÁRIO SOBRE AS SESSÕES DO GASP PARA O PRÓXIMO SLIDE.
Architecting >> design & communication, what I consider to tb the two key skills of na Architect: DESIGNING AND THEN MATERIALIZING A SOFTWARE APPLICATION.
Large >> what is large? A few months back I met a couple of people from Deloitte, who were working in I think Norway, with a fully portuguese team of 200 people, creating the software system for an insurance company. That is not a project, but a program. This session is about a single project. It’s also probably not large for countries like the US and maybe Sweeden, but we consider it large in relative terms compared to what we usually do in Portugal, large because of the 3 years it took to go live, and large in terms of complexity: We used to joke and say that – after this – is rocket Science.
Software project >> technology and engineering in one specific project. Goal getting code running.
Lessons Learned >> mistakes and successes. Two notes: a) a few years back when I led the IASA Chapter in Lisbon, the most value we took were the experience-sharing sessions, usually under NDA, about projects we did. This is part of the goal for this session. b) I’ll be Talking about several different types of learnings, some technical, some architectural, some human-related, some functional.
Quickly describe what is the goal of the application, the proactive allocation of credit limits to companies. This allows for:
Proactive sales with immediate on-the-spot approval
Improved response time
Automation of credit concession operations on Clients’ web portals/apps + sales people tablet apps
Detalhar o porquê dos 3 anos in simple terms, this was not due to delays, but due to the fact that the definition of “Minimum Viable Product” was a moving target for 3 years. For us, this could have gone live after 1 year.
MIG, PAT, SNL, RB + 4 keyusers
GDC/GPC: JAAlmeida, NLetras, ANDré, OCTávio, Teresa, Outra funcional
DW: LA, DC: 2
Number of bugs increased after rollout, 64->78%. Most of them in the UI, which is not covered by tests. Interesting!
**** MANUAL CODE TOTALS *****
Web C# LOCS: 32480
Services C# LOCS: 101438
Integration C# LOCS: 8708
Mock/Tests C# LOCS: 120437
Mock/Tests SQL LOCS: 37149
Common/Proxy/Tools C# LOCS: 5999
Custom SP/Function LOCS: 2590
HTML LOCS: 11341
Javascript LOCS: 17957
CSS LOCS: 1886
Services Rules XML LOCS: 36473
GRAND TOTAL: 408938
**** ARTIFACT TOTALS *****
Total Projects: 81
Total SQL Tables: 96
Total SQL Stored Procedures: 1186
Total SQL Functions: 47
Total SQL Views: 70
Total HTML Views/Partial Views: 86
Total Javascript functions: 1868
Total WCF Services: 24
Total WCF Service Operations: 213
Total WCF Data Contracts: 336
Total C# Public/Partial/Static Classes: 1481
Total Automated Tests: 1755
**** GENERATED CODE TOTALS *****
Total DAL C#: 741293
Como defino:
Conceptual: o que queremos, em teoria
Pragmático: o que temos, tendo em conta a realidade (ex: não há service bus, regras de governance internas)
Implementável: o que temos de fazer, tipicamente por constraints temporais ou de custo
SKILLSETS: The customer – a scrum house - wanted us to assume the role of Product Owner, for example.
Notion of progress:
In sprint
Measurement of speed every sprint
Estimation of remaining work via velocity/story points estimation
Managers: Transaction Script pattern
http://martinfowler.com/eaaCatalog/transactionScript.html
Organizes business logic by procedures where each procedure handles a single request from the presentation.
http://martinfowler.com/eaaCatalog/serviceLayer.html
Service Layer - Defines an application's boundary with a layer of services that establishes a set of available operations and coordinates the application's response in each operation.
http://en.wikipedia.org/wiki/SOLID_%28object-oriented_design%29
Single responsibility principle - a class should have only a single responsibility (i.e. only one potential change in the software's specification should be able to affect the specification of the class). Martin defines a responsibility as a reason to change, and concludes that a class or module should have one, and only one, reason to change. As an example, consider a module that compiles and prints a report. Imagine such a module can be changed for two reasons. First, the content of the report could change. Second, the format of the report could change. These two things change for very different causes; one substantive, and one cosmetic. The single responsibility principle says that these two aspects of the problem are really two separate responsibilities, and should therefore be in separate classes or modules. It would be a bad design to couple two things that change for different reasons at different times.
Separation of concerns (SoC) is a design principle for separating a computer program into distinct sections, such that each section addresses a separate concern. A concern is a set of information that affects the code of a computer program.
---
Open/closed principle - “software entities … should be open for extension, but closed for modification.”
Liskov substitution principle - “objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program.” See also design by contract.
Interface segregation principle - “many client-specific interfaces are better than one general-purpose interface.”
Dependency inversion principle - one should “Depend upon Abstractions. Do not depend upon concretions.” Dependency injection is one method of following this principle.
If you don’t have detailed logging, how do you diagnose problems? Wait for the repro? Look at the data?
How useful are stack traces, really? Where’s the application context, the security context, etc.?
Also, obviously make sure your client instance is not null, or your logging will possibly cause an error.
No caso do impacto na performance, falar do caso do NxBre, que gera tanto logging que se torna inutilizável.
A política de logging é um documento com até 2 páginas a dizer como usar os níveis, que tipo de logging é útil e não, dando exemplos, e como usar as classes para o realizar.
Pode haver discussão aqui. Reler bem e preparer o Holub.
Impacto no desempenho: do as little as possible and async if possible (ex: logging)
Remark that this also applies when your code that depends on ClassA intervenes.
Impacto no desempenho: do as little as possible and async if possible (ex: logging)
Juval Lowy – one order of greatness more time, if you have to access the network.
Dar o exemplo do AS. Que corre os testes todos os dias. Princípio broken window of not letting them rot.
Tive inúmeras situações destas:
Pequenos compromissos que se tornam grandes compromissos (a história da sra bimbo)
Pessoas que não aceitaram opções alternativas para não dar o braço a torcer, e acabaram por ser emocionais
Exemplo:
- Alteração de dtsx para ficheiro, após envolvimento de arquitecto do banco
Examples:
Boss da BE não querer perder a face (ou o RB corar durante a reunião acesa)
- Exemplo do Luis Alves, de lhe pedir ajuda em vez de fazer a sugestão que tinha em mente, para algo que ele não iria gostar (acesso directo a SP em vez de web services)
Clarificar que neste caso a responsabilidade funcional não ficou do nosso lado.
Ex: Haircut? Pagaré? Letra?
We had a project recently for which 80-90% of the features are critical to be in the Minimum Viable Product. And we have one at the moment where they say they use scrum, but with 3 to 4 month sprints. Because “they can’t stop business users from asking things”.
Business context is sometimes missing. > letras, pagarés, haircuts, descobertos, MLPs, LOs, … > lots of banking-specific terms.
Follow old ways – if people are used to winforms apps, they’ll design screens that look and interact like winforms apps.
Single user requests – triângulo do filtro “pequeno demais” – which was the same size as the one in Excel!
E.g., Maestro, Chef, Juiz.
They say the brain uses up 20% of your energy intake (RMR, Resting Metabolic Intake, while representing only 2% of you bodies’ mass.
Explain what we did: observe training, sitting next to users passively, with a tablet and an excel file.
These tests were imensely useful. We uncovered problems, we identified missing or interesting new functionality.
Examples:
auto-complete a proposal (if current credit = x, new credit limit = x)
The 1st comment in the excel file from na older person
The observation with the Young woman who used the scroll wheel to zoom out automatically
The camera videos take a huge amount of time to process. And if the client trusts you, they are not really needed.
https://quickgraph.codeplex.com/
Self explanatory. I personally prefer to create a mental model and then discuss, but theycan give you ideas, and discussion makes the architecture more solid.
EXPAND THIS COMMENT
They are your peers, trust tem. “Take care of her and she’ll take care of you”.
I’m a visual thinker, I need whiteboards, pencils, sheets of paper.
A whiteboard was one of our requests to the client when the project started, and it was granted.
Sistematizar número mínimo de campos: header com estado/id proposta/cliente/ambiente.
UI responding to changes detected in database or service-layer.
Ex: a report generated asynchronously is ready.
Posso dar exemplos aqui: LogExpert. SSMS. ServiceStack’s library. NewtonSoft JSON, tool to export certificates, powershell, …
Posso falar dos bonecos, posso falar dos gráficos, do shortcut que releva os detalhes das operações para diagnosticar problemas nos dados <- provavelmente o mais importante.
I find this last sentence truly inspiring, and not for the religious theme
Logo font: Monserrat Regular
Logo color: #9a8e5e (154,142,94)