Event Location:
Edinburgh Training and Conference Venue
16 St Mary's St, Edinburgh
Edinburgh, Scotland, United Kingdom
Abstract:
Remember those "choose your own adventure" books from when we were younger? Yep, that's what we're doing in this session. We're going to start with a poorly performing query and choose which route we're going to take to see if we can make it better. You don't need any previous experience in performance tuning for this session, we'll briefly cover each topic as it's chosen. Potential topics include; - Indexes - Query Design - Settings that might affect performance - Scalar Functions - SARGability - Temp Tables We'll be voting on where we go at each step to see where our journey takes us. In the session we'll cover each topic a little but I will also provide a more in-depth explanation of everything we go through after the session if you want to learn more.
Speaker(s): Rich Benner,
Abstract:
Most modern programming environments offers exception handling in some form, and SQL Server provides the popular TRY-CATCH concept. However, error handling in SQL Server is not as straightforward as one may wish, but it is marred with inconsistencies and surprises. This session starts off by displaying the some of the surprises you can encounter, both when you use TRY-CATCH and when you don't. The session presents a recipe for writing CATCH block where focus is on keeping things simple and you will learn why it is not a good idea to make your error handling "fancy", although it may seem to be a good idea in theory. The session also covers a few things to think of on client level. Once we have learnt how to handle unanticipated errors, we can start to look at how to handle errors we know can occur and in which case we want to take an alternate action. We will also learn how to - and if - to implement retries on deadlocks.
Speaker(s): Erland Sommarskog,
Abstract:
With ever increasing complexity in data platform and application solutions, it is becoming ever more important to take people out of the loop when it comes to system provisioning. Infrastructure as code is the way forward with Azure Resource Manager Templares, Google Deployment Manager, or AWS Cloud Formation. This is where Terraform from Hashicorp can step in, one solution that has a provider model that will interact with Azure, AWS, Google, and others. Meaning that you only need to learn one syntax. Add that to the automation potential and now we have something that can really help get us down the road to infratructure as code. This session will take an introductory look at how infrastructure can be defined as code and be shipped to standardise the deployment process and minimise the chance of mistakes creeping in when deployed by different memebers of Development or Operations.
Speaker(s): John Martin,
Abstract:
Azure Cosmos DB is Microsoft’s premier NoSQL Cloud-based globally distributed database offering, providing scalable performance and resiliency, customizable consistency guarantees, multiple data models APIs, and comprehensive service level agreements. In this session, we will explain how to get started in Cosmos DB and demonstrate simple administrative and development operations so you can learn how to go from zero to hero in no time. We will cover many fundamental topics which include: * Cosmos DB APIs * Accounts, Databases, and Containers * Geo-Replication * Partitioning and indexing * Consistency and throughput Azure Cosmos DB is not just the future for Online-Transaction Processing, it is the present!
Speaker(s): Mark Broadbent,
Abstract:
Aimed mostly at administration and based on real life scenarios, this popular audience interactive session we will go through some scenarios DBA's might encounter whilst dealing with SQL Server databases and you will be provided with some options about what to do. Members of the audience can then select from the options provided and we will follow that path and see what the outcome is from there. Similar to a role-playing game. Each selection will have a different outcome, and along the way you will probably learn some new things. As some of you may have seen on the blog www.KevinRChant.com I've already had dealing with SQL Server 2019. Therefore, this session has been updated to include SQL Server 2019 content.
Speaker(s): Kevin Chant,
Abstract:
For many businesses out there, adopting a progressive data analysis strategy is the domain of the big players. You need a budget, you need investment and with only a small number of users, the costs are off-putting. Hard to justify some costs when your user base may only be a few or a few dozen users. This is no longer the case with the PowerBI Platform. This session is based on real-life customer implementations where they were taken away from their Excel and Microsoft Access and LOB based reporting solutions towards the Power Platform. We show how we started with Power BI and evolved into a comprehensive solution that combines SharePoint Online with PowerBI to provide an end to end reporting solution. Further phases of these project introduced Power Apps and Flow to further enhance the analytical capabilities of the company.
Speaker(s): Mark Hayes,
Abstract:
Running SQL Server in containers has huge benefits for Data Platform professionals but there are challenges to running SQL Server in stand alone containers. Orchestrators provide a platform and the tools to overcome these challenges. This session will provide an overview of running SQL Server in Kubernetes, which is the leading orchestrator. Topics covered will be: - An overview of Kubernetes. Definition of pods and services. Deploying SQL Server containers to Kubernetes. Persisting data for SQL Server in Kubernetes. An introduction to Helm Chaos engineering for SQL Server in Kubernetes using Space Invaders! This session is aimed at SQL Server DBAs and Developers who want to learn the what, the why, and the how to run SQL Server in Kubernetes.
Speaker(s): Andrew Pruski,
Abstract:
Microsoft’s data platform and SQL Server comes with a plethora of High Availability features. Some of these features can work hand-in glove with each other to allow you to configure your SQL Servers to be both Highly-Available and recoverable in the event of the worst happening. If you are driven by the '9s', have strict SLAs and up time is key to you and your business, then combining SQL Server’s high availability features is something you should consider. In this session we will look at how we can combine SQL Server Availability Groups and SQL Server Failover cluster instances to keep our servers both highly available and maintain a secondary disaster recovery.
Speaker(s): Gethyn Ellis,
Abstract:
Finding that job you desire and want can be hard work. Writing that CV that gets your name on the interview list. Making the first good impression at the the interview, handling those tough questions with ease. In this session I will share some of the tips and techniques I have used to get roles over my career. You will get some insider tips on how to deal with those difficult interview questions. How to work with recruitment agents. Ways to get your name to the top of the recruiters list. When you leave this session you have techniques and tips you can use as soon as you leave the session to help you in your search for that role you want
Speaker(s): Robert French,
Abstract:
Can you use GEOGRAPHY data types to calculate and display celestial phenomena and does it make sense? It needs some math and the willingness to use SQL objects for purposes, they haven’t been designed for. This session is a (hopefully) entertaining exercise to combine scarcely used data types with a bit of astronomy and math to calculate and visualize the relationship between sun and wind turbines (i.e. moving shadows that may annoy the neighbors) solely by using SQL Management Studio. Only GEOGRAPHY data type will be used to show the richness and beauty of its functionality. Apart from 2-3 formulas everything will be handled in SQL.
Speaker(s): Arne Bartels,
Abstract:
One major challenge in the age of "Big Data" is keeping up with the volume and velocity of data with respect to moving it to the Data Warehouse. In this session, attendees will learn about Microsoft's answer to this problem; Azure Data Factory (ADF), and specifically, Mapping Data Flows. ADF Mapping Data Flows enables data engineers to construct, execute, and monitor data pipelines, based on the highly scalable Azure Databricks Spark Engine, with little to no code. This session will be very demo-heavy, with demonstrations of effective patterns and practices that have been deployed by some of Microsoft's largest customers throughout the world.
Speaker(s): Ted Malone,
Abstract:
Description That's it, data scientists have left the house! Behind them, some scripts written in Python or R, thousands of CSV files, three sheets and two whiteboards of mathematical equations, many PowerPoint presentations and a clear instruction from the CEO: go to production ASAP! Unfortunately, no trace of a deployment procedure. Hopefully, this session, will explain how to industrialize data scientists' scripts. How to import and refactor code written in Jupyter Notebooks within VS Code, How to put in place the best practices of DevOps and apply them to Machine Learning with Azure Pipelines and some other tips and tricks for a successful go-live.
Speaker(s): Cédric Charlier,
Abstract:
Data compliance in the modern technology landscape feels like a constantly moving target as more and different laws, rules and regulations are passed locally, nationally and internationally. The days when only some organizations or certain countries had to worry about data compliance are gone. It’s everyone’s problem. However, it is possible to define a core set of processes that will help to enable your ability to assist your business, or government agency, in meeting these compliance requirements. This session will walk you through the 10 steps you need to implement in order to move your organization towards full compliance with any, or all, of the regulations we all now face. From identifying where your data lives to monitoring for compliance and all the steps in between, you can meet this challenge.
Speaker(s): Grant Fritchey,
Abstract:
By combining the power of Power BI data alerts with the hundreds of actions available for Flow, we’re making it easier than ever to go from insight to deep, meaningful action. Microsoft Flow is a SaaS offering for automating workflows across the growing number of applications and services that business users rely on. You can set up Flows to take care of the important, repeating tasks that take place daily in your organization. For example, you can create a Flow to text you via SMS when your manager sends you an e-mail marked as “high importance.” Or, automatically create a to-do item in Wunderlist when a customer e-mails your support line.
Speaker(s): Isabelle Van Campenhoudt,
Abstract:
DevOps has fundamentally changed the way we manage IT. Those practicing DevOps well aren't just outpacing their competitors, they are annihilating them. DevOps brings a whole host of new practices, tools and buzzwords. It has made some roles and tasks redundant, while new opportunities have been created. We all need to learn to survive in this new reality. In this session we'll cut through the hype and look at the key concepts and findings from the Puppet State of DevOps Reports, The DevOps Handbook and Microsoft's work in this space. We will finish with an overview of an Azure DevOps Services project that automatically tests and deploys the code from a SQL Server Data Tools (SSDT) project in a public GitHub repo.
Speaker(s): Alex Yates,
Abstract:
Welcome to Azure DevOps Duet, a tale about how a development team and an operations team have to bond together and start using Azure DevOps for SQL Server related deployments. This session will cover the process of developing a CI/CD process starting at getting the team on board and ending with making an actual release. We will discuss - the challenges of implementing DevOps - setting up a database solution project - getting started with source control - testing your database releases using tSQLt - setting up your Azure Devops pipelines After this session you will have the tools and knowledge to get started with DevOps and get your development process to the next level.
Speaker(s): Kevin Chant,
Abstract:
Databricks is the Swiss Army Knife of the Azure Data Analytics environment. Databricks implements Apache Spark, a robust in-memory cluster data processing framework. Spark Core supports SQL, DataFrames, Streaming, Graph Processing and Machine Learning. In this session we focus on how Spark implements Machine Learning at Scale with Spark ML. Spark ML can do a lot, but not everything. In this session we go end-to-end, building a model in an iterative way, monitoring our improvements in MLFlow, training, testing and evaluating a Machine Learning pipeline. We will also discuss how to migrate your models to perform at scale. If you're working with Deep Learning, then let me know and we can discuss how Databricks can scale Deep Learning.
Speaker(s): Terry McCann,
Abstract:
The concurrency model of most Relational Database Systems are defined by the ACID properties but as they aim for ever increasing transactional throughput, those rules are bent, ignored, or even broken. In this session, we will investigate how SQL Server implements transactional durability in order to understand how Delayed Durability bends the rules to remove transactional bottlenecks and achieve improved throughput. We will take a look at how this can be used to compliment In-Memory OLTP performance, and how it might impact or compromise other things. Attend this session and you will be assimilated!
Speaker(s): Mark Broadbent,
Abstract:
SQL Saturday Edinburgh (SQLSat927) GOLD sponsor session.
Speaker(s): SQLSat927 Gold Sponsor,
Abstract:
At some point in time, whether in the past or in the future, we will experience being in a situation where there is a major outage or problem that needs to be dealt with. But how can we ensure that it does not decend into chaos and make the problem worse? Join me as I share a number of tips and tricks about how to take control of the situation. We will cover establishing a control structure, commuincations, and documentation. All of which when done well can result in a calm and controlled resolution and faciliate root cause analysis. We will also look at ways to prepare for such situations and how you can lay the groundwork so that if something does go wrong you are ready for it.
Speaker(s): John Martin,
Abstract:
Starting with version 2017, SQL server was supported on Docker and Linux. With SQL Server 2019, you will be able to run a container, or a whole AlwaysOn Availability Group on Kubernetes. This session will drive DBAs on their path to modernize their skills. Starting with a single container on a Docker host, the session will also cover Big Data Cluster creation and usage though T-SQL and basic Python scripts.
Speaker(s): Christophe Laporte,
Abstract:
Azure Synapse is a limitless analytics service that brings together enterprise data warehousing and Big Data analytics. It gives you the freedom to query data on your terms, using either serverless on-demand or provisioned resources—at scale. In this session we explore Azure Synapse Analytics, we will dive into this limitless analytics service and explore how it brings together enterprise data warehousing and Big Data analytics. We will explore; *Data ingestion *SQL Pools - Data Warehouses *Spark Pools *SQL-on-Demand *PowerBI
Speaker(s): Mark Pryce-Maher,
Abstract:
How do the wait stats show you that you have a locking issue? This session will show you how to detect and view blocking and lock waits, and understand the cause of it. An extensive walkthrough of the different isolation levels and their respective benefits and drawbacks. And finally a real-world quick list of suggestions on what you can do to solve some of the common issues I come across in my daily work.
Speaker(s): Mikael Wedham,
Abstract:
The system database TempDB has often been called a dumping ground, even the public toilet of SQL Server.  In this session you will learn to find those criminal activities that are going on deep in the depths of SQL Server that are causing performance issues, not just for one session, but that affects everybody on that instance. You will learn what you can do to reduce issues by investigating your hardware, your SQL Server configurations, and your coding techniques.
Speaker(s): Lord Richard Douglas,
Abstract:
Artificial Intelligence is dominating the world and not most of them had any chance to experience these features, due to various complicated reasons. How about if this can be made very easy and to exploit these AI features to visualise in our day to day Power BI? This AI session will cover all AI capabilities within Power BI and also using Azure Cognitive Services to build a live BOT QnA, Vision (Face API), Language (Text Analytics).
Speaker(s): Dr. Subramani Paramasivam,
Abstract:
We have all now had a play around with Docker and Containers or at least heard about them. This demo heavy session will walk through some of the challenges around managing container environments and how Kubernetes orchestration can help alleviate some of the pain points. We will be talking about what Kubernetes is and how it works and through the use of demos we will: - Highlight some of the issues with getting setup (Specifically Minikube on Ubuntu), - Deploying/Updating containers in Kubernetes (on-Prem as well as AKS using Azure DevOps) - Persisting data - How to avoid making the same mistakes as I have
Speaker(s): Chris Taylor,
Abstract:
In this session we will look at a couple of approaches to create a datalake on a budget. The samples will use Python, Spark and some Databricks. It will all be done in Azure, but we will discuss how you could set this up on-prem as well. You get to decide how far you want to go, from cost-effective to penny pinching. Don't worry if you've never used any of these technologies, I will start at the beginning.
Speaker(s): André Kamman,
Abstract:
Synapse Analytics is being announced as the new name of Azure SQL Datawarehouse, but it's not only that. There is a broader view in Synapse analytics, beyond Azure SQL Datawarehouse. Let's see in this session what was improved, what changed, and how synapse analytics fits in the data platform.
Speaker(s): Dennes Torres,
Abstract:
Azure Artificial Intelligence and Machine learning models are invoked as functions within Power BI dataflow to create a powerful dataset for your Power BI Reports.
Speaker(s): Shreeya Subramani,
Abstract:
SQL Saturday Edinburgh (SQLSat927) GOLD sponsor session.
 However, there are a lot of things you need to know and take into account before diving head first into a Data Lake. This session is intended for architects and developers who are looking to build a massive scale data storing and processing solution. I will go through the Best Practices for the purpose. In addition, I will demonstrate how to unify real-time and batch processing using Azure Databricks. As a result, you should feel comfortable building your own Data Lake for your big data processing needs.
