Event Location:
Hotel President
12 Hospitalna street
, , Ukraine
Abstract:
Hierarchies are the bread and butter of most business applications and you find them almost everywhere: * Product Categories * Sales Territories * Bill of Material * Calendar and Time Even when there is a big need from a business perspective, the solutions in relational databases are mostly sort of awkward. The most flexible hierarchies are usually modeled as self-referenced tables. If you want to successfully query such self-referenced hierarchies, you will need either loops or recursive Common Table Expressions. SQL Server 2017 comes now with a different approach: Graph Database. Join this session for a journey through best practices to transform your hierarchies into useful information. We will have fun playing around with a sample database based on G. R. R. Martin’s famous “Game of Thrones”.
Speaker(s): Markus Ehrenmueller-Jensen,
Abstract:
Self-Service Data Preparation aka Data Wrangling is becoming more and more popular in BigData and Enterprise world. Data Lake stores tons of different data and it is not easy to get value from it. Traditional approach doesn't work here, data analysts and data scientists have to wait until IT guys gather requirements and prepare a right dataset for them. Time from raw data to insights is too long. In this session, I invite you together look closer at Self-Service Data Prep and show how it would help to get insights and make decisions faster, onboard new data sources without IT, and increase efficiency for data analysts and data scientists.
Speaker(s): Sergiy Lunyakin,
Abstract:
So, you’re tasked to implement SQL Server AlwaysOn Availability Groups but don’t know where to start. You have a lot of different topologies to choose from but they’re all the more confusing. Creating effective design architecture is key. In this session, we will look at the different topologies – from simple ones to advance – that you can implement and how to build them. At the end of the session, you will walk away with the knowledge on how to build the right SQL Server AlwaysOn Availability Group topology that will address your high availability and disaster recovery requirements. You will learn: - Common design patterns and guidelines that you need to consider when building your architecture - Proper selection of quorum configuration - Network configuration for local and geographically dispersed replicas - Combining SQL Server Failover Clustering with AlwaysOn Availability Groups
Speaker(s): Edwin M Sarmiento,
Abstract:
Or how to visualize your data and find insights for beginner IoT developer If you create an IoT solution today, you have a variety of components available to mix and match to make your solution, akin LEGO. You get your hardware and firmware right and you get data from the sensors, now what? Of course, you would like to have, some data visualization easy and fast, and of course you would like to learn something from that data easy and fast. And it would be nice to have the results available on mobile devices, yes, yes easy and fast. Now enter our two titan technologies in a match to the death oops data trying to achieve these goals, you guess it easy fast (and cheap). And we will see them clash, from real hardware, to the big Azure cloud, to mobile devices, trying to outmatch each other.
Speaker(s): Catalin Gheorghiu,
Abstract:
Clustered Index zombies come out of their graves to make the peace loving Heaps to one of them in your databases. Try to attack them or find a fair way to make them living together in peaceful harmony. If you ask experts about using a clustered index you will in most cases hear the following statements: Yes, you need a narrow and contiguous clustered index for your table for good performance. Last but not least Microsoft Azure Databases requires clustered indexes but there might be situations when workloads and queries will suffer from wrong implemented clustered indexes. Watch the demos which show in an impressive way that clustered indexes are not always the best choice. Build your clustered indexes wise or - as the demos will show - forgo for it for a better scaling. Become aware of the pros and cons of Clustered Indexes and make a wise decision when to use clustered indexes and the correct key attributes for it.
Speaker(s): Uwe Ricken,
Abstract:
What is DevOps and why should you rub it on anything? In this session we'll explore, through demo's, how a DevOps mindset changed my personal way of working and development of database and BI solutions. We'll shortly discuss what this actually means and in the demo's you'll see how to automate the deployment of your own databases, SSIS, SSRS and SSAS projects. On top of that, you'll experience the simple patterns and how to overcome blockers so you too can finally start to automate the deployment of just about anything.
Speaker(s): Jan Mulkens,
Abstract:
We will cover the main aspects to migrate to one of the three architectures available in SQL Server in Azure from SQL Server On Premise. This session consists of: -> What is the best platform for my environment? IaaS, PaaS, or SQL Datawarehouse. -> Best Practices and best tools for our migration process depending on the platform chosen. -> After the migration, we have several outstanding questions: Can I keep both environments synchronized? How is the performance of my database?
Speaker(s): Jose Manuel Jurado Diaz,
Abstract:
Microsoft SQL Server is running in Windows Server Operating system, however, most of the OS Administrators treats SQL Server just like another basic application. On the session, I will show how steps taken before actual installation of SQL Server can impact performance. The session is a walk through on all of the layers starting on hardware, virtualization (if used), Operating System and finally SQL Server. After the session, you will have set of best practices that can be applied to your environment.
Speaker(s): Michal Sadowski,
Abstract:
In this session let us find about (technical overview)what are the foundations and design goals of Azure CosmosDB. There are many benefits which will fit for web, mobile and globally distributed applications that need elastic scaling, high availability with a predictable performance which can elevate ease of development with NoSQL capabilities that every developer/architect/DBA should know about.
Speaker(s): Satya Jayanty,
Abstract:
Solving problem with performance for SSRS using internal and external tools. SSRS logs, HTTP logs, Performance counters. impact of the solution design on SSRS performance. The best practice and recommendations for the SSRS deployment
Speaker(s): Alexander Kalenik,
Abstract:
We will start with understanding of several typical architectures of migration to Cloud Enterprise Infrastructure. Than go deeper to internal of Cosmos DB and Spark on HDInsight as main components of Fast Data Processing and Big Data Analytic. We will also cover several approaches for building scalable BI solutions in Azure Cloud using Hadoop and Kafka. The presentation has lots of demos and samples from real projects.
Speaker(s): Vitalii Bondarenko,
Abstract:
How to design secure solutions that use Azure Sql Database, Datawarehouse and Cosmos DB. Session covers security assessment and risk management of public cloud and specifically focuses on Azure Sql PaaS. That includes common network topologies with their strengths and weaknesses, blueprints and recommendations for hybrid and cloud-only solutions. In addition it talks about cloud-first, and in some cases cloud-only, tools like Vulnerability Assessment, Threat Detection, Log Analytics and OMS.
Speaker(s): Janusz Rokicki,
Abstract:
The past years have seen the explosive growth of large-scale distributed systems. This trend has changed the database world that is arguably without precedent in the history of the software industry. The result is a ompetitive database marketplace with a huge variety of platforms for us to choose from. But how do we go about making the right choices? In this talk we will discuss how we can go about choosing the right database models for your application. We will also look at how the choice of data models can help determine which technologies to include in your data tier.
Speaker(s): Mihail Mateev,
Abstract:
Prepare for a surprising, intriguing, and even controversial session. 45 years after Codd defined the Relational Model, there are still so many parts misunderstood. For sure there are points where you will be surprised and change your view, even though you might have been convinced for years that your view is the correct one, and even if you learned this at a university. Please note that this is theoretical session, using a bit of logic and a bit of mathematics.
Speaker(s): Dejan Sarka,
Abstract:
This session is Intro to AWS Redshift. Will give the overview of the architecture and important details
Speaker(s): Maryna Popova,
Abstract:
The backups are kind of an insurance policy for an administrators around the World. In case of the database administrator's work it is even more important as they take care of really important data. In this session we will see a different kinds of backups available in the Microsoft SQL Server and multiple ways to configure an automated tasks. In the end we will see how to restore the backups we have taken in different scenarios (point in time restores, partial restores, etc).
Speaker(s): Michał Bronowski,
Abstract:
You might have heard "don't use cursors, they are slow!". In this presentation, you will learn that normally you should write set-based statements instead, and I will explain why they generally are faster. But I will also look at situations where using a loop for one reason or another is preferrable, and you will learn that the best way to run a loop in most cases is exactly a cursor, provided that it is implemented properly. I will also gives some tips how you can troubleshoot performance problems with loops and what pitfalls you need to avoid.
Speaker(s): Erland Sommarskog,
Abstract:
Everything in life can be hacked… Even SQL Server… Don't believe me? See for yourself… This is a demo-driven session, suited for DBAs, developers and security consultants. Both exploits and security recommendations to avoid them will be covered. Disclaimer: No actual crimes will be committed. Please do not send agents to my house again.
Speaker(s): André Melancia,
Abstract:
Подробно рассмотрим важнейший компонент базы данных - лог транзакций. Для чего он нужен, в каких процессах участвует. Облако затрагиваемых терминов: Backup, Recovery, Shrink, VLF, Replication, AlwaysOn, CDC, Best Practices.
Speaker(s): Andriy Pogorelov,
Abstract:
Understanding SQL Server Memory Grant. All about memory grant. How it works, where comes from, why is so important to look at this part of SQL Server.
Speaker(s): Alexander Bereznev,
Abstract:
This technical presentation shows how to manipulate data with versioning switched off, what to consider when building queries referencing multiple temporal Tables and building views.
Speaker(s): Reinhard Flügel,
Abstract:
До 2016 версії Microsoft практично не вносив кардинальних змін в оптимізатор запитів. Таким чином движок з 7 версії (1988 рік) використовувавя з косметичними змінами без малого 20 років. В 2016 версії були анансовані певні напрямки змін, котрі повноцінно запрацювали в 2017 версії. Це Batch Mode Adaptive Query Processing, Query Store Automatic Query Tunig. Ці зміни і будуть розглянуті в презентації.
Speaker(s): Andrii Zrobok,
Abstract:
Moving your data warehouse to the cloud? In this session we will go through the consideration and components for data warehousing in the cloud and how these are used and integrated - and when to use which services when looking at: - Data movement/migration - Data storage - Transformation - Scheduling - Deployment approach and methods Second part of the session will focus on the differences and benefits of different approaches ( On-premises, IaaS, PaaS) the following perspectives to undertand and consider the right approach: - Pricing - Scalability - Flexibility - Strategic considerations
Speaker(s): Bent Pedersen,
Abstract:
Migrating existing BI workloads to Cloud is not an easy task. IaaS, PaaS, networking, security - this can be overwhelming. During the session I will describe some of learnings from own real-world experiences, design mistakes and how to avoid them. Hopefully they will be helpful in your own journey from on-prem servers to Azure Analysis Services and Data Factory world!
Speaker(s): Wlodek Bielski,
Abstract:
Azure Data Factory v2 is the new version of ADF. This version has the power of the first version and is more flexibility and new opportunities. First, we can use SSIS packages in our data factory, second, we have more opportunities for security our data and etc. If you want to know more just come to my session and I'll speak you about it
Speaker(s): Eugene Polonichko,
This is a list of speakers from the XML Guidebook records. The details and URLs were valid at the time of the event.
LinkedIn: https://www.linkedin.com/in/alexander-bereznev-84ab18128/
Contact: https://www.youtube.com/channel/UCDO8HyTKkg5zPiLsMEfeCMA/videos
I am working at Microsoft more that 7 years. My main focus is SQL Server tuning, query performance and disaster recovery.
LinkedIn: https://www.linkedin.com/in/jrokicki/
Contact: https://www.datasic.com/
Microsoft Data Platform Expert and certified Azure Solutions Architect with over 12 years’ experience working in the City of London in the Financial Services Industry (retail and investment banking, multi-asset class trading systems). He has passion for secure, high-performance, maintainable data-driven applications that can be deployed with confidence on-premises and in-cloud. With educational background in intelligent sensor networks and machine learning he is always in search of automation and optimisation opportunities. Has presented at SqlBits, PASS Summit, SqlDay and multiple Sql Saturday events (Tel-Aviv, Kiev, Paris, Tallinn, Bonn, Bratislava, Goteborg, Kharkiv, Bucharest, Sofia, Ljubljana) and user groups.
LinkedIn: https://www.linkedin.com/in/markus-ehrenmueller/
Contact: http://www.savorydata.com
Markus Ehrenmueller-Jensen, as the founder of Savory Data, has a long history of providing customer solutions in the areas of data engineering, data science, and Business Intelligence. He is a certified software engineer, a graduated business educator, and professor of Databases Project Management at HTL Leonding, and is certified as an MCSE MCT. He is a published author and writes articles for well-known journals. He co-founded PASS Austria and organizes SQLSaturdays in Austria. Markus is a founding member of Power BI Usergroup Austria. Since 2017 Markus was awarded as an Microsoft Data Platform MVP.
LinkedIn: http://ca.linkedin.com/in/edwinmsarmiento
Contact: http://www.EdwinMSarmiento.com
Edwin M Sarmiento is the Managing Director of 15C, a consulting and training company that specializes in designing, implementing and supporting SQL Server infrastructures. He is a 12-year former Microsoft Data Platform MVP and Microsoft Certified Master from Ottawa, Canada (but he’s originally from the Philippines) specializing in high availability, disaster recovery and system infrastructures running on the Microsoft server technology stack. His background in Unix has taken him to the world of DevOps and Docker to containerize SQL Server. He is very passionate about technology but has interests in music, professional and organizational development, leadership and management matters when not working with databases.
LinkedIn: https://www.linkedin.com/in/wlodekbielski
Wlodek Bielski is an experienced BI architect and consultant, based in Warsaw. He gained most of his experience in data warehousing and BI while working for large international customers, mainly in FMCG and E-Commerce sectors. Wlodek closely follows the latest developments in Advanced Analytics, including Cloud-based BI and Data Science. Wlodek holds his Master’s degree in Computer Science from University of Wroclaw.
LinkedIn: https://dk.linkedin.com/in/bentnissenpedersen
Contact: http://www.biblog.eu
Bent is a Data Platform MVP and working as Senior Business Analytics Architect at Kapacity A/S, where he have been working with enterprise customers on solutions with SSAS Tabular, SQL Server and in general Azure Data Platform services for the last years. During the past years, he concentrated on working with architecturing, devOps, Automation, testing and simplifying development processes for the Azure Data Platform.
Contact: http://www.sommarskog.se
Erland Sommarskog is an independent consultant based in Stockholm, working with SQL Server since 1991. He was first awarded SQL Server MVP in 2001, and has been re-awarded every year since. His focus is on systems development with the SQL Server Database Engine and his passion is to help people to write better SQL Server applications.
LinkedIn: http://www.linkedin.com/pub/mihail-mateev/1/6b3/4b1
Contact: https://mmateev.wordpress.com/
Mihail Mateev is a technical consultant, community enthusiast, PASS Regional Mentor for CEE, chapter lead, Microsoft Azure MVP, Microsoft Regional Director. He works as a Senior Solutions Architect at EPAM Systems, focused on Data Platform, IoT and cloud related solutions. He also worked many years like a Technical evangelist in the Infragistics. Last years Mihail was focused on various areas related to technology Microsoft: Data Platform, Visual Studio, ASP.Net, Windows client apps, Data Platform, and Microsoft Azure. Michael also has a PhD in cloud computing area. He is a university lecturer on Smart Homes and Smart Energy IoT Solutions.
LinkedIn: ?https://ro.linkedin.com/in/catalingheorghiu?
Contact: http://ronua.ro/author/catalin/
Catalin Gheorghiu is a solution architect from Romania. He has more than 15 years of experience in developing solutions, especially on Microsoft technologies in very demanding environments. Is contributing articles and blogs to several user groups (MrSmersh), lecturing all over Romania and abroad, is also RONUA Timisoara (PASS Chapter) user group leader. Since 2011, every year he was awarded the Microsoft MVP Award.
LinkedIn: https://www.linkedin.com/in/slunyakin
Contact: https://slunyakin.wordpress.com
Sergiy Lunyakin (MCSA, MCSE, MCTS) is a Big Data Architect at SoftServe, Inc. He has extensive experience in designing and developing Big Data Analytics, Data Warehouse, and BI solutions, using both on-premises and cloud products. In 2016, Sergiy became Microsoft Data Platform MVP and has since maintained his MVP status. Sharing knowledge is another one of his passions. He regularly speaks at international conferences such as SQLSaturday, SQLDay, SQLNexus, and SQLBits. He also runs the Lviv SQL Server User Group in Ukraine and organizes SQLSaturday Lviv.
Started as an application developer in the early 90’s using C++, Access and SQL-Server. Since around 2010 focusing on Database Development mainly SQL-Server. Holding several Microsoft certifications such as: MCSE Data Platform, Business Intelligence and Data Management and Analytics (Charter).
I've been designing data-centric systems for last 20 years and have gained huge experience in developing BI, AI and Big Data solutions. For the last 5 years I've mostly been focused on enterprise platform designing and implementing different innovative approaches for Fast Data Processing. At the moment I'm responsible for building Processional Services in Cloud Solutions for Enterprise Customers.
LinkedIn: https://uk.linkedin.com/sqlmaster
Contact: http://www.sqlserver-qa.net
My experience surrounded with high focus on the data platform with a track record of defining strategy, designing and delivering digital transformation migrations with major enhancements to current working methods. Worked in a capacity of Head of Data Engineering, Enterprise Data Architect and Solutions Key career accomplishment recognition as an industry expert technical excellence from the Microsoft as Data Platform Most Valuable Professional (MVP) recognition since the year 2006 (13 years as MVP and counting), which recognizes exceptional technical community leaders worldwide who actively deliver, present share their extraordinary contributions, high quality, and real-world expertise. Twitter pod (http://twitter.com/sqlmast
LinkedIn: https://www.linkedin.com/in/azrobok/
25+ years of experience in database development: development data-centric applications from scratch, support of legacy databases/applications, data migration tasks, performance tuning, consulting, database trainer. I have experience with wide range of databases such as FoxPro for DOS (Fox Software), MS SQL Server (started from version 6.5) , Oracle, Sybase ASE, MySQL, PostgreSQL. Co-Leader of PASS Local Chapter in Lviv. Speaker at PASS SQLSaturday conferences (since 2013); PASS Lviv/Vinnitsa/Virtual SQL Server User Group, EPAM IT Week (2015-2017), AIBig Data Day 2019.
Contact: http://leopard.in.ua
Ruby on Rails разработчик и Linux администратор в компании Railsware. Является автором таких продуктов как: PopCornUA, MongodbLogger, SmtRails, PIRO, Webp-ffi, Zopfli-ffi и многих других. Алексей является автором открытого учебного пособия по PostgreSQL на русском языке и по Chef на английском языке. Активный докладчик в различных IT конференциях.
LinkedIn: https://pl.linkedin.com/mikeybronowski
Data enthusiast with mathematics background in relation with SQL Server for over 10 years. Works as a database administrator (Microsoft SQL Server) responsible for environments upgrades and migrations. Holds certificates MCP, MCSE Data Platform. The Data Community (polish chapter of PASS Chapter) active member and attendee of various data conferences. Sometimes teaches math and Microsoft Excel. When not working or teaching learns new things. Italian calcio fan and traveler.
LinkedIn: http://LinkedIn.COM/in/AndreMelancia
Contact: http://Andy.PT
Owner / Principal Consultant at LunarCat.PT Microsoft Certified Trainer (MCT) focusing on SQL Server, Azure, IoT and Security. 19+ years' fun developing information and multimedia systems, DBA, project and IT management. Data Community Portugal, IT Pro Portugal and PowerShell Portugal communities organiser. IPv6 Portugal, DNSSec Portugal and Windows Development Portugal online communities moderator. Actively volunteering, organising, speaking or just participating at community meetings and events around the world. Proud uncle and food devouring expert, with dangerous рuϧϧy cat as companion. Go to http://Andy.PT and you'll know the same as the NSA...
LinkedIn: https://www.linkedin.com/in/jose-manuel-jurado-diaz-5a586014/
José Manuel Jurado currently works as SQL Escalation Engineer and Subject Matter Expert in Azure SQL Database at Microsoft Spain. With over 20+ years of experience in SQL Server environments (administration and database development), he is a speaker for internal events at Microsoft and for public events such as SQLSaturday, SQL Nexus, SQLBits, Pass Summit, SQL Server Konferenze, TechReady, DotNetConference, and Azure BootCamp. In the past, he worked as Project Manager for large global retail company for more than 10 years developing projects using different Microsoft Technologies.
LinkedIn: https://ua.linkedin.com/in/pogorelovandrey
I have been dealing with database administration and development for more than 16 years. Started from SQL Server 2000 - Active member of Data Platform community - Organizer of SQLSaturday Kharkiv - Speaker at various Data Platform related events - I possess Microsoft certificates: MCDBA, MCITP, MCSA.
Contact: http://blogs.solidq.com/dsarka/Home.aspx
Dejan Sarka, MCT and Data Platform MVP, is an independent trainer and consultant that focuses on development of database and business intelligence applications. Besides projects, he spends about half of his time on training and mentoring. He is the founder of the Slovenian SQL Server and .NET Users Group. Dejan Sarka is the main author or co-author of eighteen books about databases and SQL Server. Dejan Sarka has also developed many courses and seminars for Microsoft, Radacad, SolidQ, and Pluralsight.
LinkedIn: https://www.linkedin.com/in/janmulkens
Contact: http://www.janmulkens.be
Jan Mulkens is a Microsoft MVP in AI, a Solution Expert at Ordina Belgium, and a Microsoft Data Platform BI Consultant. In his spare time, he is a speaker at conferences and user groups in Europe and he organizes two user groups and a conference in Belgium. Power BI Days conference (www.powerbidays.com), Belgium Microsoft Advanced Analytics User Group (bit.ly/msaaug), and Flemish Power BI User Group (meetup.powerbibelgium.com).
I am a Big Data Engineer in a BI team. I have around 4 years of professional expertise in the Information Technologies industry, mainly all around data Engineering and Data Warehousing. I am working on my 3rd BI Project now. All of them are in different business areas and are using different technologies. What is common between them is the willingness to find the most proper development methodology as it is not a canonical development team and no development methodology works "out of the box" . In my talk I would like to share my experience in this area.
LinkedIn: https://www.linkedin.com/in/alexander-kalenik-898714128/
Contact: http://www.datainternals.ru
Senior field engineer in Microsoft. Working 12 years.
LinkedIn: https://www.linkedin.com/in/eugenepolonichko/
Contact: https://msolapblog.wordpress.com/
Leader of PASS Local Chapter in Donetsk (Ukraine). I work as DWH/BI architect. Responsible for designing and developing Data Warehouse and BI solutions with using Microsoft BI Stack products.
LinkedIn: http://www.linkedin.com/profile/view?id=270775013amp;trk=tab_pro
Contact: http://www.sqlmaster.de
Uwe Ricken is working with IT systems since the 90’s. The primary passion for developments with Microsoft SQL Server expanded in 2007 with his engagement as a DBA for Deutsche Bank AG in Frankfurt am Main. After 6 years of operational experiences as a DBA and over 14 years as a developer of complex database models he achieved the “Microsoft Certified Master – SQL Server 2008” certification which “was” the highest technical certification. In the same year he earned his first award as a Data Platform MVP for his support to the Microsoft SQL Server community in Germany and Europe. Uwe Ricken is a speaker on many international conferences and events and preferred topics are “Database Internals”, “Indexing” and “Development”.
LinkedIn: https://pl.linkedin.com/pub/michal-sadowski/4/b33/717
Contact: https://sqlplayer.net/michal-sadowski
Senior Database Platform Engineer, leader of Krakow chapter of Data Community Krakow (former Polish SQL Server User Group) - PASS Chapter. With more than 10 years of experience in Microsoft technology, helps in advisory for performance optimization on database and application levels. Active speaker on SQL Server related events like SQLSaturday, SQLDay, MCT Global Summit etc. Holds many Microsoft certificates including MCSE: Data Platform, MCSA: SQL Server 2012/2014/2016, MCSA: Windows Server 2008/2012/2016 and MCT.
The following is a list of sponsors that helped fund the event.


Welcome to the experiment!
This is a general template for an html experiment. This is normally where you would display the instructions.
For this demo, your task is to identify the letter you see on the screen using the keyboard.
Press the "start" button to begin the first trial.


---
layout: post
title: Useful Software Metrics
tags:
- Application Lifecycle Management
- Software Configuration Management
- Software Development
status: publish
type: post
published: true
meta: {}
---
All decisions should be fact based and in software this presents a problem because facts are often elusive. The answer is of course to use metrics; however I learnt in college that information must be:
The Agile methodologies promote metrics as an important part of the planning and estimating process. However software creation and testing is only part of the process. We need metrics that address the whole of Application Lifecycle Management (ALM), which is a daunting task because of the potentially large amount of information and scope implied.
However by the simple process of:
- Using a ticket management and capturing all issues, not matter where in our lifecycle they occur
- Following a defined process, or processes (usually one process does not fit all needs), to address our issues and using our ticket system to track the process.
we can capture some valuable information which we can use in a variety of simple ways to obtain metrics.
So what are useful ALM metrics? Here are some example suggestions.
- Rework rate and costs -- by documenting each issue via the ticket system we can get some idea of how much we are spending on rework. In particular we can capture information to tell us:
- Where we are finding issues (in UAT, Regression or production). This may tell us that specific parts of our processes need attention (e.g. UAT or Unit Testing)
- Which sub-systems require most rework. This might imply that some parts of the system under discussions are fragile and need to be re-architected
- Classification of root causes (e.g. Poor requirements/user stories, poor unit testing, etc)
- Process instrumentation. By looking at the amount of time spent in each process we can find efficiencies and cost savings
- Trend analysis, which allows us to spot potential problems before they become too large and test our assumptions about where we should deploy our effort. It is possible to trend all sorts of data, provided that the information is initially captured in our system (e.g. Severity, cost to fix, time to fix, business feature impacted, time to test etc.)
However the core principal is that it should be simple and useful. Also note that as the lifecycle progresses, and remember we are also talking beyond the lifetime of a single development project, which metric is useful will change and it will be necessary to re-tool the metric reports. Make sure you capture that in a ticket as well!
And finally remember, "You get what you measure"
powered by performancing firefox


The Accidentals Show
As I’ve mentioned before, I’m a pretty big fan of music. I link my Spotify account to Last.fm for all of the juicy statistics, and I feel like I’ve been a complete loser if my weekly report doesn’t have at least 24 hours of listening on it. One of the things I’ve never really done much of, though, is live music. I’ve wanted to start attending more events, though a bit of social anxiety can make that challenging (though it helps that many of the shows I’d want to go to are at bars… drinking making social anxiety more tolerable.)
The final push, though, came a few weeks ago when I got an email from Spotify about an upcoming show. I’ve received a few of these emails before where Spotify finds upcoming shows (relatively) close to me and recommends them. While the other shows I’ve seen before weren’t particularly enticing, the most recent email was for a show by The Accidentals. Despite the fact that they’ve been together for quite a long time, I never discovered them until late last year when a friend and I were trying to find a bunch of songs to add to our BlizzCon-themed playlist we were creating in preparation for our trip. I stumbled across their track Earthbound and immediately fell in love. Since then I’ve been through their entire library more times than I can count.
My friend graciously agreed to go with me, so yesterday we got to experience The Accidentals live. The show was nothing short of incredible; I feel like I should’ve paid more for the tickets given how amazing the experience was. All three members of the band are such talented and passionate people, playing an insane variety of instruments and doing songs in a swath of different styles.
While they didn’t perform Earthbound, I was stoked for them to play both Heavy Flag and Crow’s Feet, along with a completely acoustic version of Sixth Street at the front of the stage. I also got to experience some brand new songs they’re trying out in preparation for the TWO (!) albums they’re planning to release this year. The first will be a live album coming out in a few months, and the second later in the year will be a fully produced studio album. The show was definitely the high point of my 2019 thus far. Any music fans who happen to get the chance to see The Accidentals live should definitely jump at the opportunity and support some amazing live music.


© 2021 Lightstep Inc
© 2018 Google Inc
(Source Code)
This website is hosted for demo purposes only. It is not an
actual shop. This is not an official Lightstep project.
{{ if $.session_id }}session-id: {{ $.session_id }}{{end}}
{{ if $.request_id }}request-id: {{ $.request_id }}{{end}}


|
Boost.Nowide
|
This namespace includes implementation of the standard library functios such that they accept UTF-8 strings on Windows. On other platforms it is just an alias of std namespace (i.e. not on Windows) More...
Classes | |
| class | args |
| args is a class that fixes standard main() function arguments and changes them to UTF-8 under Microsoft Windows. More... | |
| class | basic_filebuf |
| This forward declaration defined the basic_filebuf type. More... | |
| class | basic_filebuf< char > |
| This is implementation of std::filebuf. More... | |
| class | basic_ifstream |
| Same as std::basic_ifstream<char> but accepts UTF-8 strings under Windows. More... | |
| class | basic_ofstream |
| Same as std::basic_ofstream<char> but accepts UTF-8 strings under Windows. More... | |
| class | basic_fstream |
| Same as std::basic_fstream<char> but accepts UTF-8 strings under Windows. More... | |
| class | basic_stackstring |
| A class that allows to create a temporary wide or narrow UTF strings from wide or narrow UTF source. More... | |
Typedefs | |
| typedef basic_filebuf< char > | filebuf |
| Convinience typedef. More... | |
| typedef basic_ifstream< char > | ifstream |
| typedef basic_ofstream< char > | ofstream |
| typedef basic_fstream< char > | fstream |
| typedef basic_stackstring < wchar_t, char, 256 > | wstackstring |
| typedef basic_stackstring < char, wchar_t, 256 > | stackstring |
| typedef basic_stackstring < wchar_t, char, 16 > | wshort_stackstring |
| typedef basic_stackstring < char, wchar_t, 16 > | short_stackstring |
Functions | |
| char * | getenv (char const *key) |
| UTF-8 aware getenv. Returns 0 if the variable is not set. More... | |
| int | setenv (char const *key, char const *value, int override) |
| UTF-8 aware setenv, key - the variable name, value is a new UTF-8 value,. More... | |
| int | unsetenv (char const *key) |
| Remove enviroment variable key. | |
| int | putenv (char *string) |
| UTF-8 aware putenv implementation, expects string in format KEY=VALUE. | |
| template<typename CharOut , typename CharIn > | |
| CharOut * | basic_convert (CharOut *buffer, size_t buffer_size, CharIn const *source_begin, CharIn const *source_end) |
| Template function that converts a buffer of UTF sequence in range [source_begin,source_end) to the output buffer of size buffer_size. More... | |
| char * | narrow (char *output, size_t output_size, wchar_t const *source) |
| char * | narrow (char *output, size_t output_size, wchar_t const *begin, wchar_t const *end) |
| wchar_t * | widen (wchar_t *output, size_t output_size, char const *source) |
| wchar_t * | widen (wchar_t *output, size_t output_size, char const *begin, char const *end) |
| std::string | narrow (wchar_t const *s) |
| std::wstring | widen (char const *s) |
| std::string | narrow (std::wstring const &s) |
| std::wstring | widen (std::string const &s) |
| FILE * | freopen (char const *file_name, char const *mode, FILE *stream) |
| Same as freopen but file_name and mode are UTF-8 strings. More... | |
| FILE * | fopen (char const *file_name, char const *mode) |
| Same as fopen but file_name and mode are UTF-8 strings. More... | |
| int | rename (char const *old_name, char const *new_name) |
| Same as rename but old_name and new_name are UTF-8 strings. More... | |
| int | remove (char const *name) |
| Same as rename but name is UTF-8 string. More... | |
| int | system (char const *cmd) |
Variables | |
| details::winconsole_istream | cin |
| Same as std::cin, but uses UTF-8. More... | |
| details::winconsole_ostream | cout |
| Same as std::cout, but uses UTF-8. More... | |
| details::winconsole_ostream | cerr |
| Same as std::cerr, but uses UTF-8. More... | |
| details::winconsole_ostream | clog |
| Same as std::clog, but uses UTF-8. More... | |
This namespace includes implementation of the standard library functios such that they accept UTF-8 strings on Windows. On other platforms it is just an alias of std namespace (i.e. not on Windows)
| typedef basic_filebuf< char > boost::nowide::filebuf |
Convinience typedef.
Same as std::filebuf but accepts UTF-8 strings under Windows.
| typedef basic_fstream<char> boost::nowide::fstream |
Same as std::fstream but accepts UTF-8 strings under Windows
| typedef basic_ifstream<char> boost::nowide::ifstream |
Same as std::ifstream but accepts UTF-8 strings under Windows
| typedef basic_ofstream<char> boost::nowide::ofstream |
Same as std::ofstream but accepts UTF-8 strings under Windows
| typedef basic_stackstring<char,wchar_t,16> boost::nowide::short_stackstring |
Convinience typedef
| typedef basic_stackstring<char,wchar_t,256> boost::nowide::stackstring |
Convinience typedef
| typedef basic_stackstring<wchar_t,char,16> boost::nowide::wshort_stackstring |
Convinience typedef
| typedef basic_stackstring<wchar_t,char,256> boost::nowide::wstackstring |
Convinience typedef
| CharOut* boost::nowide::basic_convert | ( | CharOut * | buffer, |
| size_t | buffer_size, | ||
| CharIn const * | source_begin, | ||
| CharIn const * | source_end | ||
| ) |
Template function that converts a buffer of UTF sequence in range [source_begin,source_end) to the output buffer of size buffer_size.
In case of success a NUL terminated string returned (buffer), otherwise 0 is returned.
If there is not enough room in the buffer or the source sequence contains invalid UTF 0 is returned, and the contend of the buffer is undefined.
|
inline |
Same as fopen but file_name and mode are UTF-8 strings.
In invalid UTF-8 given, NULL is returned and errno is set to EINVAL
|
inline |
Same as freopen but file_name and mode are UTF-8 strings.
In invalid UTF-8 given, NULL is returned and errno is set to EINVAL
|
inline |
UTF-8 aware getenv. Returns 0 if the variable is not set.
This function is not thread safe or reenterable as defined by the standard library
|
inline |
Convert NUL terminated UTF source string to NUL terminated output string of size at most output_size (including NUL)
In case of surcess output is returned, if the input sequence is illegal, or there is not enough room NULL is returned
|
inline |
Convert UTF text in range [begin,end) to NUL terminated output string of size at most output_size (including NUL)
In case of surcess output is returned, if the input sequence is illegal, or there is not enough room NULL is returned
|
inline |
Convert between Wide - UTF-16/32 string and UTF-8 string.
boost::locale::conv::conversion_error is thrown in a case of a error
|
inline |
Convert between Wide - UTF-16/32 string and UTF-8 string
boost::locale::conv::conversion_error is thrown in a case of a error
|
inline |
Same as rename but name is UTF-8 string.
In invalid UTF-8 given, -1 is returned and errno is set to EINVAL
|
inline |
Same as rename but old_name and new_name are UTF-8 strings.
In invalid UTF-8 given, -1 is returned and errno is set to EINVAL
|
inline |
UTF-8 aware setenv, key - the variable name, value is a new UTF-8 value,.
if override is not 0, that the old value is always overridded, otherwise, if the variable exists it remains unchanged
|
inline |
Same as std::system but cmd is UTF-8.
If the input is not valid UTF-8, -1 returned and errno set to EINVAL
|
inline |
Convert NUL terminated UTF source string to NUL terminated output string of size at most output_size (including NUL)
In case of surcess output is returned, if the input sequence is illegal, or there is not enough room NULL is returned
|
inline |
Convert UTF text in range [begin,end) to NUL terminated output string of size at most output_size (including NUL)
In case of surcess output is returned, if the input sequence is illegal, or there is not enough room NULL is returned
|
inline |
Convert between UTF-8 and UTF-16 string, implemented only on Windows platform
boost::locale::conv::conversion_error is thrown in a case of a error
|
inline |
Convert between UTF-8 and UTF-16 string, implemented only on Windows platform
boost::locale::conv::conversion_error is thrown in a case of a error
| details::winconsole_ostream boost::nowide::cerr |
Same as std::cerr, but uses UTF-8.
Note, the stream is not synchronized with stdio and not affected by std::ios::sync_with_stdio
| details::winconsole_istream boost::nowide::cin |
Same as std::cin, but uses UTF-8.
Note, the stream is not synchronized with stdio and not affected by std::ios::sync_with_stdio
| details::winconsole_ostream boost::nowide::clog |
Same as std::clog, but uses UTF-8.
Note, the stream is not synchronized with stdio and not affected by std::ios::sync_with_stdio
| details::winconsole_ostream boost::nowide::cout |
Same as std::cout, but uses UTF-8.
Note, the stream is not synchronized with stdio and not affected by std::ios::sync_with_stdio


A small seaside town, approximately 65NM east of Helsinki. It is well known for its fortifications and the wooden houses in the Old Town.
Position 60°27.7'N, 26°14.7'E.
The town is at the head of a long narrow inlet and has a guest harbour to the SE of the town centre. This is an excellent marina with all facilities including fuel.
There is a boatyard in Valko, located on the West Bank of the Loviisaviken, some 2.8nm South of Loviisa.
Last updated September 2012.


From the first time I heard about EDA, I was really inspired to get involved. Not just to become a developer, but to be a part of a supportive and socially radical community.
What's your take on the DBC/EDA experience? DBC and EDA seem to teach people something much bigger than just learning to code, and the onus is on us to learn, grow and develop what that is… Whatever we put in, is what that will become. its like we’re working on things in a completely holistic way, its a lifestyle, a cult, perhaps…? :D
What are your impressions?
I love the emphasis both EDA and DBC have on “soft skills” and core values being what determines your success in the program. I.e empathy, kindness and passion, is what I really love about it so far and what is most fundamentally important to me in life. So far everyone in the cohort has been really welcoming and helpful, this has really helped with the remote learning process and adjusting to the fast paced learning!
How do you see yourself engaging with this type of culture?
I have created the same environment for myself through my friends and family, we’re all very helpful and communicative and non judgemental, and I love having the knowledge that I can learn in same environment as this. Having EDA ethos of being kind, supportive, progressive and inclusive in our cohort. I mean really - no one wants to try and learn alongside dicks? Its not very productive…
Have your expectations of EDA changed? If so, how?
My expectations of EDA have changed a bit, in that I have realised that it is much more self/cohort directed than I thought. I guess I wasn’t sure of how the curriculum was going to be delivered, and I suppose I am used to the traditional educational methods of having one person telling us all what to do, and only having one way of doing it right. I’ve realised how much this is all about communicating when you’re vulnerable, or having trouble understanding the tasks, or feeling that you’re in way over your head, reaching out to our cohort for help and also in helping others, and spending the time to work out problems through our available resources, things become achievable. I’ve learnt over the past week that With EDA its all about working it through with the help of your cohort, you are not expected to understand something right away, you’re not dumb for not knowing something, and you are encouraged to ask questions and reach out to your peers for support!
Are you excited to participate in this kind of learning environment? Does it make you nervous?
I am excited to learn in this environment, I think its a really great way to learn - I.e all working on building this together. I do however have some apprehensions -I worry that certain barriers might make it a bit tricky for me to really feel completely comfortable I.e insecurities- about my abilities, about my learning pace, etc.. I also worry that perhaps leaning on others- for some, might be a bit too much for them and make some resentful. I also feel like some people may not be on the same page as me, same ‘vibe’ as me, or may not take so well to the environment, causing difficulties for others. I hope this is not the case!
All in all I am really looking forward to the challenges, set backs, mistakes, learning, lightbulb moments, plus personal and cohort triumphs that are about to unfold over the next 18 weeks.


Components
--Providing loose coupling ways to extend EasyCMake functions.
Just doing simple copy and paste files can add new dependency to the CMake build projects
SubDirectory
-
Subdirectory.cmake
This module is used in build hierarchical cmake project. It will be include in the
beginning of CMakeList.txt. It should be made of only add_subdirectory(...)
.
Adding all sub modules by adding a new line of add_subdirectory(...)
inside.
e.g.
add_subdirectory(QvtkUtil)
add_subdirectory(Filter)
add_subdirectory(Widget)
Find Modules
These modules would be mainly used for finding dependency and linking library.
They are included in the CMakeLists.txt before creation of the default CMake's targets.
-
FindCTK.cmake
This module is used for finding CTK and link its library.
-
FindITK.cmake
This module is used for finding ITK and link its library.
-
FindQtCoreQtWidget.cmake
This module is used for finding Qt5Core and Qt5Widget and link its library. The AUTOMOC
function of cmake will be enabled, the cmake will automatically find and moc. All *.ui files
of qt will be wrapped to generate qt's ui header. All *.qrc files of qt will be wrapped to
generate qt resource source file.
-
FindQtOpenGl.cmake
This module is used for finding Qt5OpenGl and link its library. And FindQtCoreQtWidget is the
prerequisite.
-
FindQtPrintSupport.cmake
This module is used for finding Qt5PrintSupport and link its library. And FindQtCoreQtWidget is the
prerequisite.
-
FindQtSql.cmake
This module is used for finding Qt5Sql and link its library. And FindQtCoreQtWidget is the
prerequisite.
-
FindQtXml.cmake
This module is used for finding Qt5Xml and link its library. And FindQtCoreQtWidget is the
prerequisite.
-
FindQtConcurrent.cmake
This module is used for finding Qt5Concurrent and link its library. And FindQtCoreQtWidget is the
prerequisite.
-
FindVTK.cmake
This module is used for finding VTK and its library.
Target Modules
These moudles would be mainly used for creating a new target whether it dependens on others.
Thery are included in he CMakeLists.txt after the creation of the default CMake's targets.
-
TargetConfigureFile.cmake
This module is used for configurating cmake's configure file when doing exporting. This is
usually needed with TargetInstall.cmake
-
TargetDoxygen.cmake
This module is used for creating a new target using doxygen to build documentation while
Doxyfile.in must be provided.
-
TargetInstall.cmake
This module is used for configurating cmake install target. The install target could export
cmake configuration, shared libraries, static libraries and header files, which is needed to
re-use this cmake package.
-
TargetOtherResource.cmake
This module is used for creating a new target which it copys some necessary resources (such as
some STLs, some example images..) to the folder where exectuables are placed. The PATH set in
PROJECT_RESOURCE
must be a folder path. So it can be copied recursively.
-
TargetQtLinguistTools.cmake
This module is used for creating a new target which handles qt's *.ts files (Qt translation). This
target will try to find QtLinguistTools. The module could generate correct *.qm file for the exectuable
and copy it to the executable path.
-
TargetQtTest.cmake
This module is used for creating a new target about doing qtest and ctest. It will scan through the path
${PROJECT_SOURCE_DIR>/Testing/*.c*
and create exectuable for each file. Each executable will
be added to ctest as well. Each *.c* file is suggested to written in qtest format but it is not
compulsory. Since qtest need qobject, this target will append Qt5Core dependency.


Primer on Dependency Injection
In a system constructed in a object oriented fashion, we usually have two types of objects: Data objects, where stores the data and Service objects, which manipulates the data. For example, if it is a database backed application it usually has some object that talks to the database, which is the Service object.
Say, we have 3 service objects
class ServiceA(object):
def do_work():
pass
class ServiceB(object):
def do_work():
pass
class ServiceC(object):
def do_work():
pass
Now say, that ServiceB need to use ServiceA, it need to get to ServiceA somehow. One of the antipatterns people used to use is to make ServiceA a singleton, then you have something like this:
class ServiceA(object):
def do_work():
pass
@classmethod
def get_instance(cls):
# blah blah
class ServiceB(object):
def do_work():
ServiceA.get_instance().do_work()
class ServiceC(object):
def do_work():
pass
Dependency Injection basically says, don't do that shit!! Using singleton making testing of ServiceB a pain, and makes it impossible to let ServiceB work with another service similar to A. If ServiceB needs ServiceA, it should ask it in the constructor, like this:
class ServiceA(object):
def do_work(self):
pass
@classmethod
def get_instance(cls):
# blah blah
class ServiceB(object):
def __init__(self, service_a):
self.service_a = service_a
def do_work(self):
self.service_a.do_work()
class ServiceC(object):
def do_work(self):
pass
This (pretty long) Google talk explains this idea very well.
Sometimes the term Dependency Injection is sometimes refers a dependency injection framework, like Spring and Guice for Java, all that those framework does it to save you from typing out the constructors of the services. Here we will only talk it as the idea of asking dependencies explicitly, usually in constructors.
Dependency injection in web frameworks
Usually we instantiate service objects in the program's entry point, like the main function. However, most web frameworks there is no such entry point.
Here is a extremely simple wsgi app written with bottle.
import bottle
app = Bottle()
@app.get('/')
def index():
return 'hello world'
if __name__ == '__main__':
bottle.run(app)
Now, index needs to use ServiceA, ServiceB, and ServiceC. Where do you put them? Usual approaches are using globals, annotations or closures.
As globals
import bottle
app = Bottle()
a = ServiceA()
b = ServiceB(service_a=a)
c = ServiceC(b, a)
@app.get('/')
def index():
# do stuff with a,b,c
return 'hello world'
if __name__ == '__main__':
bottle.run(app)
Note that here a, b, c are effectively singletons, but that does not violate principles of dependency injection because inside of ServiceB does not read ServiceA from the global, but from its member variable. That makes us free to pass in a different object for ServiceA when needed.
The advantage of thise approach is the simplicity. We can also move all the instantiation to a config.py file and every other files just import the services it needs. However, now index is really hard to test. We cannot test it independently of ServiceA, ServiceB and ServiceC, and cannot mock those services out without monkey patching. We can sort of mitigate that by move most of the functionality inside some service and let the url handler just forward the call, and leave those handlers untested.
Decorators
import bottle
app = Bottle()
a = ServiceA()
b = ServiceB(service_a=a)
c = ServiceC(b, a)
@app.get('/')
@uses_service(a,b,c)
def index(a, b, c):
# do stuff with a,b,c
return 'hello world'
if __name__ == '__main__':
bottle.run(app)
We can write a custom decorator to pass the dependent service as parameters to the needed function. This makes it look little nicer, and gives the impression that index function is not reading globals anymore. However, we cannot directly call index with custom a, b and c as the decorator call replaces the old function with a wrapped one. So it's really the same.
Of course we can test the unwrapped version by not using decorator syntax, like this
def index(a, b, c):
# do stuff with a,b,c
return 'hello world'
app.get('/')(uses_service(a,b,c)(index))
but this is plain ugly. Also, doing this for every url handler could be a pain!
Using closures
import bottle
def make_wgsi_app(a, b ,c)
app = Bottle()
@app.get('/')
@uses_service(a,b,c)
def index(a, b, c):
# do stuff with a,b,c
return 'hello world'
return app
if __name__ == '__main__':
a = ServiceA()
b = ServiceB(service_a=a)
c = ServiceC(b, a)
bottle.run(make_wgsi_app(a, b, c))
This is my favorite. It effectively put the service instantiation in the point of entry, and allows testing the wgsi app passing mocked out versions of service a b or c. Though, because make_wsgi_app returns a wsgi app instead of a function object, we need to test index through it, webtest package is a great tool to accomplish that.
Using this method, you can pass dependencies to a group of url handlers with similar dependencies as well.


| |
GAME TIMES |
|
|
(Eastern) |
|
| Week 1 |
|
|
| 4/14/2012 |
3:00 PM |
Connecticut Constitution 29 @ Rhode Island Rampage 23 |
| 4/14/2012 |
5:45 PM |
Indianapolis AlleyCats 21 @ Columbus Cranes 22 (2OT) |
| 4/14/2012 |
7:00 PM |
Detroit Mechanix 17 @ Bluegrass Revolution 19 |
| 4/14/2012 |
8:05 PM |
Buffalo Hunters 14 @ Philadelphia Spinners 26 |
| Week 2 |
|
|
| 4/21/2012 |
1:00 PM |
Rhode Island Rampage 22 @ Columbus Cranes 19 |
| 4/21/2012 |
7:30 PM |
Bluegrass Revolution 20 @ Indianapolis AlleyCats 18 |
| 4/21/2012 |
8:05 PM |
Connecticut Constitution 16 @ Philadelphia Spinners 22 |
| 4/22/2012 |
4:00 PM |
Rhode Island Rampage 26 @ Detroit Mechanix 24 |
| Week 3 |
|
|
| 4/28/2012 |
7:00 PM |
Columbus Cranes 8 @ Bluegrass Revolution 12 |
| 4/28/2012 |
7:00 PM |
Philadelphia Spinners 30 @ Rhode Island Rampage 22 |
| 4/29/2012 |
4:00 PM |
Buffalo Hunters 22 @ Detroit Mechanix 26 |
| Week 4 |
|
|
| 5/5/2012 |
1:00 PM |
Philadelphia Spinners 23 @ Connecticut Constitution 29 |
| 5/5/2012 |
3:00 PM |
Buffalo Hunters 19 @ Rhode Island Rampage 20 |
| 5/5/2012 |
7:30 PM |
Detroit Mechanix 13 @ Indianapolis AlleyCats 22 |
| 5/6/2012 |
5:45 PM |
Detroit Mechanix 20 @ Columbus Cranes 26 |
| Week 5 |
|
|
| 5/12/2012 |
1:00 PM |
Buffalo Hunters 15 @ Connecticut Constitution 30 |
| 5/12/2012 |
2:15 PM |
Rhode Island Rampage 18 @ Philadelphia Spinners 24 |
| 5/12/2012 |
5:00 PM |
Indianapolis AlleyCats 29 @ Columbus Cranes 37 |
| 5/12/2012 |
7:00 PM |
Bluegrass Revolution 19 @ Detroit Mechanix 21 |
| Week 6 |
|
|
| 5/19/2012 |
1:00 PM |
Rhode Island Rampage 20 @ Connecticut Constitution 22 |
| 5/19/2012 |
7:30 PM |
Detroit Mechanix 18 @ Indianapolis AlleyCats 20 |
| 5/20/2012 |
2:00 PM |
Rhode Island Rampage 23 @ Buffalo Hunters 21 |
| 5/20/2012 |
2:00 PM |
Indianapolis AlleyCats 19 @ Bluegrass Revolution 18 |
| Week 7 |
|
|
| 5/26/2012 |
1:00 PM |
Columbus Cranes 21 @ Connecticut Constitution 28 |
| 5/26/2012 |
3:00 PM |
Bluegrass Revolution 20 @ Rhode Island Rampage 21 |
| 5/26/2012 |
7:00 PM |
Indianapolis AlleyCats 28 @ Detroit Mechanix 21 |
| 5/27/2012 |
2:00 PM |
Bluegrass Revolution 25 @ Buffalo Hunters 24 |
| 5/27/2012 |
5:00 PM |
Columbus Cranes 20 @ Philadelphia Spinners 23 |
| Week 8 |
|
|
| 6/2/2012 |
1:00 PM |
Columbus Cranes 21 @ Detroit Mechanix 24 |
| 6/2/2012 |
5:00 PM |
Philadelphia Spinners @ Rhode Island Rampage - Postponed |
| 6/2/2012 |
6:30 PM |
Connecticut Constitution 17 @ Buffalo Hunters 13 |
| 6/2/2012 |
7:30 PM |
Bluegrass Revolution 18 @ Indianapolis AlleyCats 20 |
| Week 9 |
|
|
| 6/9/2012 |
1:00 PM |
Rhode Island Rampage 18 @ Connecticut Constitution 24 |
| 6/9/2012 |
5:00 PM |
Buffalo Hunters 16 @ Philadelphia Spinners 33 |
| Week 10 |
|
|
| 6/16/2012 |
1:00 PM |
Philadelphia Spinners 29 @ Connecticut Constitution 19 |
| 6/16/2012 |
2:00 PM |
Bluegrass Revolution 20 @ Columbus Cranes 23 |
| 6/16/2012 |
6:30 PM |
Indianapolis AlleyCats 26 @ Buffalo Hunters 21 |
| 6/17/2012 |
7:00 PM |
Indianapolis AlleyCats 21 @ Detroit Mechanix 23 |
| Week 11 |
|
|
| 6/23/2012 |
3:00 PM |
Connecticut Constitution @ Rhode Island Rampage |
| 6/23/2012 |
6:30 PM |
Philadelphia Spinners @ Buffalo Hunters |
| 6/23/2012 |
7:00 PM |
Detroit Mechanix @ Columbus Cranes |
| 6/23/2012 |
7:00 PM |
Indianapolis AlleyCats @ Bluegrass Revolution |
| 6/24/2012 |
2:00 PM |
Columbus Cranes @ Indianapolis AlleyCats
|
| 6/24/2012 |
2:00 PM |
Detroit Mechanix @ Bluegrass Revolution |
| 6/24/2012 |
3:00 PM |
Connecticut Constitution @ Philadelphia Spinners |
| Week 12 |
|
|
| 6/30/2012 |
3:00 PM |
Indianapolis AlleyCats @ Rhode Island Rampage |
| 6/30/2012 |
4:00 PM |
Detroit Mechanix @ Philadelphia Spinners |
| 6/30/2012 |
6:30 PM |
Buffalo Hunters @ Connecticut Constitution |
| 6/30/2012 |
7:00 PM |
Columbus Cranes @ Bluegrass Revolution |
| 7/1/2012 |
2:00 PM |
Rhode Island Rampage @ Buffalo Hunters |
| Week 13 |
|
|
| 7/7/2012 |
2:00 PM |
Buffalo Hunters @ Columbus Cranes |
| 7/7/2012 |
7:00 PM |
Connecticut Constitution @ Bluegrass Revolution |
| 7/8/2012 |
2:00 PM |
Connecticut Constitution @ Indianapolis AlleyCats |
| 7/8/2012 |
2:00 PM |
Philadelphia Spinners @ Buffalo Hunters |
| 7/8/2012 |
4:00 PM |
Columbus Cranes @ Detroit Mechanix |
| Week 14 |
|
|
| 7/14/2012 |
1:00 PM |
Detroit Mechanix @ Connecticut Constitution |
| 7/14/2012 |
3:00 PM |
Buffalo Hunters @ Rhode Island Rampage |
| 7/14/2012 |
7:30 PM |
Philadelphia Spinners @ Indianapolis AlleyCats |
| 7/15/2012 |
2:00 PM |
Columbus Cranes @ Indianapolis AlleyCats |
| 7/15/2012 |
2:00 PM |
Philadelphia Spinners @ Bluegrass Revolution |
| Week 15 |
|
|
| 7/21/2012 |
1:05 PM |
Rhode Island Rampage @ Philadelphia Spinners |
| 7/21/2012 |
4:00 PM |
Bluegrass Revolution @ Detroit Mechanix |
| 7/21/2012 |
6:30 PM |
Connecticut Constitution @ Buffalo Hunters |
| 7/22/2012 |
1:00 PM |
Bluegrass Revolution @ Columbus Cranes |
| PLAYOFFS |
|
|
|
7/28/2012
8/5/2012
|
TBA
TBA
|
Western division championship
Eastern division championship
|
| CHAMPIONSHIP |
|
|
| 8/11/2012 |
TBA
|
Silverdome – Pontiac, Michigan |


Survey Form
Let us know how we can improve.
*Name:
*Email:
*Age:
Which option best describes your current role?:
Please select an option
Student
Full-Time-Job
Full-Time-Learner
Prefer not to say.
Other
*How likely is that you would recommend freeCodeCamp to a friend?
Definitely
Maybe
Not Sure
What do you like most in FCC:
Please select an option
Challenges
Projects
Community
Open Source
Things that should be improved in the future (Check all that apply):
Front-end Projects
Back-end Projects
Data Visualization
Challenges
Open Source Community
Gitter help rooms
Videos
City Meetups
Wiki
Forum
Additional Courses
Any Comments & Suggestions?
Submit


Estimate generalized additive mixed models via a version of function gamm() from 'mgcv', using 'lme4' for estimation.
| Version: | 0.2-5 |
| Depends: | R (≥ 2.9.0), methods, Matrix, lme4 (≥ 0.999375-31), mgcv (≥ 1.7-23) |
| Published: | 2017-07-25 |
| Author: | Simon Wood, Fabian Scheipl |
| Maintainer: | Simon Wood <simon.wood at r-project.org> |
| License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| NeedsCompilation: | no |
| Materials: | ChangeLog |
| CRAN checks: | gamm4 results |
| Reference manual: | gamm4.pdf |
| Package source: | gamm4_0.2-5.tar.gz |
| Windows binaries: | r-devel: gamm4_0.2-5.zip, r-release: gamm4_0.2-5.zip, r-oldrel: gamm4_0.2-5.zip |
| OS X binaries: | r-release: gamm4_0.2-5.tgz, r-oldrel: gamm4_0.2-5.tgz |
| Old sources: | gamm4 archive |
| Reverse depends: | vows |
| Reverse imports: | gamm4.test, refund, voxel |
| Reverse suggests: | cAIC4, lme4, MuMIn |
Please use the canonical form https://CRAN.R-project.org/package=gamm4 to link to this page.


I am Goutam Kumar Mondal. I am a simple , creative, enthusiastic and fun-loving person. I always like to create something on my own which is helpful for others.
I have vast experience in HTML, CSS and on java. I have completed many projects on different topics
Hours Worked
Cups of Coffee
Happy Clients
Projects Finished
Madhyamgram
7980214758
goutam3737@gmail.com


1
Interview Simulation, Presentation about carrier in Finance in France
Networking, sharing experiences between VnFinance community members
Risk Management & FRTB (Fundamental Review of Trading Book).


background-color: #006DAE class: middle center hide-slide-number
  These slides are viewed best by Chrome and occasionally need to be refreshed if elements did not load properly. See here for PDF .

 .white[Press the **right arrow** to progress to the next slide!] --- background-image: url(images/bg-week11.jpg) background-size: cover class: hide-slide-number split-70 title-slide count: false .column.shade_black[.content[
 # .monash-blue.outline-text[ETC5512: Wild Caught Data]
Week 11

Sports data and web scraping
 .bottom_abs.width100[ Lecturer: *Dianne Cook* Department of Econometrics and Business Statistics

<EMAIL_ADDRESS>
 ] ]]

 <svg class="clip-svg absolute"> <defs> <clipPath id="swipe__clip-path" clipPathUnits="objectBoundingBox"> <polygon points="0.5745 0, 0.5 0.33, 0.42 0, 0 0, 0 1, 0.27 1, 0.27 0.59, 0.37 1, 0.634 1, 0.736 0.59, 0.736 1, 1 1, 1 0, 0.5745 0" /> </clipPath> </defs> </svg>

 .footnote[Image source: https://www.welcometocountry.org/digital-genocide-ash-bartys-race-repeatedly-removed/] --- class: motivator two-column # What about Barty! .pull-left[ <img width="512" alt="Barty RG19 (9)<PHONE_NUMBER>2)" src="https://upload.wikimedia.org/wikipedia/commons/thumb/9/99/Barty_RG19_%289%29_%2848199405532%29.jpg/256px-Barty_RG19_%289%29_%2848199405532%29.jpg"> ] .pull-right[ * current ranking: 1 * singles titles: 8 * Prize Money: $17,594,569 * Win/Loss Singles: 252/94

Home-grown champion
 ] --- background-image: \url(https://cf.geekdo-images.com/camo/cf29dc3875d5d85966c87e346ce78159f2fdb412/687474703a2f2f7777772e636e732e696973632e65726e65742e696e2f7e6861726973686b2f686f62626573736b65746368322e6a7067) background-size: cover # Sports data
There's a treasure trove of data on sports, buried in web sites.
.footnote[Images source: https://boardgamegeek.com/] --- # WTA    .footnote[Source: https://www.wtatennis.com/stats] --- # html source .wider[  ] -- `html` is text, verbose, but nicely organised by tags. Web scraping allows harvesting data provided in web pages, by extracting the data components of the text. --- .font_smaller2[ ``` ## # A tibble: 22 x 4 ## Player Rank Matches Aces ## <chr> <int> <int> <int> ## 1 ASHLEIGH A. BARTY ASHLEIGH BARTY AUS 1 14 79 ## 2 KAROLINA K. PLISKOVA KAROLINA PLISKOVA CZE 3 11 76 ## 3 SOFIA S. KENIN SOFIA KENIN USA 4 18 50 ## 4 ELINA E. SVITOLINA ELINA SVITOLINA UKR 5 14 48 ## 5 KIKI K. BERTENS KIKI BERTENS NED 7 13 67 ## 6 BELINDA B. BENCIC BELINDA BENCIC SUI 8 13 46 ## 7 SERENA S. WILLIAMS SERENA WILLIAMS USA 9 8 50 ## 8 NAOMI N. OSAKA NAOMI OSAKA JPN 10 7 67 ## 9 ARYNA A. SABALENKA ARYNA SABALENKA BLR 11 15 64 ## 10 PETRA P. KVITOVA PETRA KVITOVA CZE 12 15 77 ## 11 MADISON M. KEYS MADISON KEYS USA 13 8 46 ## 12 GARBIÑE G. MUGURUZA GARBIÑE MUGURUZA ESP 16 20 122 ## 13 ELENA E. RYBAKINA ELENA RYBAKINA KAZ 17 25 146 ## 14 MARIA M. SAKKARI MARIA SAKKARI GRE 20 15 60 ## 15 ELISE E. MERTENS ELISE MERTENS BEL 23 14 46 ## # … with 7 more rows ``` ] --- class: motivator That took me about a half day to work out. - The WTA (women's tennis) web site is difficult to scrape because the table content is dynamic. There are numerous javascripts which extract and load the data. -- - The trick for a page like this is to save a local copy of the web page, and read it into R from this. Directly reading from the URL gets empty objects. -- - It's not easy to tell that a page is dynamic, and its hard to determine if its just stupid me. Need more practice. -- - ATP (men's tennis site) is much easier - its just tables, even though the reader can choose to display different tables in the page. This format is easier to automate. --- # ATP    .footnote[Source: https://www.atptour.com/en/rankings/singles] --- ```r library(rvest) library(tidyverse) url_atp <- "https://www.atptour.com/en/rankings/singles" atp_html <- read_html(url_atp) atp_rankings <- html_node(atp_html, "table") %>% html_table(fill=TRUE) ``` --- .font_smaller2[ ``` ## # A tibble: 100 x 6 ## Player Age Points `Tourn Played` `Points Dropping` `Next Best` ## <chr> <int> <chr> <int> <chr> <int> ## 1 Novak Djokovic 32 10,220 18 45 0 ## 2 Rafael Nadal 33 9,850 18 360 0 ## 3 Dominic Thiem 26 7,045 21 1,000 90 ## 4 Roger Federer 38 6,630 16 600 0 ## 5 Daniil Medvedev 24 5,890 23 45 45 ## 6 Stefanos Tsitsipas 21 4,745 26 10 90 ## 7 Alexander Zverev 22 3,630 25 45 45 ## 8 Matteo Berrettini 23 2,860 21 135 10 ## 9 Gael Monfils 33 2,860 22 180 0 ## 10 David Goffin 29 2,555 27 10 45 ## # … with 90 more rows ``` ] --- class: informative # Data will require more processing Notice the format of variables: - Points is interpreted as a character - `Points dropping` is also a character the "," in the field isn't read as a separator in a number. These columns will need to be converted to numeric, after stripping out the "," with a text substitution. --- class: motivator background-image: \url(images/tennis/significance.png) background-size: 80% Budrus, Vanderplas, Cook (June 2013) Significance --- # Smashes win matches analysis Data for women and men's singles matches was scraped from the 2012 Grand Slam web sites. Statistics for each match were recorded: - Aces - Fastest serve speed - Winners - Unforced errors - Return games won - First serve % - Second serve % - Receiving points win --- # Smashes win matches analysis .pull-left[  ] .pull-right[  ] Fastest serve speed, and number of aces, in a match, by Grand Slam, and comparing men and women. --- # Smashes win matches analysis .pull-left[  ] .pull-right[  ]
  Return games won, and number of unforced errors.  --- class: split-30 .column[ Higher Round number indicates player made it further in the tournament. Statistics for women's singles matches. ] .column[  ] ---  Generally, you want to have more winners than unforced errors. Too few winners might indicate that you are not working hard enough, to be able to win the match, and too many might indicate having to work too hard, so too risky, to win the match. Similar for men's matches. --- class: split-30 .column[ # How important is serving? Turns out, first serve not so much, as long as its reasonably good. The second serve % is a big indicator of progressing through a tournament, along with receiving points won. ] .column[  ] --- --- # Rules for tournament progression  --- # Odds to win Knowing the statistics of players in the first two rounds, gives pretty reliable odds of predicting the quarter finalists.  .font_small[Women: .monash-orange2[S. Williams, Sharapova, Stephens, Azarenka, Kuznetsova], Radwańska, Na, Makarova] .font_small[Men: .monash-orange2[Djokovic, Murray, Federer, Tsonga, Berdych], Chardy, Almagro, Ferrer] --- class: refresher # Smashes win matches analysis Smashes are important, but only up to a point! The players who are successful are those who force the pace of the game with smashes, but who do not overdo it. Defensive play is probably more important: being able to win points on the opponent’s serve, and winning points on one’s own second serve, correlates best with getting through to the quarter-finals and the big money prizes. --- # Legality of scraping - Is web scraping legal? Yes, unless you use it unethically. - Search engines started as web scrapers, and it boost the visibility of the page, increasing the positive sentiment towards scraping. - .monash-blue2[Copyright infringement]: if the data is copyright protected, you can't upload it to your own site, or use it for commercial purposes - .monash-blue2[Violation of the Computer Fraud and Abuse Act]: unauthorised access, eg [jerk.com](http://arstechnica.com/tech-policy/2014/04/jerk-com-scammed-money-to-remove-facebook-scraped-profiles-says-ftc/) - .monash-blue2[Trespass to Chattel]: Don't make so many requests that you slow the web site's performance .footnote[Source: https://www.import.io/post/6-misunderstandings-about-web-scraping/] --- # ATP terms and conditions    --- What do you think are reasonable uses of scraping the ATP data? -- - Pull the statistics of your next opponent to find their strengths and weaknesses -- - Develop odds for a gambling enterprise -- - Examine the statistics of a player prior to an injury to determine if it might be preventable -- - Develop a player ranking to build the draw for a tournament --- # Keep in mind - Web scraping doesn't work forever - Web sites change, and code needs to be rewritten - A web site can be made to be almost scrape-proof, but technically if its visible is scrapable - Its more than just coding. Its pretty time-intensive to build a scraper, and then the data extracted needs to be wrangled into shape .footnote[Source: https://www.import.io/post/6-misunderstandings-about-web-scraping/] --- # Be polite! .font_smaller[ ```r library(polite) tennis_bow <- bow( url = "https://www.atptour.com/en", # base URL user_agent = "Wild-caught Data <https://wcd.numbat.space>", # identify ourselves force = TRUE ) tennis_bow ``` ``` ## <polite session> https://www.atptour.com/en ## User-agent: Wild-caught Data <https://wcd.numbat.space> ## robots.txt: 20 rules are defined for 0 bots ## Crawl delay: 5 sec ## The path is scrapable for this user-agent ``` ] --- class: split-50 .column[.padtop50px[ # Hypertext Markup Language ## HTML Introduction ``` <!DOCTYPE html> <html> <body> This is my first web page </body> </html> ``` ]] .column[.padtop50px[ ## Common tags - _html_: opening tag declaring everything between is html format - _body_: main content appearing in the page - _title_: title in browser border - _table_, _tr_, _td_: table start, row and column starts - _img_: insert an image here - _a_: insert a link, could be external, or internal - _h1_, _h2_, _h3_: headings in the document ]] --- .row[.padtop50px[ # Attributes .font_smaller[ ```r <h1 style="color:Tomato;"> Bilby </h1> ``` ```r <img width="512" src="https://commons.wikimedia.org/wiki/image.jpg"> ``` ```r <a title="my image" href="https://commons.wikimedia.org/wiki/image.jpg"> <img width="512" src="https://commons.wikimedia.org/wiki/image.jpg"></a> ``` ] ]] .row[.padtop50px[ # Elements - Bilby - The image is the element in the third example ]] --- # Beginners guide to html    .footnote[Source: https://htmldog.com/guides/html/beginner/] --- class: split-50 # Intro to Cascading Style Sheets (css) .column[

 - a way to style and present HTML. - to understand parts of the html, requires knowledge of the styling components too ] .column[

 ] --- # Intro to css    Fun interactive way to learn about css selectors at http://flukeout.github.io/. --- # Learning to scrape with rvest ```r library(rvest) library(tidyverse) url_atp <- "https://www.atptour.com/en/rankings/singles" *atp_html <- read_html(url_atp) *atp_rankings <- html_node(atp_html, "table") %>% * html_table(fill=TRUE) ``` --- # Different selector .font_smaller[ ```r lego_movie <- read_html("http://www.imdb.com/title/tt1490017/") rating <- lego_movie %>% html_nodes("strong span") %>% html_text() %>% as.numeric() rating ``` ``` ## [1] 7.7 ``` ] --- .font_smaller[ ```r cast <- lego_movie %>% html_nodes("#titleCast .primary_photo img") %>% html_attr("alt") cast ``` ``` ## [1] "Will Arnett" "Elizabeth Banks" "Craig Berry" "Alison Brie" ## [5] "David Burrows" "Anthony Daniels" "Charlie Day" "Amanda Farinos" ## [9] "Keith Ferguson" "Will Ferrell" "Will Forte" "Dave Franco" ## [13] "Morgan Freeman" "Todd Hansen" "Jonah Hill" ``` ] --- # When pages make it difficult .font_smaller[ ```r url <- "https://www.wtatennis.com/stats" wta_html <- read_html(url) wta_rankings <- html_node(wta_html, "table") wta_rankings ``` ``` ## {xml_missing} ## <NA> ``` ] --- # Download a copy first .font_smaller[ ```r wta_html <- read_html("wta_rankings2.htm") wta_rankings <- html_node(wta_html, "table") %>% html_table(fill=TRUE) wta_rankings <- wta_rankings %>% janitor::remove_empty() %>% as_tibble() wta_rankings ``` ``` ## # A tibble: 207 x 17 ## Pos Player Rank Matches Aces `DF Double Fau… `1st Srv %` ## <int> <chr> <int> <int> <int> <int> <chr> ## 1 1 ASHLE… 1 14 79 26 61 % ## 2 2 SIMON… 2 12 29 21 68.8 % ## 3 3 KAROL… 3 11 76 36 63.2 % ## 4 4 SOFIA… 4 18 50 48 69.8 % ## 5 5 ELINA… 5 14 48 32 62.1 % ## 6 6 KIKI … 7 13 67 50 62.9 % ## 7 7 BELIN… 8 13 46 69 61.8 % ## 8 8 SEREN… 9 8 50 10 62.6 % ## 9 9 NAOMI… 10 7 67 14 63.8 % ## 10 10 ARYNA… 11 15 64 49 63.5 % ## # … with 197 more rows, and 10 more variables: `1st Srv Pts % 1st Serve Points ## # Won %` <chr>, `2nd Srv % 2nd Serve Points %` <chr>, `Srv Pts Won % Service ## # Points Won %` <chr>, `BP SVD % Break Points Saved %` <chr>, `Srv Gm Won % ## # Service Games Won %` <chr>, `1st Rtn Pts % 1st Return Points Won %` <chr>, ## # `2nd Rtn Pts % 2nd Return Points Won %` <chr>, `Rtn Gm Won % Return Games ## # Won %` <chr>, `BP CONV % Break Points Converted %` <chr>, `Rtn Pts Won % ## # Return Points Won %` <chr> ``` ] --- # Sports statistics scraping packages - Tennis: deuce package (https://github.com/skoval/deuce) - Cricket: cricketdata (https://github.com/ropenscilabs/cricketdata) - AFL: fitzRoy (https://jimmyday12.github.io/fitzRoy/) - baseball: Lahman, pitchRx - basketball: ballr - soccer: https://github.com/statsbomb/open-data, https://github.com/JoGall/soccermatics --- # deuce ```r # remotes::install_github("skoval/deuce") library(deuce) ``` - Scrapes data from http://www.atpworldtour.com/, https://www.flashscore.com/tennis. - Developed by a Tennis Australia data scientist Stephanie Kovalchik. .footnote[NOTE: Some components broken.] --- # cricketdata ```r # remotes::install_github("ropenscilabs/cricketdata") library(cricketdata) ``` - Scrapes data from https://docs.ropensci.org/cricketdata/ - Developed by Rob Hyndman, Timothy Hyndman, Charles Gray, Sayani Gupta - Interesting approach to getting the URLs for the data pages --- # cricketdata .font_smaller[https://stats.espncricinfo.com/ci/engine/stats/index.html?class=10;team=289;template=results;type=batting] .font_smaller[ ```r auswt20 <- fetch_cricinfo("T20", "Women", country="Aust") auswt20 ``` ``` ## # A tibble: 53 x 17 ## Player Start End Matches Innings NotOuts Runs HighScore HighScoreNotOut ## <chr> <int> <int> <int> <int> <int> <int> <dbl> <lgl> ## 1 MM La… 2010 2020 104 98 21 2788 133 TRUE ## 2 AJ He… 2010 2020 112 97 16 2060 148 TRUE ## 3 BL Mo… 2016 2020 52 49 11 1452 117 TRUE ## 4 EJ Vi… 2009 2018 62 58 10 1369 90 TRUE ## 5 AJ Bl… 2005 2017 95 81 19 1314 61 FALSE ## 6 EA Pe… 2008 2020 120 72 29 1218 60 TRUE ## 7 JE Du… 2009 2015 64 55 10 941 68 TRUE ## 8 LJ Po… 2006 2012 40 40 2 784 61 FALSE ## 9 S Nit… 2005 2011 36 35 2 776 56 FALSE ## 10 LC St… 2005 2013 54 50 14 769 52 FALSE ## # … with 43 more rows, and 8 more variables: Average <dbl>, BallsFaced <int>, ## # StrikeRate <dbl>, Hundreds <int>, Fifties <int>, Ducks <int>, Fours <int>, ## # Sixes <int> ``` ] --- # fitzRoy .font_smaller[ ```r # From CRAN # install.packages("fitzRoy") # or from GitHub # remotes::install_github("jimmyday12/fitzRoy") library(fitzRoy) aflw <- get_aflw_match_data(start_year = 2020) ``` ] - Gets statistics from https://womens.afl and https://afltables.com - Developed by James Day, Robert Nguyen, Matthew Erbs, Oscar Lane, Jason Zivkovic - Combination of scraping for men's data, and reading protected JSON data for women's by requesting a permission token ---    ---


U.S. companies will be granted licenses to trade with Huawei “very shortly”
Source: Android Central
What you need to know
- U.S. Commerce Secretary Wilbur Ross has said that U.S. companies will "very shortly" receive licenses that will allow them to sell components to Huawei.
- Ross also revealed that the U.S. government received a total of 206 license applications.
- A "phase one" trade deal between the U.S. and China is expected to be announced this month.
Last month, The New York Times had reported that the Trump administration would soon issue licenses to U.S. companies to sell 'non-sensitive' goods to Huawei. Speaking to Bloomberg, U.S. Commerce Secretary Wilbur Ross has now confirmed that the licenses will indeed be issued "very shortly."
He added that the U.S. government received a total of 206 license requests. While no timeline was confirmed by Ross, there is a good chance that the companies that had sent applications will be granted licenses to sell to Huawei before the end of the year.
The U.S. and China are expected to sign a "phase one" trade deal this month. Ross told Bloomberg that he is very optimistic that the deal could be reached this month and that there was "no natural reason" that could cause the deal to fall apart.
If everything goes as planned, Huawei should be able to roll out an update to add Google services to the Mate 30 series phones. It would also mean that the company's 2020 smartphone lineup will ship with Google services right out of the box. Despite the U.S. blacklist, Huawei shipped 66.8 million smartphones in the second quarter of 2019, grabbing a 19% share of the worldwide market.


Simple MDC Quickstart
The easiest way to start using Material Design Components for the web in a single HTML file.
View on GitHub


Not only do I take pride in tackling problems and finding innovative solutions, I enjoy it!
Find Out MoreI am goal-oriented, results-driven, pragmatic, and very passionate about critical-thinking, problem solving, and attention to detail. In my past, I have learned and implemented many interesting applications and games using C++ and C#. I recently graduated from Coding Dojo, Silicon Valley Bootcamp and I am excited to enter the world of web development. I dedicated 1000+ hours learning Python, JavaScript(MEAN)(MERN) and Ruby full stack. With this knowledge I was able to creating elaborate and creative apps! Feel free to get in touch with me about any opportunities!
My goal is to make your dreams a reality
I use AWS/EC2 for deployment
I utilize several powerful front end frameworks
I enjoy coding in several back end languages and frameworks
React(MERN), Angular(MEAN), JavaScript, JQuery, Bootstrap, Ajax, Json. -HTML5, CSS3, JavaScript, jQuery, Bootstrap, React, Angular, Wordpress, Adobe Creative Cloud
Python, JavaScript, Ruby, Node.js, MEAN, MERN, AWS(EC2, Lambda), NGINX
Python, JavaScript(ES6), Ruby, TypeScript, HTML, CSS, C++, C#.
Django, Flask, Rails, Angular, React, React Native, Express, Socket.io.
MongoDB, My SQL, SQLite, Postgress, NoSQL, Mongoose, Django ORM.
Visual Studio, Git, MySQLWorkbench, Postman, Atom, Pycharm, Sublime.
OOP, MVC, RESTful Architecture, CRUD Operations, Responsive Web Design.
Git/Github, Microsoft Office, Google Analytics, Adobe: Photoshop,premiere,dreamwaver, Jetbrains: Pycharm
Please Feel free to contact me with me about any questions or opportunities!
209-768-0059
Social Links
Facebook
Twitter
LinkedIn
Github
Resume


--------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------
1
Human Resources Policies
Joining Policy
FUNCTION: HUMAN RESOURCE MANAGEMENT
POLICY: JOINING POLICY
PREPARED BY:
APPROVED BY: BHARAT KAPOOR
DATE: 1
st
December, 2015
VERSION NO: HR/ JP/ 01
–
A
Policy Number
HR/ JP/ 01
Policy
Distribution
HR
Confidentiality
Confidential to DIPI employees only
Effective Date
December 2015
Objective
To ensure that new employees are introduced to DIPI in a positive way in
line with good employment practice
Applicability
All employees on the roll of the company
General
guidelines
Induction is a systematic process, which enables new employees to become
familiar with their job, the Company, and the other people with whom they
will be working.
Procedure
1.
The induction process must be duly complied with. The HR Manager
shall be responsible for the complete compliance with the induction
process (refer in Annexure 1).
2.
The employee shall be required to fill-in a comprehensive checklist (refer
Annexure 2) within 45 days from the date of joining. The HR must
ensure that the same is duly filled.
3.
The Induction Program Checklists shall be maintained by the HR
Department.
4.
The HR Department shall ensure that the induction for all employees is
carried on for the requisite number of days as decided by the HOD and
the HR.
Contact
For any clarification regarding any aspect of the policy, kindly contact the
GA and HR Department.
Approval
Approved by:
Date: 1
st
December 2015


Date: 2 March 2016.
It's cool to know that we are reading a book that many Google employees also have to read as part of their emotional intelligence training. I particularly like the different ways of thinking about mindfulness, and attention. "paying attention in a particular way: on purpose, in the present moment, and non-judgementally"
I've believed for many years that emotional well being has a direct impact on physical well being. Not that I'm good at keeping things like stress and frustration in check.
I believe there is value in this exploring this subject. It offers insight, and it's healthy to explore with the goal of trying to become a better person. Something I always try, and occasionally fail, to do.
Very good! I occasionally meditate, so I am used to the sense of calmness. I find yoga also helps focus the mind in to a state of calmness as well. For me, there is a link on focussing on the poses, combined with the difficulty and physicality of the poses, that clears the mind. I once described to a friend, that doing yoga made me feel like a puddle of calm water in a rough sea, with ripples of calm radiating out in to the rough. In other words, it makes me calm and happier, which then has an effect on others interact with.
I personally find focussing on my breath to be the best way to have introspective, calm moments. The 'Easier Way' of doing nothing but being for 2 minutes just wouldn't work for me. I have too many things to worry about! My breathing helps me not think about those things, so I opt for that method.


Hello, {{ user.first_name }}!

Interested in becoming a working member or changing your existing workshift? Click here to update your member profile with your workshift interests and skillset, someone from the Membership Department will contact you shortly to help match you up with the workshift that works best for you! Please note that we will try to best match your interests to Mariposa's most pressing needs. Our most needed shifts are indicated by the words "Help Wanted".
Here are the most recent conversations on the Forum
-
{% for t in threads %}
- {{ t.subject }} - new post in {{ t.forum__name }} on {{ t.last_post|date:'D d F' }} at {{ t.last_post|date:'P' }} {% endfor %}
Here are the most recent updates from mariposa.coop
{% for entry in rss_entries %}{{ entry.title|safe }}
{{ entry.summary|safe|linebreaksbr }} read more
{% endfor %} {% endif %}


Deforestation is the decrease in forestland across the world that are lost for different uses, for example, rural croplands, urbanization, mining exercises and on occasion for natural causes. Due to the rapid development of our industry, lifestyles and human activities, there has been a negative affect on our ecosystem with high deforestation rate. In the recent studies by the UN’s Food and Agriculture Organization, it is seen that annually around 1.3 million km square per decade or area is under deforestation. Deforestation can largely cause climate change, soil erosion, desertification, flooding, decrease in crops grown and most importantly surge in greenhouse gases which is one of the most essential cause of Global Warming.
In about every second there is about one and half acres of forest land cut down. If deforestation is not controlled, then in about 100 years there will not be any rainforests on our planet anymore. One of the major components, our water cycle is strongly affected by deforestation. Below we will see the percentage of some major countries gaining back the tree cover loss and the main components that is causing deforestation annually. This would help us understand and also try to control deforestation as much as possible.
The column graph shows the annual million hectares of land surface of tree cover loss by each major country like USA, Russia, Brazil, and Canada and other countries. Regardless of the cause of the tree cover loss, this is a very alarm rate at which we are losing forestlands.
The bar chart here displays the extreme actions which lead to large deforestation like wildfire, forestry, shifting agriculture, urbanization and commodity driven deforestation. In the graph we see in the year 2001 forestry was the leading cause of deforestation were as the next year 2002 wildfire took over the deforestation rate 8 times than the previous year. In today’s year forestry is on the lead as of now followed by shifting agriculture and wildfire. Altogether there was about 27% of tree cover loss globally from the past 20 years.
The donut chart generator on the right side is the gain over tree cover over the 10 years span by each country. Russia has gained about 16.2 Mha of tree cover, followed by United States with 13.8 and so on.
The donut chart on the left displays the global land with tree coverage such as natural forest, plantation, and Non-forest. The majority of the land is non-forest coverage.
The main aim is to focus on the data explore it and know which sector needs the most help. It is out planet we need to take good care of it for the future generations to come.


From : Mrs Rose Kouakou
Abidjan, Cote d Ivoire
West Africa.
Dearest one,
With due respect to your humble self, I write you
this letter which I believe you would be of great
assistance to me and my children.
I am MRS Rose Kouakou the wife of the late Dr
DAVID Kouakou of the blessed memory. Prior to my
husband assassination by the rebel forces loyal to
CORPORAL FODAY SANKOH of the Revolutionary United
Front (RUF), He was the Director General National
Gold and Diamond Mining Corporation of Sierra-Leone.
Few days before my husband was assassinated, he
instructed me and my children ( DIDOW and Raymond) to
move out of Sierra-Leone and also to go in his
underground strong room where the documents of
money he has deposited in a security company in
Abidjan Cote d Ivoire in one trunk Box as family
valuables and treasures
with the name of my first
son DIDOW Kouakou as the beneficiary. The amount is
US$10,500.000.00 (Ten million Five hundred thousand
United States
Dollars.)We managed to escape to Abidjan the
Republic of Cote d Ivoire through the help of my
husbands friend who is a trawler. As our travelling
document was seized.
For your information , the security company does not
know the real content of the box and we do not wish
them to know until the money is transferred to your
account. As it was deposited as family valuables and
treasures.
Meanwhile, I want to leave Cote d'Ivoire entirely
with this money for investment in your country because
of the unstable political situation and mostly for the
future of my children. I want you to please assist
us to claim the box from the security company in
Europe. Because of the political problem here
sometimes ago,I instructed the Security Company
to
transfer the consignment to their branch office in
Europe for safe keeping. So the consignment is now in
Europe. we have it in mind to reward you with a
certain percentage for your assistance. As soon as we
hear from you.
immediately you
receive this letter to enable us proceed in earnest
toward retrieving the box and transferring of the
money into your account.
Finally, Please ensure that no one else knows about
this money as it is only me, my son and yourself
knows about this money. Please even if you don't
want to assist me, please dont expose this for my
security.
May God bless you as you
Découvrez le blog Yahoo! Mail : dernières nouveautés, astuces, conseils.. et vos réactions !
Découvrez le blog Yahoo! Mail : dernières nouveautés, astuces, conseils.. et vos réactions !