Speaker(s): Oskari Heikkinen,
Abstract:
SQL Saturday Edinburgh (SQLSat927) GOLD sponsor session.
Speaker(s): SQLSat927 Gold Sponsor,
Abstract:
SQL Saturday Edinburgh (SQLSat927) GOLD sponsor session.
Speaker(s): SQLSat927 Gold Sponsor,
Abstract:
SQL Saturday Edinburgh (SQLSat927) GOLD sponsor session.
Speaker(s): SQLSat927 Gold Sponsor,
Abstract:
An Azure Data Studio recent release introduced SQL Notebooks as a capability. While you might have read about notebooks being used for Data Science, this session is primarily for DBAs. We will cover installing Azure Data Studio. What a SQL Notebooks is. Numerous use cases for you to use SQL Notebooks in your daily workload such as creating a Notebook for Glenn Berry's Diagnostic queries. and some gifs ;-)
Speaker(s): Rob Sewell,
This is a list of speakers from the XML Guidebook records. The details and URLs were valid at the time of the event.
LinkedIn: http://www.linkedin.com/in/retracement
Contact: http://tenbulls.co.uk
Mark Broadbent is a Data Platform MVP and SQL Server MCM with more than 20 years of experience working with SQL Server and principal of SQLCloud, a consultancy specializing in concurrency control and highly available solutions. He is the founder of the UK's SQLSaturday Cambridge (its first and largest), SharePoint Saturday Cambridge, the Hybrid Virtual Chapter and the East Anglia SQL User Group.
LinkedIn: http://uk.linkedin.com/in/dageop
Contact: http://www.yoursqlman.com/index.php/blogs
Dr.SubraMANI Paramasivam is a Microsoft MVP, PhD, Microsoft Certified Trainer and Head of Data AI at DAGEOP Ltd having 21 years of DB, BI, Analytics and AI experience. Mani has also spoken in various events like MS IGNITE, PASS Summit, MS Inspire, SQLBITS, Power Platform Summit, Global AI Bootcamp, Data BI Summit, SQLRelay, Power BI World Tour, Data Platform Summit, INSIDESQL UK, Global AI Nights, SQLServerGeeks Summit, MCT Global Summits, Data Day Events and various user group events. Mani also believes in Empowering Every Person in the planet and spreads the awareness on Global challenges via www.EmpoweringEveryPerson.com. He is also a co-owner of 1 Global AI Meetup and 3 Power BI PUG PASS local / user groups.
Contact: http://andrekamman.com
André Kamman is a DBA and SQL Server Solutions Architect for CloudDBA. He has done a lot of DBA work on 1000’s of servers where he discovered his love for Powershell, architecting SQL Server solutions, building and tuning ETL processes (with BIML). He also likes to work with MPP platforms APS and AzureDW. André is a Data Platform MVP, Dutch PASS Chapter Leader and organiser of SQL Saturday Holland.
LinkedIn: http://be.linkedin.com/pub/isabelle-van-campenhoudt/2/558/52b/
Contact: http://thesqlgrrrl.wordpress.com
Isabelle Van Campenhoudt is a system engineer (MCSE; MVP SQL Server) who has been working for more than 15 years in the world of databases; she lives in Belgium; Isabelle has strong experience in Business Intelligence. Trainer (Microsoft Certified Trainer), speaker and consultant, she used to collaborate with developers; infra (design and performance). She is also a teacher at EPHEC (Brussels) for the Bachelor of Computer Science curriculum. Isabelle is co-founder of CLUG; V-chapter Francophone
LinkedIn: http://be.linkedin.com/in/cedriccharlier
Contact: http://seddryck.wordpress.com
Cédric is a talented architect and Data Platform MVP active in the domain of Business Intelligence and Data warehousing. He has more than 10 years of successful experiences with SQL Server in European industrial groups and services companies. Driven by quality and reliability, he is the main developer of an open-source solution for testing BI solutions (cubes, etl, reports) named NBi (www.nbi.io). Cedric also advocates for the introduction and general usage of agile practices in BI’s world.
LinkedIn: http://www.linkedin.com/in/scarydba
Contact: http://scarydba.com
Grant Fritchey is a Data Platform MVP with over 20 years’ experience in IT, including time spent in support and development. He has worked with SQL Server since 6.0 back in 1995. He has also developed in VB, VB.NET, C#, and Java. Grant has written books for Apress and Simple-Talk. Grant presents at conferences and user groups, large and small, all over the world. He joined Redgate Software as a product evangelist in January 2011.
LinkedIn: https://uk.linkedin.com/in/tpmccann
Contact: https://www.advancinganalytics.co.uk/blog
Microsoft MVP. Principal Consultant and Owner of Advancing Analytics Limited, an Advanced Analytics consultancy in the UK. Advancing Analytics helps businesses advance their analytical capabilities. Our focus is on Data Science, Data Engineering, DataOps and applied AI. Terry holds a Master's degree in Data Science - with a focus on DataOps for Machine Learning. Speaker at conferences across the world and the host of the Data Science in Production Podcast.
LinkedIn: https://uk.linkedin.com/in/gethynellis
Contact: http://www.gethtynellis.com
Gethyn is a SQL Server consultant and trainer and has worked with SQL Server for nearly 20 years. He specialises in version mIgration, performance, security, architecture and design including Azure and virtualisation solutions. He is working with private and public sector organisations in the UK, Europe and USA. Gethyn delivers a range of SQL Server training, including the Microsoft Official Curriculum. He is the author of three training courses and two published books on SQL Server and Azure. You can find his blog at www.gethynellis.com
LinkedIn: https://www.linkedin.com/in/dennestorres/
Contact: https://www.red-gate.com/simple-talk/author/dennes-torres/
Dennes Torres is a Data Platform MVP with more than 25 years of experience in the IT area. He improves Data Platform Architectures and turns data into knowledge. As a Brazilian living in Malta, Dennes works as a software developer and leads the Malta MDP User Group. Having the MCSE Data Platform, Business Intelligence, and Microsoft Certified Trainer (MCT) certifications, Dennes has been in love with database servers since he was introduced to SQL Server 6.5, more years ago than he would like to admit.
LinkedIn: http://uk.linkedin.com/in/richardpdouglas
Contact: http://SQL.RichardDouglas.co.uk
Lord Richard Douglas is a Principal Solutions Engineer at SentryOne, where he specialises in the SQL Server product range. He has worked with SQL Server since version 7.0 in various developer and DBA roles and holds a number of Microsoft certifications. Richard is a keen member of the SQL Server community, having run a PASS Chapter in the UK and having served on the organizing committee for SQLRelay. Richard is on Twitter as @SQLRich.
SQL Saturday Edinburgh event gold sponsor
LinkedIn: https://www.linkedin.com/in/rwlpfrench/
Contact: http://www.sqlbob.uk/
Data Shepherd, Data Plumber, and Data Dance Teacher. From the first day at university when Robert was introduced to a mainframe computer, it was love at first sight. Since then he has worked hard to establish a career in Business Intelligence. Having worked in a diverse range of industries such as Banking, Retail, Architecture, and now Grant Management software. Currently the co-organizer of the Glasgow SQL Server user group and always on the lookout for more computer mischief.
Contact: http://www.wedham.com
Mikael Wedham is the first SQL Server MCM in Sweden and the only one who also is a Microsoft Certified Trainer. He has been paid to do things in SQL Server since 1993. His long experience makes him an appreciated speaker at events and conferences all over Europe. To be prepared for deep dives, he is also certified as an Open Water Scuba Instructor.
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: https://www.linkedin.com/in/andrewpruski
Contact: https://dbafromthecold.com/
SQL Server DBA with over 10 year's experience. Originally from Wales but now living in Ireland
SQL Saturday Edinburgh event gold sponsor
LinkedIn: http://uk.linkedin.com/in/johnqmartin/
Contact: https://www.mssqltips.com/sqlserverauthor/291/john-martin/
John Martin is a Data Platform Engineer working in the financial sector, as well as Vice President Marketing for the PASS organization and currently a Microsoft Data Platform MVP. Previously John has worked as a product manager for SentryOne and a Premier Field Engineer with Microsoft UK. John has over a decade of experience working with SQL Server and the Microsoft Data Platform. Working as a DBA, developer and consultant for Microsoft, he has been lucky enough to see how best, and how not, to use SQL Server and the Data Platform effectively.
LinkedIn: https://www.linkedin.com/in/kevin-chant/
Contact: https://www.KevinRChant.com/
Senior Database Architect originally from the UK and now living in the Netherlands. Over 23 years experience in the IT sector, and has supported databases for companies in the top 10 of the fortune 500 list. In addition to a lot of SQL Server experience also has a fair few Microsoft Certifications. In addition, was probably the last ever person in the world to gain the MCSD Azure Architect certification and has gained the latest Microsoft DevOps Engineer Expert certification. Has real life experience with SQL Server and Azure Devops. Currently SQL Server Product Owner of around 1,900 instances. In addition, done various things over the years for the Data Platform Community.
Shreeya Subramani is just 10 years old, and has a huge passion to share her knowledge and expertise that she has learnt so far from her father, Dr.Subramani Paramasivam (Microsoft MVP, MCT). Shreeya started speaking alongside her father when she was 6 years old. Since then, she started contributing to build and conduct Data Science classes for Kids.
Contact: http://tsqltidy.blogspot.com
Mark Pryce-Maher is an Azure SQL Data Warehouse Architect at Microsoft with lots of database /azure experience.
LinkedIn: http://uk.linkedin.com/in/johnqmartin/
Contact: https://www.mssqltips.com/sqlserverauthor/291/john-martin/
John Martin is a Data Platform Engineer working in the financial sector, as well as Vice President Marketing for the PASS organization and currently a Microsoft Data Platform MVP. Previously John has worked as a product manager for SentryOne and a Premier Field Engineer with Microsoft UK. John has over a decade of experience working with SQL Server and the Microsoft Data Platform. Working as a DBA, developer and consultant for Microsoft, he has been lucky enough to see how best, and how not, to use SQL Server and the Data Platform effectively.
LinkedIn: http://uk.linkedin.com/in/alexanderyates
Contact: http://www.workingwithdevs.com
Alex Yates has been helping organisations to apply DevOps principles to relational database development and deployment since 2010. He’s most proud of helping Skyscanner develop the ability to deploy 95 times a day. Originally for Redgate, later for DLM Consultants, Alex has worked with clients on every continent except Antarctica – so he’s keen to meet anyone who researches penguins. A keen community member, he co-organises SQL Relay, is the founder of www.SpeakingMentors.com and has been recognised as a Microsoft Data Platform MVP since 2017.
LinkedIn: http://fr.linkedin.com/in/christophelaporte
Contact: http://conseilit.wordpress.com/
Christophe Laporte is based in Toulouse, France and has worked with SQL Server since 1997, starting with SQL Server 6.5. Focusing on high availability, VLDBs, and virtualization, Christophe also delivers performance audits on SQL Server and helps companies in choosing the appropriate architectures (Cloud, OnPremise, or Hybrid). In addition to his MCM certification, Christophe is also a SQL MVP, speaker, and Microsoft Certified Trainer since 2000.
SQL Saturday Edinburgh event gold sponsor
LinkedIn: https://uk.linkedin.com/in/robsewellsqldba
Contact: http://sqldbawithabeard.com
Rob was once a production SQL Server DBA, but is now generally found automating the Data Platform and providing training for clients. He has a passion for PowerShell, Data, and DevOps. He is an MVP, an officer for the DevOps PowerShell VG, and has spoken and volunteered at many PowerShell and Data events. He is a member of the committee that organises Data In Devon and the European PowerShell Conference. He is a proud supporter of the Data and PowerShell communities. He relishes sharing and learning and can be found doing both via Twitter @sqldbawithbeard and his blog sqldbawithabeard.com. He spends most of his time looking at a screen and loves to solve problems.
SQL Saturday Edinburgh event gold sponsor
LinkedIn: https://uk.linkedin.com/in/jarrinuk2000
Contact: http://www.chrisjarrintaylor.co.uk
Chris (@SQLGeordie) is a Principal Consultant working at Jarrin Consultancy providing SQL Server and Microsoft Azure consultancy to clients worldwide in a variety of industries ranging from Financial to Healthcare. He has been working with SQL Server since 2001 and during that time has become extremely strong in all areas of SQL Server but specialises in Security, System Optimisation and SQL Server Internals.
LinkedIn: https://www.linkedin.com/in/kevin-chant/
Contact: https://www.KevinRChant.com/
Senior Database Architect originally from the UK and now living in the Netherlands. Over 23 years experience in the IT sector, and has supported databases for companies in the top 10 of the fortune 500 list. In addition to a lot of SQL Server experience also has a fair few Microsoft Certifications. In addition, was probably the last ever person in the world to gain the MCSD Azure Architect certification and has gained the latest Microsoft DevOps Engineer Expert certification. Has real life experience with SQL Server and Azure Devops. Currently SQL Server Product Owner of around 1,900 instances. In addition, done various things over the years for the Data Platform Community.
LinkedIn: http://www.linkedin.com/in/retracement
Contact: http://tenbulls.co.uk
Mark Broadbent is a Data Platform MVP and SQL Server MCM with more than 20 years of experience working with SQL Server and principal of SQLCloud, a consultancy specializing in concurrency control and highly available solutions. He is the founder of the UK's SQLSaturday Cambridge (its first and largest), SharePoint Saturday Cambridge, the Hybrid Virtual Chapter and the East Anglia SQL User Group.
SQL Saturday Edinburgh event gold sponsor
LinkedIn: https://www.linkedin.com/in/richard-benner-856a0b47/
Contact: https://richbenner.com
A performance tuning DBA that loves optimising SQL Servers. I've had enough poorly servers thrown at me that I've gotten pretty good at fixing them quickly.
LinkedIn: https://www.linkedin.com/in/oskariheikkinen/
I have several years of experience in using Azure for data analytics at large scale. I have been implementing numerous projects for some of the largest companies in the Nordics. I am a Microsoft MVP, and I currently hold the MCSE: Data Management and Analytics certification. As a Microsoft Certified Trainer (MCT), I hold classes for subject-matter experts and consultants internally as well as give external customer training sessions. I am also an active speaker on community events.
LinkedIn: https://www.linkedin.com/profile/view?id=207669359amp;trk=nav_responsive_tab_profile
Master of physic in Germany 2000, worked as MS Flightsimulator Expert on the side. Employed at OLTEC Windamp;Solar as C++/Web/PHP/MySQL -Programmer. Company bought by Vestas 2004 shifting to MS-SQL,SSIS until now.
LinkedIn: https://www.linkedin.com/in/markhayes/
Mark Hayes (Certified Business Intelligence Professional (CBIP), MPP - Data Science, MPP - Big Data) is a freelance Microsoft Data Platform consultant and has worked with Microsoft data technologies since 2000 with a wide range of national and international companies. He is a regular speaker on Microsoft Data Platform topics and co-leader of the Cork SQL User Group and the Cork SQL Saturday.
LinkedIn: https://www.linkedin.com/in/temalone/
Contact: http://blog.sqltrainer.com
Ted is currently a Data and AI Solution Architect with Microsoft's Customer Success organization. In this role, he works with large organizations to ensure that they properly and efficiently apply AI, Machine Learning, Data Analytics, and Business Intelligence technologies to achieve their business goals. Prior to taking this role, Ted worked with the US Federal Government to help solve "Big Data" problems through the use of cloud technologies. Prior to joining Microsoft, Ted was an architect in EMC's CTO organization, and led data development teams for a variety of startup organizations. Ted has worked with SQL Server since it's inception, and focuses on applying new technologies and techniques to age-old problems.
The following is a list of sponsors that helped fund the event.


|
| #define | COAP_MALLOC_TYPE(Type) ((coap_##Type##_t *)coap_malloc(sizeof(coap_##Type##_t))) |
| |
| #define | COAP_FREE_TYPE(Type, Object) coap_free(Object) |
| |
| #define | COAP_PRINT_STATUS_MAX (~COAP_PRINT_STATUS_MASK) |
| |
| #define | min(a, b) ((a) < (b) ? (a) : (b)) |
| |
| #define | PRINT_WITH_OFFSET(Buf, Offset, Char) |
| | Adds Char to Buf if Offset is zero. More...
|
| |
| #define | PRINT_COND_WITH_OFFSET(Buf, Bufend, Offset, Char, Result) |
| | Adds Char to Buf if Offset is zero and Buf is less than Bufend. More...
|
| |
| #define | COPY_COND_WITH_OFFSET(Buf, Bufend, Offset, Str, Length, Result) |
| | Copies at most Length characters of Str to Buf. More...
|
| |
| #define | MATCH_URI 0x01 |
| |
| #define | MATCH_PREFIX 0x02 |
| |
| #define | MATCH_SUBSTRING 0x04 |
| |
| #define | INET6_ADDRSTRLEN 40 |
| |
|
| static int | match (const coap_str_const_t *text, const coap_str_const_t *pattern, int match_prefix, int match_substring) |
| |
| coap_print_status_t | coap_print_wellknown (coap_context_t *context, unsigned char *buf, size_t *buflen, size_t offset, coap_opt_t *query_filter) |
| | Prints the names of all known resources to buf . More...
|
| |
| coap_resource_t * | coap_resource_init (coap_str_const_t *uri_path, int flags) |
| | Creates a new resource object and initializes the link field to the string uri_path . More...
|
| |
| coap_resource_t * | coap_resource_unknown_init (coap_method_handler_t put_handler) |
| | Creates a new resource object for the unknown resource handler with support for PUT. More...
|
| |
| coap_resource_t * | coap_resource_proxy_uri_init (coap_method_handler_t handler, size_t host_name_count, const char *host_name_list[]) |
| | Creates a new resource object for handling proxy URIs. More...
|
| |
| coap_attr_t * | coap_add_attr (coap_resource_t *resource, coap_str_const_t *name, coap_str_const_t *val, int flags) |
| | Registers a new attribute with the given resource . More...
|
| |
| coap_attr_t * | coap_find_attr (coap_resource_t *resource, coap_str_const_t *name) |
| | Returns resource's coap_attr_t object with given name if found, NULL otherwise. More...
|
| |
| coap_str_const_t * | coap_attr_get_value (coap_attr_t *attr) |
| | Returns attribute's value. More...
|
| |
| void | coap_delete_attr (coap_attr_t *attr) |
| | Deletes an attribute. More...
|
| |
| static void | coap_notify_observers (coap_context_t *context, coap_resource_t *r, coap_deleting_resource_t deleting) |
| |
| static void | coap_free_resource (coap_resource_t *resource) |
| |
| void | coap_add_resource (coap_context_t *context, coap_resource_t *resource) |
| | Registers the given resource for context . More...
|
| |
| int | coap_delete_resource (coap_context_t *context, coap_resource_t *resource) |
| | Deletes a resource identified by resource . More...
|
| |
| void | coap_delete_all_resources (coap_context_t *context) |
| | Deletes all resources from given context and frees their storage. More...
|
| |
| coap_resource_t * | coap_get_resource_from_uri_path (coap_context_t *context, coap_str_const_t *uri_path) |
| | Returns the resource identified by the unique string uri_path . More...
|
| |
| coap_print_status_t | coap_print_link (const coap_resource_t *resource, unsigned char *buf, size_t *len, size_t *offset) |
| | Writes a description of this resource in link-format to given text buffer. More...
|
| |
| void | coap_register_handler (coap_resource_t *resource, coap_request_t method, coap_method_handler_t handler) |
| | Registers the specified handler as message handler for the request type method . More...
|
| |
| coap_subscription_t * | coap_find_observer (coap_resource_t *resource, coap_session_t *session, const coap_binary_t *token) |
| | Returns a subscription object for given peer . More...
|
| |
| static coap_subscription_t * | coap_find_observer_cache_key (coap_resource_t *resource, coap_session_t *session, const coap_cache_key_t *cache_key) |
| |
| coap_subscription_t * | coap_add_observer (coap_resource_t *resource, coap_session_t *session, const coap_binary_t *token, const coap_pdu_t *request) |
| | Adds the specified peer as observer for resource . More...
|
| |
| void | coap_touch_observer (coap_context_t *context, coap_session_t *session, const coap_binary_t *token) |
| | Flags that data is ready to be sent to observers. More...
|
| |
| int | coap_delete_observer (coap_resource_t *resource, coap_session_t *session, const coap_binary_t *token) |
| | Removes any subscription for observer from resource and releases the allocated storage. More...
|
| |
| void | coap_delete_observers (coap_context_t *context, coap_session_t *session) |
| | Removes any subscription for session and releases the allocated storage. More...
|
| |
| int | coap_resource_set_dirty (coap_resource_t *r, const coap_string_t *query) |
| |
| int | coap_resource_notify_observers (coap_resource_t *r, const coap_string_t *query COAP_UNUSED) |
| |
| void | coap_resource_set_mode (coap_resource_t *resource, int mode) |
| | Sets the notification message type of resource resource to given mode . More...
|
| |
| void | coap_resource_set_userdata (coap_resource_t *resource, void *data) |
| | Sets the user_data. More...
|
| |
| void * | coap_resource_get_userdata (coap_resource_t *resource) |
| | Gets the user_data. More...
|
| |
| void | coap_resource_release_userdata_handler (coap_context_t *context, coap_resource_release_userdata_handler_t callback) |
| | Defines the context wide callback to use to when the resource is deleted to release the data held in the resource's user_data. More...
|
| |
| void | coap_resource_set_get_observable (coap_resource_t *resource, int mode) |
| | Set whether a resource is observable. More...
|
| |
| coap_str_const_t * | coap_resource_get_uri_path (coap_resource_t *resource) |
| | Get the uri_path from a resource . More...
|
| |
| void | coap_check_notify (coap_context_t *context) |
| | Checks all known resources to see if they are dirty and then notifies subscribed observers. More...
|
| |
| static void | coap_remove_failed_observers (coap_context_t *context, coap_resource_t *resource, coap_session_t *session, const coap_binary_t *token) |
| | Checks the failure counter for (peer, token) and removes peer from the list of observers for the given resource when COAP_OBS_MAX_FAIL is reached. More...
|
| |
| void | coap_handle_failed_notify (coap_context_t *context, coap_session_t *session, const coap_binary_t *token) |
| | Handles a failed observe notify. More...
|
| |


summary of yesterday plan for today
-everyone should be cloning on their own
git clone create new repo - git remove remote origin - git add remote origin
make changes push to our repo submit pull request to flatiron repo
DB design:
student:
id (pk, incrementer)
name
Quiz:
id (pk, incrementer)
a question
b question
c question
d question
e queston
answer
Student/answers
student id
quiz id
circles for pictures css - mask transparent circle on top of it
write a site that degrades gracefully. progressive enhancement- don’t build for the worst browser rather than the worst
1 2 3 4 5 |
|
communicate on the web protocols ssh http http git:// ftp aim://
https required more resources // => piggy back the protocol that is being used. over course if this is local it will break on the file system
tr;dl => too long, don’t read
Programmer of the day Edgar F. Codd: designed the relational database model
- relational model: has data with keys one column has a primary key and all the other data works off of that primary
don’t want to repeat data so you a second normal form is what you want over third normal form. network model
Hierarchical model is the other kind, that no one uses
“A relation is in second normal form if the relation depends on the key, the whole key, and nothing but the key, so help me Codd.”source
Beautiful code- is in proportion to the complexity of the problem.
left joins, inner joins, etc.
1 2 3 4 |
|
The fewer tables you query, the more efficient the query is
difference between a where and a join
refernential integrity problem
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
Different SQL JOINs
Before we continue with examples, we will list the types of JOIN you can use, and the differences between them.
JOIN: Return rows when there is at least one match in both tables (this is also known as inner join) LEFT JOIN: Return all rows from the left table, even if there are no matches in the right table RIGHT JOIN: Return all rows from the right table, even if there are no matches in the left table FULL JOIN: Return rows when there is a match in one of the tables


top
|
up
|
prev
|
next
XPathLastFunction Class
Definition at line
258
of
XPathFunction.cpp
Constructors
XPathLastFunction
()
Member Functions
std::unique_ptr<
XPathObject
>
Evaluate
(
XPathContext
& context, std::vector<
XPathObject
*>& arguments)
override
Constructor Details
XPathLastFunction Constructor
sngxml::xpath::XPathLastFunction::XPathLastFunction()
Definition at line
265
of
XPathFunction.cpp
:
265
:
XPathFunction
(
U"last"
,
0
,
0
)
266
{
267
}
Declaration at line
261
of
XPathFunction.cpp
Member Function Details
Evaluate Member Function
std::unique_ptr<
XPathObject
> sngxml::xpath::XPathLastFunction::Evaluate(
XPathContext
& context, std::vector<
XPathObject
*>& arguments)
override
Definition at line
269
of
XPathFunction.cpp
:
270
{
271
if
(
!
arguments
.
empty
(
)
)
272
{
273
throw
std
::
runtime_error
(
"sngxml::xpath::last() function requires no arguments"
)
;
274
}
275
return
std
::
unique_ptr
<
XPathObject
>
(
new
XPathNumber
(
context
.
Size
(
)
)
)
;
276
}
Declaration at line
262
of
XPathFunction.cpp
Base class overridden functions:
sngxml::xpath::XPathFunction::Evaluate
Calls:
sngxml::xpath::XPathContext::Size
top
|
up
|
prev
|
next


Computer scientist, photographer, outdoor sports enthusiast.
Interested in purchasing a print or doing a photoshoot? Email me!


I am very passionate about learning. I have always thought of myself as a lifelong learner, and I feel that there is never too much a person can know about any particular topic. Even when I am learning about something that I feel like I am highly knowledgeable about, I go into it thinking about what I can learn from this new experience that I had not known before.


This paragraph is black and is the first paragraph.
This paragraph is red and is the second paragraph.


| Name: | |
| Email address: | |
Data Protection & Privacy:You agree that your entered data is stored and processed for marketing purposes. |
| Name: | |
| Email address: | |
Data Protection & Privacy:You agree that your entered data is stored and processed for marketing purposes. |


WITNESS LIST
Pensions Committee
June 13, 2016 - 9:00 AM
Houston Pensions System
On:
Atkins, Doug (City of Houston Pension)
Box, Daniel (HOPE 123)
Bratton, Terry (Houston Police Officers Pension System)
Bravenec, George (Association of Retired Houston Municipal Employees)
Cade, Charles (Self)
Childers, Bailey (National Public Pension Coalition)
Clark, Todd (Houston Firefighters Relief and Retirement Fund)
Frazer, Bill (Self)
Hunt, Ray (Houston Police Officers Union)
Jones, Charles (City of Houston and HOPE)
King, William (Self)
Lawson, John (Houston Police Officers Pension System)
Long, David (Houston Municipal Employee Pension System)
Maher, Francis (Houston Fire Department Pension)
Marsh, Ralph (Houston Firefighters Relief and Retirement Fund)
Mason, Craig (Self)
Mose, Sherry (Houston Municipal Employee Pensions System)
No Last Name, Anumeha (Pension Review Board)
Pelati, Joseph (Spring Branch Republicans)
Quintero, James (Texas Public Policy Foundation)
Trainer, Michael (San Antonio Fire and Police Pensioners Association)
Turner, Sylvester (City of Houston)
Wald, Jerome (Self)
Wiley, Pamela (Self)
Registering, but not testifying:
On:
Herbold, Kenneth (Pension Review Board)
1


[Part XIII.] ARSON
Cross References
Special sentencing considerations for arson; other actions not prohibited, see §706-606.2.
[§708-8251] Arson in the first degree. (1) A person commits the offense of arson in the first degree if the person intentionally or knowingly sets fire to or causes to be burned property and:
(a) Knowingly places another person in danger of death or bodily injury; or
(b) Knowingly or recklessly damages the property of another, without the other's consent, in an amount exceeding $20,000.
(2) Arson in the first degree is a class A felony. [L 2006, c 181, pt of §1]


IntroductionScene
class IntroductionScene : SCNScene
Undocumented
-
Undocumented
Declaration
Swift
var gameContext: GameContext!
-
Undocumented
Declaration
Swift
var demoCamera: SCNNode?
-
Undocumented
Declaration
Swift
var gameCamera: SCNNode?
-
Undocumented
Declaration
Swift
var selectionPath: [SCNNode]
-
Undocumented
Declaration
Swift
var dice: [Die3D]
-
Undocumented
Declaration
Swift
var selection: [Die3D]
-
Undocumented
Declaration
Swift
var timerNode: SCNText!
-
Undocumented
Declaration
Swift
var scoreNode: SCNText!
-
Undocumented
Declaration
Swift
var selectedWord: SCNNode!
-
Undocumented
Declaration
Swift
var diceBoard: SCNNode!
-
Undocumented
Declaration
Swift
var board: GameBoard? { get set }
-
Undocumented
Declaration
Swift
var selectionLocked: Bool
-
Factory creation method. If you want a scene that is for demos, pass true for the useDemoCamera property.
Declaration
Swift
static func loadGameScene(useDemoCamera: Bool = false) -> IntroductionScene?
Parameters
useDemoCamera
Whether or not to use the Demo Camera.
Return Value
A GameScene object if it could be created.
-
Sets the camera in the scene.
Declaration
Swift
func setCamera(cameraNode: SCNNode?)
Parameters
cameraNode
An SCNNode with a camera object.
-
Loads the board (assumes the board exists).
Declaration
Swift
func loadBoard()
-
What is the current word that’s selected on the board?.
Declaration
Swift
func getCurrentWord() -> String
Return Value
The current word selection made by the user.
-
Performs the intro animation indefinitely.
Declaration
Swift
func introAnimation()
-
Rotates the board (true = clockwise, false = counterclockwise)
Declaration
Swift
func rotateBoard(_ clockwise: Bool)
-
Updates the score text in the scene from the current game
Declaration
Swift
func updateScore()
-
Tells you if everything is ready to go in the game
Declaration
Swift
func readyToStart() -> Bool
Return Value
True if everything that’s needed is available, False otherwise
-
This method will show the currently selected word and then animate the text flying off the screen.
Declaration
Swift
func showGuessedWord()
-
Undocumented
Declaration
Swift
func showDuplicateSelection()
-
Undocumented
Declaration
Swift
func showInvalidSelection()
-
Clears out the current selection.
Declaration
Swift
func clearSelection()
-
Undocumented
Declaration
Swift
func updateGameCamera()
-
Adds a selection between the provided dice. This function will create a new SCNNode which is the cylinder object that represents the selection.
Parameters
fromDie
The First die that the selection starts from.
toDie
The next die that the selection goes to.
-
Removes the selection. It will do it instantly (no animation) if you set animated to false.
Declaration
Swift
func cleanOldShapes(_ animated: Bool = true)
Parameters
animated
Whether or not you want a nice fade out animation to accompany the removal of the shapes.
-
This method figures out what dice to render the individual selection segments from/to and then delegates this off to the 3D Scene.
Declaration
Swift
func renderSelection()
-
Given the dice positions you’ve provided, this will give you the angle to rotate the cylinder. Note that the points are array index points, not the exact points of the dice themselves. (e.g. 0,0; 3,3; 2,1; …)
Declaration
Swift
func mapMovesToAngle(_ point1: CGPoint, point2: CGPoint) -> Float
Parameters
point1
The starting point for the cylinder.
point2
The (approximate) ending point for the cylinder.
Return Value
The Angle to rotate the cylinder based on the starting and ending points.
-
Undocumented
Declaration
Swift
func configure()
-
Renders the Dice (in the appropriate position, based on their index)..

Return Value
The Die3D that was created.
-
Undocumented
Declaration
Swift
func findAndRemoveCameras()
-
Undocumented
Declaration
Swift
func formatScore(_ score: Int) -> String


Let the parallelogram ABCD have the same base BC with the triangle EBC, and let it be in the same parallels BC and AE.
I say that the parallelogram ABCD is double the triangle BEC.
Join AC.
Then the triangle ABC equals the triangle EBC, for it is on the same base BC with it and in the same parallels BC and AE.
But the parallelogram ABCD is double the triangle ABC, for the diameter AC bisects it, so that the parallelogram ABCD is also double the triangle EBC.
Therefore if a parallelogram has the same base with a triangle and is in the same parallels, then the parallelogram is double the triangle.


--- title: "Lab 2: Do-files" linktitle: "Lab 2" date: "2020-06-15" due_date: "2020-06-15" due_time: "11:59 PM" toc: true menu: assignment: parent: Labs weight: 2 type: docs editor_options: chunk_output_type: console ---
By the end of this tutorial you should be able to complete the following tasks in Stata:
Create and save a do-file
Explore variables and generate new ones
Be able to find help with Stata issues - find new commands, check and debug your work, etc.
| command | description |
|---|---|
tabstat var1 |
calculate mean of var1 |
tabstat var1,by(var2) |
calculate mean of var1 separately for each value of var2 |
gen newvar =var1 |
generate a new variable, newvar , and set it equal to values of var1 |
gen newvar =1 if var2 == exp |
generate a new variable, newvar , and set it equal to 1 if var2 equals some expression, and missing otherwise |
gen newvar = var2 == exp |
generate a new variable, newvar , and set it equal to 1 if var2 equals some expression, and 0 otherwise |
drop var1 var2 |
drop the variables var1 and var2 . |
drop if exp |
drop observations for which exp is true |
keep var1 var2 |
drop everything but var1 and var2 . |
keep if exp |
drop all observations unless exp is true |
Suppose I asked you to recreate your analysis from our last lab. How long would it take you? If you used a do-file, you would just have to click a button, because your analysis would be replicable. We’re going to learn about the glory of do-files and a few other descriptive statistics tricks.
The instant gratification of the Command window is tempting, but getting comfortable with do-files will save you lots of time, make collaboration easier, and reduce errors!
You can get pretty far in Stata relying on the Command and Review window, but we may want a record of the commands we want to run for our analysis. One thing that makes Stata different from a program like Excel is that you can create do-files, essentially small programs that will run your analysis again and again, in exactly the same way. For econometric analysis this is CRUCIAL.
A do-file can be written in any text file and then saved with the
extension .do
, but we’ll use the do-file editor. Open a new do-file by
clicking on the do-file button. Save it as “StataLab1.do”
The do-file editor is where we will write our programs, and it has some nice color coding to help us avoid mistakes. For your problem sets and papers, you must ALWAYS submit a do-file along with your results. Some people will like to practice in the Command window and then copy the commands they’re satisfied with to the do-file, while others will prefer to work entirely in the do-file. It’s your call, though the second one is a little less risky.
Do-files are used to record your past work and possibly to share your work with others. It’s important to properly document your work using comments. There are three ways to comment
Comment the whole line with an asterisk
Comment the whole line or part of a line with two forward slashes
Use slash-asterisk to open and close a comment section
The do-file editor will turn all your comments green so you don’t get confused.
Put everything in a do-file! An important feature of any good research project is that the results should be reproducible. For Stata the easiest way to do this is to create a text file that lists all your commands in order, so anyone can re-run all your Stata work on a project anytime. Such text files that are produced within Stata or linked to Stata are called do-files, because they have an extension .do (like intro_exercise.do). These files feed commands directly into Stata without you having to type or copy them into the command window.
Imagine you’re just about done with the analysis for your research paper. While working on the final regression, you discover that one of your variables wasn’t cleaned properly, and you need to drop some outliers from the data. Do you correct it and redo everything from scratch? Could you even do that? How long would it take?
With a set of do-files, all you have to do is correct the variable early in the code, and re-run everything. If your code is quick, it will take just a few minutes. Easy!
An added bonus is that having do-files makes it very easy to fix your typos, re-order commands, and create more complicated chains of commands that wouldn’t work otherwise. You can now quickly reproduce your work, correct it, adjust it, and build on it.
Log your results. Maintaining logs can help you quickly retrieve results and serve as a record of past work in case you accidentally overwrite commands. Logs contain the commands and the results.
Never overwrite your original files. A good do-file structure starts with your original, raw data, then cleans and analyzes it to get your final results. A “master” do-file can piece all these together.
Replicability is key. Your code should be replicable to someone else who picks up your raw files and code.
Comment, comment, comment! Clear commenting is essential to help others understand your code and to remember what you did.
One of the strengths of Stata is that complicated processes can be completed with simple commands. One of its weaknesses is that it’s not always obvious what those specific commands are. In our problem sets and your research paper, you will (I promise) have to calculate or estimate something in a way we haven’t covered.
Stata help file: help command
Search Stata documentation: finidit keyword
Google the thing you are trying to do: i.e.: make scatterplot Stata, turn rows into columns Stata, cluster standard errors Stata, etc.
{{< youtube w7Ft2ymGmfc >}}
{{< video library=“true” src=“my_video.mp4” controls=“yes” >}}
Download acs2014_all.dta
and labtemplate.do
from Blackboard.
Move these files to your Z-drive (or wherever you store your files).
Open labtemplate.do
and run it. Does it work?
Drop some variables we don’t need: gq
, serial
, and hhwt
. How
many variables remain?
What is the age distribution of the sample? Specifically, report the mean, median, minimum, and maximum age of the sample.
Because very young workers might be still in school, drop anyone in your sample who is less than 23 years old. (Maintain this sample restriction for the rest of the lab). How many people are left in your sample?
Generate a new variable, lt35
that is equal to one if a person is
less than 35 years old and 0 otherwise. What is the mean of lt35
?
Using the tabstat
command, find the average income and wages for
those under age 35 and those at least age 35.
Using the tabstat
command, find the average income and wages for
men and women.
There are several reasons why men might earn more than women. One reason might be that men are better educated than women; and workers with higher wages earn more. We will test this in two ways.
First, generate a variable equal to one if a person has completed at least some post-secondary education, and zero otherwise. What is the mean of this variable?
What share of men have at least some post-secondary education? What about women?
We can also see if gender-wage gaps are bigger for lower vs. higher-educated workers. For those without post-secondary education, what is the average wage gap? For those with post-secondary education, what is the average wage gap?
Name two additional reasons that may explain why men’s income is higher than women’s income on average. How would you test each one? (You do not have to actually do this test, ju describe in as much detail as possible. You can assume you have additional data beyond what is provided here.)
Make a two histograms, one of the income distribution for men and one of the income distribution for women. Make sure the y-axis indicates the “fraction” of individuals, not the density. Print it out and include with your log file.


Experienced web product developer
Hi! I'm Will, a senior web developer based in London UK, specialising in Node JS, PHP, frontend JS and CSS.
My ethos is to build products with robust processes and architecture, great attention to detail, and thoughtful user experience.
I'm currently available on a freelance or contract basis in London.


Preparation time
less than 30 mins
Cooking time
10 to 30 mins
Serves
Serves 2
Dietary
Blanch the nettles in boiling water for two minutes, then drain, squeeze dry, and chop finely. Wash and finely chop the other hedgerow herbs.
Bring the stock to simmering point on a low heat. In a separate, fairly heavy-based saucepan sweat the onion or shallot in the butter for a few minutes until soft but not coloured. Add the rice and cook for a further few minutes.
Add a ladle of the hot stock and allow to come to a gentle simmer. Cook the rice until almost all the liquid has been absorbed, stirring occasionally to make sure the risotto does not catch on the bottom of the pan.
Continue to add the liquid by degrees, incorporating the wine towards the end of the cooking, until the liquid is all absorbed, the risotto is creamy, and the individual rice grains tender with just a hint of chalkiness in the middle.
Stir the chopped nettles and herbs into the risotto, which should become a beautiful pale green, flecked with tiny pieces of herb. Season to taste with salt and pepper.
The risotto should be served not piping hot, but tiede, with a sprinkling of chopped fresh herbs and a trickle of olive oil on each portion. parmesan cheese is not required.


This is a very usefull tool that can essentially save your computer.
The team here is very educated about viruses. We can even scan files to make sure they are safe!
Other antivirus' might find apps that you have developed 'suspicious'. We do not target apps made by you.
Web protection protects you from suspicous sites that could be giving you a virus
We can identify what the virus is and the best way to get rid of it.
Plus, this is free. Other web protection costs lots of money
We are expert image creators. We have created logo's for many people. We design logo's to
be exactly what you want. If you dont get what you want, we will redo our work until it is
perfect.

It includes simple antivirus and simple custom desings.
This is for people on a budget.
It includes Premium Antivirus, Simple custom designs, and simple Web protection.
This is the plan for people who want max functionality.
It includes everything, which is super Antivirus, any Custom design, and
Super Web Protection.


Download Dirt Rally 2 0 Torrent Image By Shainajuf6e
Dirt 4 Ps4 Download V 1 01 In Google Drive And Mega Nz
Buy Dirt Rally 2 0 Ps4 Compare Prices
Dirt Rally
Dirt Rally Pc Cdkeys
ダートラリー2 0 アップデート 1 22 パッチノート
Dirt Rally Game Trainer V1 0 5 Trainer Download Gamepressure Com
Dirt Rally Ps4 Ps5
Dirt 4 On Steam
Codemasters On Twitter Yet To Take A Look At Dirt Rally 2 0 We Ve Got A Free Trial Available To Download For Xbox One And Ps4 Xbox One Https T Co Jwfmhczqmz Ps4 Https T Co Ctdhijqfhq
Dirt Rally 2 0 Update Version 1 12 Patch Details For Ps4 And Xbox One
Dirt Rally Ps4 Steelbook Only For Playstation 4 Dirt Steelbook Ps4 Xbox One Ebay
Dirt Rally Pc Game 2015 Full Download Rally Games Racing Video Games Rally
Dirt Rally 2 0 Ps4 Digital Box Price Comparison
Dirt Rally 2 0 Redeem Code Generator Gamezseeker Com
Ocean Of Games Dirt Rally 2 0 Pc Game Free Download
Dirt Rally Torrent Download Crotorrents
Dirt The Award Winning Off Road Racing Franchise
Dirt Rally Release Date And News For Ps4 Xbox One Download Online Racing Game Free
通販 中古即納 Ps4 Dirt Rally 2 0 ダートラリー2 0 Day One Edition Eu版 Cusa 12747 20190226 メディアワールド
Dirt Rally Review Godisageek Com
Dirt Rally Ps4 Digital Download Saudipro
Season One Content Revealed For Dirt Rally 2 0 Codemasters Blog


Home
(current)
Dashboard
About
Login
Disabled
Email address
We'll never share your email with anyone else.
Password
sign in
Forgot password
Don't have an account?,
Sign up here


---
title: "Eclipse Remote System Explorer fails to connect via ssh with algorithm negotiation failure"
date: "2014-04-08"
redirect_from: "/post/82092881937/eclipse-remote-system-explorer-fails-to-connect-via-ssh"
categories:
- "Eclipse"
- "Java JDK"
- "Java JRE"
- "RSREG1066"
- "AES192"
- "AES256"
- "Crypto"
- "SSH"
- "Remote System Explorer"
- "RSE"
- "JSCH"
- "Algorithm negotiation failed"
---
Windows 7 SP1, Java JRE 1.7.0_51-b13 (32-bit), Eclipse Kepler Service Release 2 build 20140224-0627, Eclipse Plugin RSE SSH Services <IP_ADDRESS>305201712
If you use a Java IDE or any other Java program that makes ssh connections to a server that has anything over 128 bit encryption turned on, then you'll see that it fails with the error:
RSEG1066 Failed to connect sshd on HMSWEBXX01.ZZZ.LAN:22 Algorithm negotiation failed
By default, the Java Development Kit and Java Runtime Environment do not offer ciphers larger than 128 bits. To fix, all you need to do is download the strong encryption JAR files for your version of the JDK/JRE and restart your Java app.
Java Cryptography Extension Unlimited Strength Downloads
JDK/JRE 1.6
http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
JDK/JRE 1.7
http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
Copy local_policy.jar
and US_export_policy.jar
to your JRE/JDK's lib\security directory
Examples of possible destination folders: JRE 1.6, 32-bit C:\Program Files (x86)\Java\jre6\lib\security JRE 1.7, 32-bit C:\Program Files (x86)\Java\jre7\lib\security JRE 1.6, 64-bit C:\Program Files\Java\jre6\lib\security JRE 1.7, 64-bit C:\Program Files\Java\jre7\lib\security JDK <IP_ADDRESS>, 64-bit C:\Program Files\Java\jdk1.7.0_51\jre\lib\security


Definition at line 290 of file Entities.py.
| def Entities.Protozoan.__init__ |
( |
|
self, |
|
|
|
tile |
|
) |
| |
| def Entities.Protozoan.beach_reachable |
( |
|
self | ) |
|
Returns whether an adjacent Beach entity can be seen.
:return: True if an adjacent tile can be walked upon, False otherwise
Definition at line 307 of file Entities.py.
| def Entities.Protozoan.info |
( |
|
self | ) |
|
| def Entities.Protozoan.jump_on_beach |
( |
|
self | ) |
|
Lets this Protozoan move onto the beach and transform itself into
a SmallHerbivore or SmallCarnivore.
:return: tuple containing old Protozoan entity and new LandAnimal entity
Definition at line 317 of file Entities.py.
| def Entities.Protozoan.move |
( |
|
self | ) |
|
Lets this Protozoan move on a random tile holding only Water. Death
is possible if this Protozoan runs out of lifetime.
:return: this Protozoan if it has died, None otherwise
Definition at line 330 of file Entities.py.
| Entities.Protozoan._beach_tiles |
|
private |
| Entities.Protozoan._time_to_live |
|
private |
| Entities.Protozoan._token |
|
private |
The documentation for this class was generated from the following file:


My Projects
Project 1
CatMews is my first ever web project! My sister asked me to create an infortmative website for cat owners and cat lovers to check out cat facts and silly cat pictures! We planned to create a website where you can sign up and socialize to other people on the forums. Although, I haven't completed that part yet, the framework is there. She helped me immensely during the design process and testing was done by both me and her. This website is created from scratch with the help of HTML, CSS, JS and PHP.
You can click on the image below to be redirected to the webpage!
Project 1 Gallery
This is CatMews cat gallery. You can look at meme cats and click on them to see the slideshow overlay gallery. I used Lightbox II Gallery jquery by Lokesh Dhakar!
You can click on the image below to be redirected to the webpage!
Project 1 Login Page
Although, you can't actually log in or sign up to the CatMews website the HTML form is there and it is fully functional!
You can click on the image below to be redirected to the webpage!
Project 2
My next project was requested by mom. She asked me to design and develop a wild cat consrvation website. This website was made with PHP, CSS, JS and HTML. WildCattos have wild cat gallery, donation page, wild cat facts. I shared a google doc of the Layout and Wireframes and all the design plan with my mom and she shared all her ideas and recommendations! Testing was done by both of us and the website was ready to be online!
You can click on the image below to be redirected to the webpage!
Project 2 Gallery
WildCattos gallery has photos of adorable wild cat kittens! You can click on the photo see the full sized picture. All the photos were compressed with a PNG compressor to decrease the website size. I used the same JQuery by Loresh Dhakan.
You can click on the image below to be redirected to the webpage!
Project 2 Donation Page
Wildcattos support three seperate wildcat organizations Panthera, International Society for Endangered Cats (ISEC) and Wildcat Haven. Even though you can't donate directly through our website, you can however click the logos to be redirected to their respective donation page!
You can click on the image below to be redirected to the webpage!
Project 2 Contact Page
WildCattos and CatMews both have similar contact page, so I decided to showcase WildCatto's. You can fill out the form and shoot me an email regaring the website and other inqueries. The form heavily relies on JavaScript to function.
You can click on the image below to be redirected to the webpage!
Project 2 Case Study
If you want to learn more, please go to my Case Study google doc for my WildCattos website. This is where you can really learn how I work with my clients and how the entire design process and implementation is like!
You can click on the image below to be redirected to the google doc!


Overview
Most assignments will have a companion lab to help you learn the task and should cover similar content. You will be given time in class to work on the lab and ask me questions as you work through them. You should seek help from all sources (me, peers, internet) in doing this labs. You do not need to document sources of help as this is a learning experience, rather than a graded homework. However, it is your responsibility to complete the lab outside of class, if you were not able to complete them during the allotted time in class. There will not always be sufficient time in class to complete, but it is important that you complete them in order to learn the required contents.
Labs are part of the companion assignment. Labs will not be graded, but if you do not submit them 2 points will be taken off the companion assignment grade.
Submission
Labs are due on the same day as the companion assignments. Attach the following to the companion assignment submissions
In this assignment, you will learn the basics of working with one dataset. By the end of this assignment, you should be able to
Getting Data
Download 2010 National Survey on Drug Use and Health (NSDUH) dataset which is conducted by SAMHSA and housed at the Inter-university Consortium for Political and Social Research (ICPSR) at the University of Michigan.
This dataset contains survey measures for the prevalence and correlates of drug use in the United States, such as information on illicit drugs, alcohol, and tobacco use, substance abuse treatment history, DSM diagnostic criteria, personal and family income sources and amounts, health care access and coverage, illegal activities and arrest record, neighborhood safety/context, and respondent demographics. The goals of this homework are for you to download and import this data into SAS; clean and recode this data using the survey documentation as a guide; and some basic, descriptive patterns in the data as instructed below.
Data housed at ICPSR are generally well maintained and documented, and they usually have SAS versions of the datasets available for download (which saves you from having to convert and label your data).
At this point, the website will ask you to create a free log in (probably only if you are o_ campus { if you are on campuses it should recognize your IP address on campus) and agree to terms of service. Your browser should start downloading a .zip _ " This dataset, called \32722-0001-Data.dta", is the dataset you will use in this assignment.
Use the Dataset
This is a large dataset - so the dataset should be used with care. If you load this dataset fully you will have:
obs: 57,873
vars: 3,112
size: 364,831,392 or 364MB
P1. Subset vars
SAS: use keep statements.
The following variables are what we will use for this assignment. They are indicators for substance use, treatment, insurance coverage, race, gender, health status, age, work status, and county of residence. caseid, cigever, alcever, cocever, mjever, txever, medicare, caidchip, champus, prvhltin, income, health, irsex, catage, newrace2, coutyp2, wrkhrsw2
P2.1. Describe the dataset
Describe the dataset including the number of obs and vars that are in your subset of data.
P2.2 Check your data.
Preparing your data for analysis usually involves:
P3.1 Calculating new variables or manipulating existing variables
In this section you will calculate some variables that we can use in the next section for descriptive analysis
P3.2 Checking and coding missing values: MJEVER
In this section you will calculate some variables that we can use in the next section for descriptive analysis
P3.3 Calculating new variables or manipulating existing variables
Now you are going to repeat what you did above using DIFFERENT code. Learning different ways to do the same task is a good way to learn to code well. Some sections of the code can be the same as before.
P3.4 Adding or changing variable labels, variable names, and value labels
P3.5 Save out your data (i.e. into data/mynsduh) into a permanent dataset for use later.
In this section you will perform some descriptive analysis of continuous and categorical data in the subset of data.
P4.0 Identify variables by type
Look at the descriptive to initially determine variables by type
P4.1 Create a summary table for any continuous variables
Include the mean, standard deviation, p99, and N (total Number) values in this table for each continuous variable.
P4.2 Create these cross-tabulations for categorical variables
Several commands can be used to examine categorical data. These commands can be used to examine descriptive/bivariate relationships between variables in the form of cross-tabulations.
P4.2a Ever Used any Substance - subst
Explore the relationship between subst and any 2 of the respondent characteristics (age, gender, income, county type, race/ethnicity). For instance, what percent and/or number of males have ever used any of the substances versus females? What are the differences between substance use across race/ethnicity categories?
P4.2b. Subset rows: Alcohol or Drug Treatment - txever
Answer the following: what percent of respondents who have ever used a substance and make $75,000 or more dollars have been to Alcohol/Drug Treatment?
P4.2c. Overall Health Status - health
What is breakdown of Health Status (e.g. % Excellent, %V.Good, %Good, %Fair, %Poor) for respondents with the following characteristics/attributes: female, over the age of 25, they have used a substance, they are Hispanic or NonHispanic White


This is a Help Page
Please go to XS2A Swagger UI and post a new Payment. With the link in the response you can access our Web-App.


Slide Deck
class: title middle left # The edX Modulestore .subtitle[Storing edX Courses in MongoDB] .thirdtitle[
Boston MongoDB User Group: October 19th, 2015] .fourthtitle[edX Lunch 'n Learn: November 9th, 2017] --- # Who am I? **Julia Eskew** Principal Software Engineer - edX Core Platform Team
--- # Talk Summary * Introduction to edX * edX Modulestore * Problems Encountered --- # What is edX?
This is edX...
(Thanks, [nedbat!](https://github.com/nedbat)) --- # MongoDB University * Powered by OpenEdx * [https://university.mongodb.com/](https://university.mongodb.com/) --- # The edX codebase
This is the edX codebase.
--- .float-left.scale75[![OpenEdx architecture](assets/edX_architecture_CMS_LMS_0.png "OpenEdx Architecture")] --- # edX and MongoDB OpenEdx platform usage of MongoDB -- * Forums -- Ruby application integrated into the platform -- (I won't cover it in this talk.) -- * Course assets -- Uses GridFS to store binary assets. -- * Courses -- Via the edX modulestore. --- class: center # What is a "modulestore"? An interface to create and query course content, backed by storage. The storage used by edX: .float-left[![MongoDB logo](assets/mongodb-logo.jpg "MongoDB logo")] --- class: center, middle **Why does edX store courses in MongoDB?** --- # edX History -- - First course: MIT 6.002x -- - Content was coded directly into XML -- - Here's an XML course [example](assets/simple_course.xml). -- - Subsequent courses were XML-based courses -- - All XML courses loaded into memory at startup -- - Works fine for tens of courses - but not 100s... --- # XML course problems - Up until late-2015, edX still served all the original 41 XML courses. -- - Each process loaded each XML course into memory upon startup. -- - Each process consumed 745 MB of RAM. -- (edx.org runs a few hundred processes.) -- - Each process took around 10 minutes from startup until servicing users. -- Why? Because loading all the XML courses took that long. -- Without loading the XML courses, startup takes only 30 seconds. --- # Why MongoDB? The thinking: -- We need to load/unload course parts on-demand! -- So we'll use a database. -- Hmmm - we've got course information with a varied schema. -- It'd be nice to store the information without defining a schema. -- And to be able to query the course information irregardless of the schema. -- Maybe MongoDB? --- # Aside: How does MongoDB store info? -- - Documents -- Free-form JSON objects -- - Collections -- Named collection of documents -- Roughly equal to an RDBMS table... -- ```javascript db.inventory.insertOne( { item: "canvas", qty: 100, tags: ["cotton"], size: { h: 28, w: 35.5, uom: "cm" } } ) ``` --- ### edX Course .float-left.scale50[![Course tree diagram](assets/edx_course.png "edX Course")] Basically a directed acyclic graph (DAG)... --- # Draft Modulestore -- a.k.a "Old Mongo Modulestore". -- * Stores course modules (XModules). -- * On-demand loading of course modules. -- * Single collection to hold all courses. -- * Each document is a course module/block. --- # Draft Modulestore Let's look at some documents: * [Video Module](assets/old_mongo_video_doc.txt) * [HTML Module](assets/old_mongo_html_doc.txt) * [Problem Module](assets/old_mongo_problem_doc.txt) --- # Draft Modulestore Issues -- * No (1st class) re-run support -- Shipped without concept of the same course re-running in multiple semesters/terms. -- Significant work to change it and migrate existing courses. -- So the work was never done. -- Course re-runs supported by using a different "course" name. --- # Draft Modulestore Issues -- * No versioning -- A single draft branch and a single published branch -- Suppose you want to publish several course blocks. -- Those blocks are copied directly from the draft branch to the published branch. -- Non-atomic operation to live course material. -- Last published course version is forever lost. -- (Hindsight is 20/20)... --- # Draft Modulestore Issues -- Optimal for some query patterns -- Non-optimal for other query patterns --- # Draft Modulestore Issues -- "Return a list of all video modules in a course." -- Algorithm: -- * Start at the root course node. -- * Load all children of each node. -- * If child is video node, add to list and stop. -- * Else: repeat. -- Nearly all course modules must be queried. -- Many MongoDB "find()" queries of a small number of documents on each query. -- Sure - blocks can be cached (and they are). But adds complexity. --- class: center, middle **Time to re-design..** --- # Draft Versioning Modulestore a.k.a. Split Mongo Modulestore -- * Optimizes for frequent course traversal -- * Adds versioning -- * "Split"s out course structure from course content --- # Split Modulestore -- Three different collections: -- * modulestore.active_versions * modulestore.structures * modulestore.definitions --- .float-left[![Split course diagram](assets/split_course.png "Split Course")] --- # modulestore.structures -- Each document is an entire course structure. -- _Immutable_ once created! -- An example [structure](assets/split_structure.json) document --- # modulestore.definitions -- Contains _only_ the content of a course block -- No reference to a specific course -- No reference to content's location within a course -- An example [definition](assets/split_definition.txt) document --- # modulestore.active_versions -- One document per course -- Points to course structures -- * One draft branch structure -- * One published branch structure -- An example [active_versions](assets/split_active_versions.txt) document --- # Split Modulestore Query Example -- "Return a list of all video modules in a course." -- One query for the active_versions document by course id. -- One query for the course structure document by _id. -- Traverse the in-memory structure, finding all video modules. --- # Split Modulestore Course Editing - Details Suppose you edit a course - what happens?: -- 1. version_structure() -- * Queries existing structure from MongoDB -- * Deep-copies the existing structure -- * Updates its edit_info to tie it to the previous structure. --- .float-left[![Split version_structure() example](assets/clone_structure.png "version_structure()")] --- # Split Modulestore Course Editing - Details 1. version_structure() 2. Edit the new structure -- * Adding/deleting blocks -- or * Adding/deleting metadata -- or * Changing structure --- .float-left[![Split structure edit example](assets/edit_structure.png "Structure Edit")] --- # Split Modulestore Course Editing - Details 1. version_structure() 2. Edit the new structure 3. update_structure() -- * Saves the new structure to MongoDB --- .float-left[![Split structure save example](assets/structure_save.png "Structure Save")] --- # Split Modulestore Course Editing - Details 1. version_structure() 2. Edit the new structure 3. update_structure() 4. update_course_index() -- * Updates the course index in the active_versions collection with the new structure ID --- .float-left[![Split structure repoint example](assets/structure_repoint.png "Structure Repoint")] --- # Problems We've Encountered -- Structures for large courses have become "large". -- * Over 1 MB. -- * Due to some module data being stored there -- (...which doesn't actually need to be there.) -- * Structures were designed to be "small" and queried often. -- * Not a MongoDB-specific issue - but... --- # Problems We've Encountered -- An old problem first... -- Externally-hosted MongoDB - compose.io -- * No (easy) access to logs. -- * Hard / impossible to tune for our usage. -- * Large structures and many structure queries at peak loads caused performance problems. Primarily NAT network overload. -- * To fix performance issues, we pickle, compress, and cache course structures in memcache. --- # Problems We've Encountered * Graph of NAT traffic before and after that optimization was deployed. .float-center[![Before/after optimization](assets/structure_nat_usage.png "Structure NAT Usage Before/After")] --- # Problems We've Encountered Split structure version storage -- * At launch, we had no plan for archiving old structure / definition versions. -- * We'd deal with it "later". -- * As stated before, structures became "large". -- * Every course edit copies the existing structure and creates a new one. -- * After several months, storage became an issue. --- # Problems We've Encountered Split structure version storage * MongoDB Usage Numbers (as of Oct 2015)
Collection
Documents
Size
modulestore.active_versions
1,033
680 KB
modulestore.definitions
692,202
3.47 GB
modulestore.structures
908,948
437 GB
--- # Problems We've Encountered Split structure version storage * MongoDB Usage Numbers (post-upgrade: MongoDB 3.0 with Wired Tiger)
Collection
Documents
Size
Wired Tiger Size
Space Reduction
modulestore.active_versions
1,033
680 KB
274 KB
2.5x
modulestore.definitions
692,202
3.47 GB
1.1 GB
3.2x
modulestore.structures
908,948
437 GB
109 GB
4x
--- # Problems We've Encountered Split structure version storage * However, as of last month (Oct 2017), the structure storage size had increased somewhat... -- 2 TB! (uncompressed...) -- * Dave Ormsbee and Microsoft (via OSPR) created a script to delete unused structures. -- * Now, structure storage is back down to: -- 300 GB (uncompressed...) --- # Problems We've Encountered Split Course Concurrent Edits -- * MongoDB does not support multi-document transactions. -- * Atomicity only at the single document level. -- * Scenario: Suppose multiple course authors are modifying the same course simultaneously. --- # Problems We've Encountered Split Course Concurrent Edits .float-left[![Concurrent course edits](assets/concurrent_course_edit.png "Concurrent Course Edits")] --- # Problems We've Encountered Split Course Concurrent Edits .float-left.scale80[![Split structure repoint example](assets/structure_repoint.png "Structure Repoint")] --- # Problems We've Encountered Split Course Concurrent Edits The Fix: -- * At update_course_index() time, check the current structure ID. -- * Is it the same structure ID from which my edited structure was derived? -- * Yes? No problem - good to go. -- * No? Edit conflict has occurred! -- Ask the author whether they want to merge, abort, or overwrite. --- # Problems We've Encountered Split Course Concurrent Edits The Confession: * The Open edX platform currently does *not* implement this fix. (sadface!) -- * It's possible to experience lost changes with multiple concurrent course authors. -- * NOTE: The changes aren't actually *lost*, just on a branch with no subsequent generations. -- * Perhaps YOU! would like to fix this problem. -- We accept Open Source Pull Requests! --- # Problems We've Encountered GridFS -- * Requirement: Binary assets can be stored & served to course students. -- * Requirement: Support asset "locking" so that only course registrants can access the assets. -- * Thinking: We're already using MongoDB to store courses. -- GridFS exists and can store binary data in MongoDB. -- Let's use it! -- * Reasonable thoughts at a glance... --- # Problems We've Encountered GridFS * The Root Problem: -- The application is reading the binary data from MongoDB via GridFS. -- And streaming it to each asset requestor. --- # Problems We've Encountered GridFS * Imagine this scenario: A course deadline approaches for a course that's popular around the globe, particularly in parts of the world that have only low bandwidth Internet connections. -- A large number of students request a large course asset (let's say 100 MB) at around the same time. -- Takes around 2.5 minutes to download a 100 MB file using mobile 3G speed (~6 Mbit/s). --- # Problems We've Encountered GridFS * Imagine this scenario: Each course asset download ties up an application worker for the entire download time. -- Less and less workers to serve other website traffic. -- RESULT: Spikes, alerts, alarming death spiral, postmortems, etc. --- # Problems We've Encountered GridFS * GridFS wasn't _really_ the problem here. -- * The edx-platform usage of GridFS was the real problem. -- * Nonetheless, a cautionary tale... -- * We have mitigated this problem somewhat by serving some course assets _externally_. Asset is retrieved from AWS Cloudfront - which uses LMS/GridFS as origin. -- ...but for "unlocked" assets only. --- # Thanks for your time! * This talk's slides can be accessed here:


1 write to OuterCmdletCall
System.Management.Automation (1)
FormatAndOutput\common\BaseCommand.cs (1)
165
this.implementation.
OuterCmdletCall
= new ImplementationCommandBase.OuterCmdletCallback(this.OuterCmdletCall);
2 references to OuterCmdletCall
System.Management.Automation (2)
FormatAndOutput\common\BaseCommand.cs (2)
335
System.Diagnostics.Debug.Assert(this.
OuterCmdletCall
!= null, "this.OuterCmdletCall is null");
336
return this.
OuterCmdletCall
();


Information Flow Control Model for OSN
OSN Graph
Choose Presentation:
Information Flow Model
Clique Based
Summary
Download CSV file
Node Info:
Id:
Name:
TF:
AUA:
MF:
TSP:
level:
Close


Logistics Company
Register
Login
Login
Wrong username or password!
Sign in
You can
create an account
!


Apply to close an enquiry
You will have to pay an initial fee of £50 to submit your application unless you are on a low income or certain benefits.
You will also have to pay a further fee of £200 towards the cost of a hearing and work on your case through to its completion.

Ask the judge to close an HMRC enquiry if you think it has gone on too long.
What you will need
- details of the enquiry you want closed including the HMRC reference number and years under enquiry
- further information (optional) saying why you think the enquiry should close
- any supporting documents (optional) ready to upload in digital format
- signed approval (PDF, 58Kb) if you want someone to act on your behalf and receive letters from the tax tribunal or attend a hearing


- 0.15 - 2015-06-16
- Added libais namespace
- Started using clang-format
- Fix Ais18 carrier sense (CS) messages
- Use AisBitset for bit decoding
- Fix AIS_STATUS_STRINGS
- Use std::array for fixed sized arrays
- Update DAC enum with new values
- Added ais/compatibility/gpsd.py
- Added ais/stream (deprecated - please do not use)
- Closed github issues 27, 31, 34, 36, 38, 42, 45, 46, 47, 51, 52, 53, 56, and 60
- Added ais/nmea.py, ais/tag_block.py, and ais/util_test.py
- Rearranged the tree structure to have src/... for c++ and {ais,test}/ for python
- Use more c++11: NULL -> nullptr
- Add 8:367:22 Area Notice
- python setup.py test mostly works
- At least one test for all top levels except msg 6.
- Add Travis CI testing
- 0.14 - 2014-04-22
- Switch license from LGPL 3+ to Apache 2.0
- Msg 8:366:22 bit count check fixed
- Fixed spare bit calculation in msg 8
- Added DAC country codes and FI message ids enums
- Fixed error tracking in msg 6 and 8 sub-messages
- 0.13 - 2012-11-18
- Switch to the Google C++ style
guide and cpplint.py
- Lots of small bugs found in the code review process
- Message constructors now start as status = AIS_UNINITIALIZED
and set to AIS_OK when decoding is done
- Switched to using initializers to call parent initializers in C++
- Removed a lot of duplicate and unused code.
AIS_ERR_WRONG_MSG_TYPE removed. More still needs
to be removed.
- Rewrote the C++ NMEA parsing functions: GetBody, GetNthField,
GetPad and Split.
- Switch to using asserts for checks that imply coding errors
within the library.
- 0.12 - 2012-11-05
- Fix bit count bugs in 8_1_14, 8_1_15, 8_1_27
- Rewrote nth_field. Added split and delimiters
- Folded in 366 header to ais.h
- Lots and lots of style cleanup
- Use std::foo, remove std:: from code
- Documentation for Msg 17
- Testing of Msg 20
- 0.11 - 2012-10-29
- New release because a large binary went out in 0.10
- 0.10 - 2012-10-29
- Add a test directory and test of all top level msgs except 20 in python
- Begin cleanup of test_libais.cpp
- Almost all decoders require pad bits now
- linted - lots of formatting changes
- Start implmenting Msg 17 GNSS differential corrections
- Convert FIX to TODO and put (schwehr) after each to assign them to myself.
- remove bool casting of bitset[offset]
- Implemented 8 1 26
- Clean up c++ logical oprators. Do not use and, or, and not
- Message 24 needed pad. Fixed
- Removed print()
- remove almost all cout/cerr that were not in print()
- Remove lots of dead code
- Pass pad into ais.decode in python, but handle without
- 0.9 - 2012-10-19
- ais.decode now requires the pad bits in python
- Added RIS 8_200_{10,23,24,40,55}
- Implmented the rest of Circ 236 BBM
- Implmented all Circ 289 messages except ABM route and BBM env sensors
- Implemented AIS messages 6, 9, 10, 12, 15-17, 20-22, 23, 25-27. Still payload work to do.
- Imported rolker's CMakeList.txt
- 0.8 - 2012-05-12
- MANIFEST.in now has VERSION
- Implemented AIS messages 7, 13, 14, 18, 19, 24
- 0.7 - 2012-04-30
- Added MANIFEST.in
- setup.py compliant with pypi
- Added AIS area/zone messages 8:1:22 and 8:366:22
- 0.6 - 2010-06-17
- ais21.cpp: new file - AtoN status
- ais.h: fix CHECKPOINT for emacs 23
- ais.h: Proper inheritance from AisMsg of message_id, repead_id and mmsi
- ais.h: started trying to define 8_366_34 - zone msg
- nagios_pg_ais.py: new file - monitor db statios with nagios ssh or snmp
- 0.5 - 2010-05-25
- Still a lot of untested/unimplemented messages
- docs: Include ESR's AIVDM.txt with permission
- docs: MID / DAC / MMSI prefixes now listed in mid.csv
- docs: dac/fi list
- docs: More notes for message designers
- Added msg 8 - 1:11 - IMO Met/Hydro
- Added AIS msg 9 - SAR Position
- nais2py.py: Added try except wrapper on ProcessingThread. Also
try to track one off error found on call with timestamp converting
to float
- send_data.py: new file for testing
- nais2py.py: LineQueue now has a custom drop handler for too many lines waiting.
Could be better.
- nais2py.py: Added threaded network interface.
Seeing the network side overwhelm the processing thread
- nais2py.py: Added response_class handling to VesselNames. Can be preloaded.
Allows periodic name dump
- nais2py.py: Added ENABLE_DB flag to try runs without database execute commands.
Faster debugging
- vessels.csv: new file - example preloading of vessel names as response ships
- 0.4 - 2010-05-11
- nais2py.py: Started providing a command line interface
- nais2py.py: Added PositionCache class
- nais2py.py: Added distance calculation code.
- nais2py.py: Changed the database table names and structure. Now vessel_name and vessel_pos
- ais_lut.py: new file with lookup tables to make ais wire codes human readable.
- 0.3 - 2010-05-10
- ais.c: added check_error_messages to make sure they are not out of sync
- -D_GLIBCXX_DEBUG appears broken in GCC 4.[0-2] so do not use
- ais_decode_normed.cpp: temporary C++ side decoding of normed AIVDM messages
- nais2pg: added vesselname class to manage updates to postgresql
- Added message 24
- Fixed python reference counting. Added XXSafeSetItem functions
- 0.2 - 2010-05-06
- Added C++ error handling to classes via AIS_STATUS
- C++ message now inherit from AisMsg and need to call init() in
constructor
- Added C++ messages 7_13, 14, 18, and 19
- aivdm_to_bits now has error checking
- ais123.cpp renames to ais1_2_3.cpp
- Switched to unicode in ais_py.cpp to support Python 3
- ais_py.cpp has strange INIT to handle Python 2 and 3
- nais2pg.py is starting to implement a new AIS feed to database
daemon
- Redid my old USCG regex to have better names with lower_lower style
- LineQueue should now support reading through a socket, which I
got wrong before
- Total redo of the Normalization queue to be much lower
overhead and to call the regex only once per line received. Only
keep they body of all but the last message in a sequence.
- test_libais.cpp is not really a test framework, but it does
try out the pure C++ world.
- 0.1 - 2010-05-03
- Able to decode messages 1-5 from python
- Still a lot of work left to do!


You have just installed or updated to Flickr Fixr version . If you have any open Flickr-pages already, you need to reload pages to make install/update take effect on these.
If you are new to Flickr Fixr, make sure to look through features on the Options Page.
As always, any feedback can be given in the Flickr Fixr thread in Flickr Hacks forum. I regularly watch that thread for comments.
I hope you enjoy Flickr even more with Flickr Fixr...
/Stig
PS. Also try xIFr, my EXIF-viewer for Firefox.


July 31
Let the wicked forsake his way, and the unrighteous man his thoughts: and let himreturnunto the Lord, and he will have mercy upon him.
Isaiah 55:7
You can't win a victory as long as the problem is the biggest thing in your life!
The Lord woke me up to that fact a few years ago. At that time I was facing some difficulties in my ministry that seemed so big to me, I thought about them from morning till night. Even though I was standing against them, I was thinking more about those problems than about the scripture promises I was standing on.
Then I saw something in Matthew 6:24-25:
"Ye cannot serve God and mammon. Therefore I say unto you, Take no thought for your life."
I'd read that scripture hundreds of times, but that day I saw something I'd never noticed before. I saw that immediately after Jesus said, "No man can serve two masters," He said, "Take no thought." Suddenly it hit me: We serve our thoughts!
That's why Isaiah 55 says for us to forsake our thoughts, and by the Word, take God's thoughts. That's why 2 Corinthians 10:5 says to cast out thoughts that challenge the Word and bring into captivity every thought to the obedience of Christ.
Do you want deliverance from your problems today?
Then quit serving them!  And don't wait until circumstances change to do it. Instead, realize that circumstances won't ever change until you switch from wrong to right thinking.
I know that's not easy to do, especially in the midst of heavy darkness and trial. But you can do it if you'll do these three things:
First, remember you aren't alone. You have the Word (God's thoughts). You have the Holy Spirit to strengthen you and you have the mind of Christ.
 Instead of rehearsing your problem, let them do the talking. Make yourself listen. Join in with their faith and resist darkness.
Third, praise God. Do whatever it takes to make yourself praise. When you begin to praise, God's presence will turn back those worried thoughts and make them fall!
 Jesus is. Serve Him with your thoughts and He will set youfree!
Scripture Reading: Isaiah 55