--- layout: post title: "Day 11 - Bar Brothers Workout" subtitle: "On the Bar Brothers System, this day is for rest, so I decided to do sort of cardio at the morning that incloud Jumping Jacks and Jumping Lunges, only after that I checkout what is my weight." date: 2019-11-01 background: '/img/posts/intro-barbrothers.png' ---
On the morning I dressup for workout and start with Jumping Jacks and Jumping Lunges, after that I done Explosive Sprints, every rotain I done 10 times for Jumping Jacks and Jumping Lunges, on the spring I struggled only three times.
My weight has finally reached the direction of 94K, which is very gratifying, since maybe I will stop walking every day at evening and start doing more cardio before training, I decided to do so just for this week and see what the results will be next weekend. My goal for next weekend will be 92kg, I hope I can reach that goal. True, I have to lose 0.800kg every day so that after a month I'll be in the 70kg area, but at least I'm losing 2kg a week,which are alot for me.
After the workout I took pictures, it is true that no special progress is seen but I feel the progress and it will soon be seen outward.
Cheers!


Most of the time floating point arithmetic does approximately the right thing. When adding sums or having products of numbers that greatly differ in magnitude, the floating point arithmetic may be incorrect. This package implements the Kahan (1965) sum <doi:10.1145/363707.363723>, Neumaier (1974) sum <doi:10.1002/zamm.19740540106>, pairwise-sum (adapted from 'NumPy', See Castaldo (2008) <doi:10.1137/070679946> for a discussion of accuracy), and arbitrary precision sum (adapted from the fsum in 'Python' ; Shewchuk (1997) <http://www.cs.berkeley.edu/~jrs/papers/robustr.pdf>). In addition, products are changed to long double precision for accuracy, or changed into a log-sum for accuracy.
| Version: | 0.3 |
| Depends: | R (≥ 3.2) |
| Suggests: | testthat |
| Published: | 2018-04-12 |
| Author: | Matthew Fidler [aut, cre, cph], Raymond Hettinger [cph, aut], Jonathan Shewchuk [cph, aut], Julian Taylor [cph, aut], Nathaniel Smith [cph, aut], NumPy Team [cph], Python Team [cph] |
| Maintainer: | Matthew Fidler <matthew.fidler at gmail.com> |
| License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| NeedsCompilation: | yes |
| CRAN checks: | PreciseSums results |
| Reference manual: | PreciseSums.pdf |
| Package source: | PreciseSums_0.3.tar.gz |
| Windows binaries: | r-devel: PreciseSums_0.3.zip, r-release: PreciseSums_0.3.zip, r-oldrel: PreciseSums_0.3.zip |
| OS X binaries: | r-release: PreciseSums_0.3.tgz, r-oldrel: PreciseSums_0.3.tgz |
| Old sources: | PreciseSums archive |
| Reverse imports: | nlmixr, RxODE |
| Reverse linking to: | RxODE |
Please use the canonical form https://CRAN.R-project.org/package=PreciseSums to link to this page.


查找附近的 Kotlin 用户群组
202 个 Kotlin 用户群组遍布全球
Kotlin 用户群组（KUG）是一个人的社区，是一个与 Kotlin 及其生态系统共享编程经验的地方。
欧洲
- Amsterdam Kotlin User Group, Netherlands
- Amsterdam High-performance Kotlin User Group, Netherlands
- Athens Kotlin User Group, Greece
- Barcelona, KotlinBCN, Spain
- Basel Kotlin User Group, Switzerland
- Belarus Kotlin User Group, Belarus
- Belfast Kotlin User Group, Northern Ireland
- Berlin Kotlin User Group, Germany
- Bielefelder Kotlin User Group, Germany
- Bologna Kotlin User Group, Italy
- Bosnia Kotlin User Group, Bosnia and Herzegovina
- Brighton Kotlin User Group, United Kingdom
- Bucharest Kotlin User Group, Romania
- Budapest Kotlin User Group, Hungary
- Bulgarian Kotlin User Group, Bulgaria
- Cologne Kotlin User Group, Germany
- Copenhagen Kotlin User Group, Denmark
- Cosenza Kotlin User Group, Italy
- Croatia Kotlin User Group, Croatia
- Czech Kotlin User Group, Czech Republic
- Dnipro Kotlin User Group, Ukraine
- Dublin Kotlin User Group, Ireland
- Dusseldorf Kotlin User Group, Germany
- Dutch Kotlin User Group, Netherlands
- Edinburgh Kotlin User Group, Scotland
- Estonia Kotlin User Group, Estonia
- Hamburg Kotlin User Group, Germany
- Helsinki Kotlin User Group, Finland
- Italy Kotlin User Group, Italy
- Karlsruhe Kotlin User Group, Germany
- Kassel Kotlin User Group, Germany
- Kyiv Kotlin User Group, Ukraine
- Krakow Kotlin User Group, Poland
- Leeds Kotlin User Group, United Kingdom
- Lisboa Kotlin User Group, Portugal
- London Kotlin, United Kingdom
- Lviv Kotlin User Group, Ukraine
- Madrid Kotlin User Group, Spain
- Manchester Kotlin Developers, United Kingdom
- Marseille Kotlin User Group, France
- Milano Kotlin User Group, Italy
- Moscow Kotlin User Group, Russia
- Munich Kotlin User Group, Germany
- Nantes Kotlin User Group, France
- Nizhny Novgorod Kotlin User Group, Russia
- Odessa Kotlin User Group, Ukraine
- Oslo Kotlin User Group, Norway
- Omsk Kotlin User Group, Russia
- Paris Kotlin User Group, France
- Rhein-Main Kotlin, Germany
- Rostov Kotlin User Group, Russia
- Samara Kotlin User Group, Russia
- St. Petersburg Kotlin User Group, Russia
- Serbia Kotlin User Group, Serbia
- Slovakia Kotlin User Group, Slovakia
- Stockholm Kotlin User Group, Sweden
- Stuttgart Kotlin User Group, Germany
- Swiss Kotlin User Group, Switzerland
- Taganrog Kotlin User Group, Russia
- Tricity Kotlin User Group, Poland
- Utrecht Kotlin User Group, Netherlands
- Uzhgorod Kotlin User Group, Ukraine
- Vienna Kotlin, Austria
- Warsaw Kotlin, Poland
亚洲
- Ahmedabad Kotlin User Group, India
- Allahabad Kotlin User Group, India
- Astana Java & Kotlin User Group, Kazakhstan
- Azerbaijan Kotlin User Group, Azerbaijan
- Bangladesh Kotlin User Group, Bangladesh
- Batam Kotlin User Group, Indonesia
- Bengaluru Kotlin User Group, India
- Bengaluru Kotlin 'BlrKotlin' Meetup , India
- Beijing Kotlin User Group, China
- Bhopal Kotlin User Group, India
- Bhubaneswar Kotlin User Group, India
- Cirebon Kotlin User Group, Indonesia
- Coimbatore Kotlin User Group, India
- Cambodia Kotlin User Group, Cambodia
- Dubai Kotlin User Group, United Arab Emirates
- Jordan Kotlin User Group, Jordan
- Hefei Kotlin User Group, China
- Ho Chi Minh Kotlin User Group, Vietnam
- Hong Kong Kotlin User Group, China
- Hyderabad Kotlin User Group, India
- Indonesia Kotlin User Group, Indonesia
- Indore Kotlin User Group, India
- Israel Kotlin User Group, Israel
- Istanbul Kotlin User Group, Turkey
- Jaffna Kotlin User Group, Sri Lanka
- Jalandhar Kotlin User Group, India
- Japan Kotlin User Group, Japan
- JiangXi Kotlin User Group, China
- Jodhpur Kotlin User Group, India
- Karachi Kotlin User Group, Pakistan
- Kathmandu Kotlin User Group, Nepal
- Khabarovsk Kotlin User Group, Russia
- Kolkata Kotlin User Group, India
- Korean Kotlin User Group, South Korea
- Kozhikode Kotlin User Group, India
- Mumbai Kotlin User Group, India
- Myanmar Kotlin User Group, Myanmar
- Nagpur Kotlin User Group, India
- Nepal Kotlin User Group, Nepal
- New Delhi Kotlin User Group, India
- Pakistan KotlinUser Group, Pakistan
- Palestine Kotlin User Group, State of Palestine
- Philippines Kotlin, Philippines
- Pune Kotlin User Group, India
- Rajkot Kotlin User Group, India
- Saudi Arabia Kotlin User Group, Saudi Arabia
- Shanghai, KotlinThree, China
- Singapore Kotlin User Group, Singapore
- Sri Lanka Kotlin User Group, Sri Lanka
- Syria Kotlin User Group, Syria
- Surat Kotlin User Group, India
- Taiwan Kotlin User Group, Taiwan
- Tel Aviv Kotlin User Group, Israel
- Thailand Kotlin Developers, Thailand
- Turkey Kotlin User Group, Turkey
- Vellore Kotlin User Group, India
- Vietnam Kotlin User Group (online community), Vietnam
- Vijayawada Kotlin User Group, India
- Yerevan Kotlin User Group, Armenia
北美洲
- Austin Kotlin User Group, USA
- Brooklyn (NY) Kotlin User Group, USA
- Cambridge Kotlin Office Hours, USA
- Chicago Kotlin Users Group, USA
- Cincinnati Kotlin User Group, USA
- Dallas, Kotlin DFW, USA
- Guadalajara Kotlin User Group, Mexico
- Guatemala Kotlin Meetup, Guatemala
- Houston Kotlin User Group, USA
- Kansas City User Group, USA
- Mexico, CDMX Kotlin User Group, Mexico
- Mérida Kotlin User Group, Mexico
- New York Kotlin Meetup, USA
- Norfolk Kotlin User Group, USA
- Irvine Kotlin User Group "OC Kotlin Krew", USA
- San Diego Kotlin User Group, USA
- San Francisco Kotlin Meetup, USA
- Santa Cruz Kotlin User Group, USA
- South Florida Kotlin User Group, USA
- Toronto Kotlin, Canada
- Twin Cities Kotlin User Group, USA
- Utah Kotlin, USA
- Vancouver Kotlin Meetup, Canada
- Washington DC Kotlin User Group, USA
- Waterloo Kotlin P2P, Canada
- West Florida Kotlin User Group, USA
南美洲
- Asunción Kotlin User Group, Paraguay
- Brasil Kotlin User Group, Brazil
- Buenos Aires Desarrollo en Android con Kotlin, Argentina
- Cascavel Kotlin Meetup, Brazil
- Chile Kotlin User Group, Chile
- Cochabamba Kotlin User Group, Bolivia
- Curitiba CWB Kotlin User Group, Brazil
- El Alto Kotlin User Group, Bolivia
- La Paz Kotlin User Group, Bolivia
- Lima Kotlin User Group, Peru
- Medellin Kotlin User Group, Colombia
- Peru Kotlin User Group, Peru
- Porto Alegre Kotlin User Group, Brazil
- Santiago Kotlin User Group, Chile
- Sao Paulo Kotlin Meetup, Brazil
- Rio de Janeiro, Brazil
- Tabasco Kotlin User Group, Mexico
澳大利亚/大洋洲
- Brisbane Kotlin User Group, Australia
- Melbourne Kotlin User Group, Australia
- Sydney Kotlin User Group, Australia
非洲
- Abidjan Kotlin User Group, Cote d'Ivoire
- Abuja Kotlin User Group, Nigeria
- Accra Ghana Kotlin User Group, Ghana
- Ado-Ekiti Kotlin User Group, Nigeria
- Agadir Kotlin User Group, Morocco
- Algeria Kotlin User Group, Algeria
- Angola Kotlin User Group, Angola
- Bauchi Kotlin User Group, Nigeria
- Beira Kotlin User Group, Mozambique
- Benin Kotlin User Group, Nigeria
- Brazza Kotlin User Group, Congo
- Cairo Kotlin User Group, Egypt
- Cotonou Kotlin User Group, Benin
- Damaturu Kotlin User Group, Nigeria
- Egypt Kotlin, Egypt
- Enugu Kotlin User Group, Nigeria
- Kano Kotlin User Group, Nigeria
- Katsina Kotlin User Group, Nigeria
- Lagos Kotlin User Group, Nigeria
- Lapai Kotlin User Group, Nigeria
- Libreville Kotlin User Group, Gabon
- Lome Kotlin User Group, Togo
- Lubumbashi Kotlin User Group, Congo
- Minna Kotlin User Group, Nigeria
- Minya Kotlin User Group, Egypt
- Nairobi Kotlin User Group, Kenya
- Noun Kotlin User Group, Cameroon
- Ondo Kotlin User Group, Nigeria
- Ouagadougou Kotlin User Group, Burkina Faso
- Rivers Kotlin User Group, Nigeria
- Tunisia Kotlin User Group, Tunisia
- Uganda Kotlin User Group, Uganda
- Warri Kotlin User Group, Nigeria
- Yola Kotlin User Group, Nigeria
有问题请联系我们


LEARN
WEB DESIGN
This website enables you to learn how to design websites
This website enables you to learn how to design websites
Shayf Ahmed
Web Designer
Shayf Ahmed
Programmer
<EMAIL_ADDRESS>716 186 118
Sana'a - Yemen


FBM KLCI closes down 8.95 points at 1,592.19 21 Nov 2019, 09:03 by theedgemarkets.com FBM KLCI closes down 8.95 points at 1,592.19


{{{define "body"}}}
Written in Go, Goffee is a fast, concurrent way to monitor your sites from all over the World.
By periodically changing Tor exit nodes, Goffee checks that your site is up from all over the world.
Actual, real life gophers on little treadmills, working hard to make sure that your site is up.
Since all checks are run over the Tor network you can also use Goffee to monitor the uptime of .onion sites.


When I was young, it seemed that life was so wonderful
A miracle, oh it was beautiful, magical
And all the birds in the trees, well they'd be singing so happily
Oh joyfully, playfully watching me
But then they send me away to teach me how to be sensible
Logical, oh responsible, practical
And they showed me a world where I could be so dependable
Oh clinical, oh intellectual, cynical


sagan
`Prev `__
S
`Next `__
--------------
**sagan**: /say´gn/, n.
[from Carl Sagan's TV series *Cosmos*; think “billions and billions”] A
large quantity of anything. “There's a sagan different ways to tweak
EMACS.” “The U.S. Government spends sagans on bombs and welfare — hard
to say which is more destructive.”
--------------
+-------------------------+----------------------------+-------------------------+
| `Prev `__ | `Up <../S.html>`__ | `Next `__ |
+-------------------------+----------------------------+-------------------------+
| saga | `Home <../index.html>`__ | SAIL |
+-------------------------+----------------------------+-------------------------+


You can generate Carbon Credit by selecting the GenerateCC option from the dropdown list which appears when you click on your profile.
And filling all the necessary details about your project.You can directly go to the page using this
link.
You can also view your CC balance which appears right next to your profile.


The Spirit of Entrepreneurship in Rural America
Over spring break Alyssa and I represented MakerGirl at the Fab Lab Symposium in Bentonville, Arkansas. The symposium brought together Fab Labs from across the country for three days of discussion centered on entrepreneurship and innovation. A majority of the labs in attendance were from rural areas and they shared with us how entrepreneurship and innovation are changing the shape of their communities and economies.
A common theme we heard from labs in rural areas was they have trouble keeping their graduating high school seniors in the area because the students don’t see a future for themselves in their rural community. This is hard on the community because it stunts economic growth. The Fab Labs are working hard to solve this problem by emphasizing STEM in schools at every age. Many Fab Labs are located in high schools and community colleges, which provides accessibility to the teachers and students. Teachers have begun to incorporate trips to the labs in their curriculum in order to build their students’ creativity and technical skills. By emphasizing creativity and building within the community at a young age, the labs hope to see their young entrepreneurs stay in the area, start new businesses and help the economy grow.
Another common theme was mass job losses. Within the past decade, many communities in the Appalachia region of the country have been hit with significant job losses due to mining, steel, and paper companies shutting down. With some communities having lost almost 85% of their jobs, they have turned to entrepreneurship and innovation to rebuild their economy. The Fab Labs in these areas have been a very important part of this process because they provide a space where people can go to learn new skills and exercise their creativity. Community colleges have also played an important role and have begun creating entrepreneurial programs that encourage students to start their own small businesses in the community.
Many of rural communities are located in close proximity to each other their community lines begin to blur as they grow. This growth process is occurring in Northwest Arkansas, a region comprised of Fayetteville, Bentonville, Rogers, and Springdale. Northwest Arkansas, home to Wal-Mart and Tyson, is a fast growing region that is using entrepreneurship and innovation to bring a sense of unity to the four towns in their region. They are working to create an innovation center; a part of town intended to showcase new businesses. They provide different financial incentives to businesses looking to move to the area and to individuals looking to create new businesses. The region also hosts a variety of different maker-themed events and contests to celebrate the entrepreneurs in their region. Their entrepreneurial efforts are intended to benefit the region as a whole, as opposed to the individual towns.
Learning about the entrepreneurial spirit of rural America was fascinating and exciting to me. After three days of the symposium, it was clear to me that this trend is not focused on one region of the country, the entrepreneurial spirit is truly beginning to blossom in rural communities across the country.


The slice()
method extracts a section of a string and returns a new string.
str.slice(beginSlice[, endSlice])
beginSlice
sourceLength + beginSlice
where sourceLength
is the length of the string (for example, if beginSlice
is -3 it is treated as sourceLength - 3
).endSlice
slice()
extracts to the end of the string. If negative, it is treated as sourceLength + endSlice
where sourceLength
is the length of the string (for example, if endSlice
is -3 it is treated as sourceLength - 3)
.slice()
extracts the text from one string and returns a new string. Changes to the text in one string do not affect the other string.
slice()
extracts up to but not including endSlice
. str.slice(1, 4)
extracts the second character through the fourth character (characters indexed 1, 2, and 3).
As an example, str.slice(2, -1)
extracts the third character through the second to last character in the string.
slice()
to create a new stringThe following example uses slice()
to create a new string.
var str1 = 'The morning is upon us.'; var str2 = str1.slice(4, -2); console.log(str2); // OUTPUT: morning is upon u
slice()
with negative indexesThe following example uses slice()
with negative indexes.
var str = 'The morning is upon us.'; str.slice(-3); // returns 'us.' str.slice(-3, -1); // returns 'us' str.slice(0, -1); // returns 'The morning is upon us'
Created by Mozilla Contributors, license: CC-BY-SA 2.5


{{ define "main" }} {{ partial "hero.html" . }} {{ partial "clients.html" . }} {{ partial "about.html" . }} {{ partial "whyus.html" . }} {{ partial "services.html" . }} {{ partial "contact.html" . }} {{ end }}


go out & talk to strangers
podcast
Knowledge is meant to be shared. That’s why I have started my own podcast, where I host founders, entrepreneurs and extremely talented people from all over the world to share their stories, experiences and insights.
S-2
Season 2
On the second season of the podcast we explored fascinating relevant topics. Starting from forecasting the future all the way to expressing our values through the projects we create. This season focused on innovation, positive impact, rural living and the opportunities remote work bring to our lives.
-
01. Business FuturistAdi Yoffe TLV / Israel28:31
-
02. Global Community ...Tamara Kojić Mokrin House / Serbia45:52
-
03. Tulsa RemoteAaron Bolzle Tulsa / Oklahoma USA29:52
-
04. PandorahubDiana Moret Garrotxa / Spain45:27
-
05. Lessons About ...Bernd Neugebauer Yucatan / Mexico01:09:38
-
06. Coliving In The Time ...Gui Perdrix Mallorca / Spain34:21
-
07. Work ReinventedLavinia Losub Bali / Indonesia44:04
-
08. Conscious ColivingMatt Lesniak44:07
-
09. Fogo Island ProjectTodd Saunders Norway49:53
S-1
Season 1
The first season of the podcast focused on people who decided to re-invent the way people live together. I hosted ten extremely talented entrepreneurs from various locations around the world to share their story with us.
-
01. Happy Working LabVanessa Sans Barcelona36:35
-
02. B-Hive LivingWilliams Jhonson Mota UK / Portugal56:19
-
03. Arctic CoworkingRolf & Stian Norway31:52
-
04. ETXE Co-livingAntonie Demeestere Barcelona37:15
-
05. Carper Co-livingChrystan Paul Australia38:32
-
06. Woke Co-livingMichele Suria Philippines44:29
-
07. Kindred QuartersChristine McDannell Los Angeles, USA25:02
-
08. MontaiaKaela Atleework Сonstantly changing location47:54
-
09. VennChen Avni Tel Aviv / Berlin / New York46:45
-
10. Evolve ColivingGui Perdrix Bali / Indonesia33:27


$def with (form, finished)
text will go here describing the app and what it's about
The field was blank. Please enter a technology to search for:
The count total was


Table of Contents
Questions & Feedback
Found a typo or an error?
Want to improve this document? Edit it.
Need support or have a technical question?
Post to the user mailing-list.
Master Symfony2 fundamentals
Symfony hosting done right
Discover the SensioLabs Support
How to expose a Semantic Configuration for a Bundle
How to expose a Semantic Configuration for a Bundle¶
If you open your application configuration file (usually app/config/config.yml
),
you'll see a number of different configuration "namespaces", such as framework
,
twig
, and doctrine
. Each of these configures a specific bundle, allowing
you to configure things at a high level and then let the bundle make all the
low-level, complex changes that result.
For example, the following tells the FrameworkBundle
to enable the form
integration, which involves the defining of quite a few services as well
as integration of other related components:
- YAML
1 2 3
framework: # ... form: true
- XML
1 2 3
<framework:config> <framework:form /> </framework:config>
- PHP
1 2 3 4 5
$container->loadFromExtension('framework', array( // ... 'form' => true, // ... ));
When you create a bundle, you have two choices on how to handle configuration:
Normal Service Configuration (easy):
You can specify your services in a configuration file (e.g.
services.yml
) that lives in your bundle and then import it from your main application configuration. This is really easy, quick and totally effective. If you make use of parameters, then you still have the flexibility to customize your bundle from your application configuration. See "Importing Configuration with imports" for more details.Exposing Semantic Configuration (advanced):
This is the way configuration is done with the core bundles (as described above). The basic idea is that, instead of having the user override individual parameters, you let the user configure just a few, specifically created options. As the bundle developer, you then parse through that configuration and load services inside an "Extension" class. With this method, you won't need to import any configuration resources from your main application configuration: the Extension class can handle all of this.
The second option - which you'll learn about in this article - is much more flexible, but also requires more time to setup. If you're wondering which method you should use, it's probably a good idea to start with method #1, and then change to #2 later if you need to.
The second method has several specific advantages:
- Much more powerful than simply defining parameters: a specific option value might trigger the creation of many service definitions;
- Ability to have configuration hierarchy
- Smart merging when several configuration files (e.g.
config_dev.yml
andconfig.yml
) override each other's configuration; - Configuration validation (if you use a Configuration Class);
- IDE auto-completion when you create an XSD and developers use XML.
Creating an Extension Class¶
If you do choose to expose a semantic configuration for your bundle, you'll
first need to create a new "Extension" class, which will handle the process.
This class should live in the DependencyInjection
directory of your bundle
and its name should be constructed by replacing the Bundle
suffix of the
Bundle class name with Extension
. For example, the Extension class of
AcmeHelloBundle
would be called AcmeHelloExtension
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | // Acme/HelloBundle/DependencyInjection/AcmeHelloExtension.php
namespace Acme\HelloBundle\DependencyInjection;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\ContainerBuilder;
class AcmeHelloExtension extends Extension
{
public function load(array $configs, ContainerBuilder $container)
{
// ... where all of the heavy logic is done
}
public function getXsdValidationBasePath()
{
return __DIR__.'/../Resources/config/';
}
public function getNamespace()
{
return 'http://www.example.com/symfony/schema/';
}
}
|
Note
The getXsdValidationBasePath
and getNamespace
methods are only
required if the bundle provides optional XSD's for the configuration.
The presence of the previous class means that you can now define an acme_hello
configuration namespace in any configuration file. The namespace acme_hello
is constructed from the extension's class name by removing the word Extension
and then lowercasing and underscoring the rest of the name. In other words,
AcmeHelloExtension
becomes acme_hello
.
You can begin specifying configuration under this namespace immediately:
- YAML
1 2
# app/config/config.yml acme_hello: ~
- XML
1 2 3 4 5 6 7 8 9 10 11 12
<!-- app/config/config.xml --> <?xml version="1.0" ?> <container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:acme_hello="http://www.example.com/symfony/schema/" xsi:schemaLocation="http://www.example.com/symfony/schema/ http://www.example.com/symfony/schema/hello-1.0.xsd"> <acme_hello:config /> <!-- ... --> </container>
- PHP
1 2
// app/config/config.php $container->loadFromExtension('acme_hello', array());
Tip
If you follow the naming conventions laid out above, then the load()
method of your extension code is always called as long as your bundle
is registered in the Kernel. In other words, even if the user does not
provide any configuration (i.e. the acme_hello
entry doesn't even
appear), the load()
method will be called and passed an empty $configs
array. You can still provide some sensible defaults for your bundle if
you want.
Parsing the $configs
Array¶
Whenever a user includes the acme_hello
namespace in a configuration file,
the configuration under it is added to an array of configurations and
passed to the load()
method of your extension (Symfony2 automatically
converts XML and YAML to an array).
Take the following configuration:
- YAML
1 2 3 4
# app/config/config.yml acme_hello: foo: fooValue bar: barValue
- XML
1 2 3 4 5 6 7 8 9 10 11 12 13
<!-- app/config/config.xml --> <?xml version="1.0" ?> <container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:acme_hello="http://www.example.com/symfony/schema/" xsi:schemaLocation="http://www.example.com/symfony/schema/ http://www.example.com/symfony/schema/hello-1.0.xsd"> <acme_hello:config foo="fooValue"> <acme_hello:bar>barValue</acme_hello:bar> </acme_hello:config> </container>
- PHP
1 2 3 4 5
// app/config/config.php $container->loadFromExtension('acme_hello', array( 'foo' => 'fooValue', 'bar' => 'barValue', ));
The array passed to your load()
method will look like this:
1 2 3 4 5 6 | array(
array(
'foo' => 'fooValue',
'bar' => 'barValue',
),
)
|
Notice that this is an array of arrays, not just a single flat array of the
configuration values. This is intentional. For example, if acme_hello
appears in another configuration file - say config_dev.yml
- with different
values beneath it, then the incoming array might look like this:
1 2 3 4 5 6 7 8 9 10 | array(
array(
'foo' => 'fooValue',
'bar' => 'barValue',
),
array(
'foo' => 'fooDevValue',
'baz' => 'newConfigEntry',
),
)
|
The order of the two arrays depends on which one is set first.
It's your job, then, to decide how these configurations should be merged together. You might, for example, have later values override previous values or somehow merge them together.
Later, in the Configuration Class section, you'll learn of a truly robust way to handle this. But for now, you might just merge them manually:
1 2 3 4 5 6 7 8 9 | public function load(array $configs, ContainerBuilder $container)
{
$config = array();
foreach ($configs as $subConfig) {
$config = array_merge($config, $subConfig);
}
// ... now use the flat $config array
}
|
Caution
Make sure the above merging technique makes sense for your bundle. This is just an example, and you should be careful to not use it blindly.
Using the load()
Method¶
Within load()
, the $container
variable refers to a container that only
knows about this namespace configuration (i.e. it doesn't contain service
information loaded from other bundles). The goal of the load()
method
is to manipulate the container, adding and configuring any methods or services
needed by your bundle.
Loading External Configuration Resources¶
One common thing to do is to load an external configuration file that may
contain the bulk of the services needed by your bundle. For example, suppose
you have a services.xml
file that holds much of your bundle's service
configuration:
1 2 3 4 5 6 7 8 9 10 11 12 13 | use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
use Symfony\Component\Config\FileLocator;
public function load(array $configs, ContainerBuilder $container)
{
// ... prepare your $config variable
$loader = new XmlFileLoader(
$container,
new FileLocator(__DIR__.'/../Resources/config')
);
$loader->load('services.xml');
}
|
You might even do this conditionally, based on one of the configuration values.
For example, suppose you only want to load a set of services if an enabled
option is passed and set to true:
1 2 3 4 5 6 7 8 9 10 11 12 13 | public function load(array $configs, ContainerBuilder $container)
{
// ... prepare your $config variable
$loader = new XmlFileLoader(
$container,
new FileLocator(__DIR__.'/../Resources/config')
);
if (isset($config['enabled']) && $config['enabled']) {
$loader->load('services.xml');
}
}
|
Configuring Services and Setting Parameters¶
Once you've loaded some service configuration, you may need to modify the
configuration based on some of the input values. For example, suppose you
have a service whose first argument is some string "type" that it will use
internally. You'd like this to be easily configured by the bundle user, so
in your service configuration file (e.g. services.xml
), you define this
service and use a blank parameter - acme_hello.my_service_type
- as
its first argument:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <!-- src/Acme/HelloBundle/Resources/config/services.xml -->
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
<parameters>
<parameter key="acme_hello.my_service_type" />
</parameters>
<services>
<service id="acme_hello.my_service" class="Acme\HelloBundle\MyService">
<argument>%acme_hello.my_service_type%</argument>
</service>
</services>
</container>
|
But why would you define an empty parameter and then pass it to your service?
The answer is that you'll set this parameter in your extension class, based
on the incoming configuration values. Suppose, for example, that you want
to allow the user to define this type option under a key called my_type
.
Add the following to the load()
method to do this:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | public function load(array $configs, ContainerBuilder $container)
{
// ... prepare your $config variable
$loader = new XmlFileLoader(
$container,
new FileLocator(__DIR__.'/../Resources/config')
);
$loader->load('services.xml');
if (!isset($config['my_type'])) {
throw new \InvalidArgumentException(
'The "my_type" option must be set'
);
}
$container->setParameter(
'acme_hello.my_service_type',
$config['my_type']
);
}
|
Now, the user can effectively configure the service by specifying the my_type
configuration value:
- YAML
1 2 3 4
# app/config/config.yml acme_hello: my_type: foo # ...
- XML
1 2 3 4 5 6 7 8 9 10 11 12 13
<!-- app/config/config.xml --> <?xml version="1.0" ?> <container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:acme_hello="http://www.example.com/symfony/schema/" xsi:schemaLocation="http://www.example.com/symfony/schema/ http://www.example.com/symfony/schema/hello-1.0.xsd"> <acme_hello:config my_type="foo"> <!-- ... --> </acme_hello:config> </container>
- PHP
1 2 3 4 5
// app/config/config.php $container->loadFromExtension('acme_hello', array( 'my_type' => 'foo', ..., ));
Global Parameters¶
When you're configuring the container, be aware that you have the following global parameters available to use:
kernel.name
kernel.environment
kernel.debug
kernel.root_dir
kernel.cache_dir
kernel.logs_dir
kernel.bundle_dirs
kernel.bundles
kernel.charset
Caution
All parameter and service names starting with a _
are reserved for the
framework, and new ones must not be defined by bundles.
Validation and Merging with a Configuration Class¶
So far, you've done the merging of your configuration arrays by hand and
are checking for the presence of config values manually using the isset()
PHP function. An optional Configuration system is also available which
can help with merging, validation, default values, and format normalization.
Note
Format normalization refers to the fact that certain formats - largely XML - result in slightly different configuration arrays and that these arrays need to be "normalized" to match everything else.
To take advantage of this system, you'll create a Configuration
class
and build a tree that defines your configuration in that class:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | // src/Acme/HelloBundle/DependencyInjection/Configuration.php
namespace Acme\HelloBundle\DependencyInjection;
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
use Symfony\Component\Config\Definition\ConfigurationInterface;
class Configuration implements ConfigurationInterface
{
public function getConfigTreeBuilder()
{
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root('acme_hello');
$rootNode
->children()
->scalarNode('my_type')->defaultValue('bar')->end()
->end();
return $treeBuilder;
}
}
|
This is a very simple example, but you can now use this class in your load()
method to merge your configuration and force validation. If any options other
than my_type
are passed, the user will be notified with an exception
that an unsupported option was passed:
1 2 3 4 5 6 7 8 | public function load(array $configs, ContainerBuilder $container)
{
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
// ...
}
|
The processConfiguration()
method uses the configuration tree you've defined
in the Configuration
class to validate, normalize and merge all of the
configuration arrays together.
The Configuration
class can be much more complicated than shown here,
supporting array nodes, "prototype" nodes, advanced validation, XML-specific
normalization and advanced merging. You can read more about this in the Config Component documentation.
You can also see it action by checking out some of the core Configuration classes,
such as the one from the FrameworkBundle Configuration or the TwigBundle Configuration.
Modifying the configuration of another Bundle¶
If you have multiple bundles that depend on each other, it may be useful
to allow one Extension
class to modify the configuration passed to another
bundle's Extension
class, as if the end-developer has actually placed that
configuration in his/her app/config/config.yml
file.
For more details, see How to simplify configuration of multiple Bundles.
Default Configuration Dump¶
New in version 2.1: The config:dump-reference
command was added in Symfony 2.1
The config:dump-reference
command allows a bundle's default configuration to
be output to the console in yaml.
As long as your bundle's configuration is located in the standard location
(YourBundle\DependencyInjection\Configuration
) and does not have a
__construct()
it will work automatically. If you have something
different, your Extension
class must override the
Extension::getConfiguration()
method and return an instance of your
Configuration
.
Comments and examples can be added to your configuration nodes using the
->info()
and ->example()
methods:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | // src/Acme/HelloBundle/DependencyExtension/Configuration.php
namespace Acme\HelloBundle\DependencyInjection;
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
use Symfony\Component\Config\Definition\ConfigurationInterface;
class Configuration implements ConfigurationInterface
{
public function getConfigTreeBuilder()
{
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root('acme_hello');
$rootNode
->children()
->scalarNode('my_type')
->defaultValue('bar')
->info('what my_type configures')
->example('example setting')
->end()
->end()
;
return $treeBuilder;
}
}
|
This text appears as yaml comments in the output of the config:dump-reference
command.
Extension Conventions¶
When creating an extension, follow these simple conventions:
- The extension must be stored in the
DependencyInjection
sub-namespace; - The extension must be named after the bundle name and suffixed with
Extension
(AcmeHelloExtension
forAcmeHelloBundle
); - The extension should provide an XSD schema.
If you follow these simple conventions, your extensions will be registered
automatically by Symfony2. If not, override the
Bundle::build()
method in your bundle:
1 2 3 4 5 6 7 8 9 10 11 12 13 | // ...
use Acme\HelloBundle\DependencyInjection\UnconventionalExtensionClass;
class AcmeHelloBundle extends Bundle
{
public function build(ContainerBuilder $container)
{
parent::build($container);
// register extensions that do not follow the conventions manually
$container->registerExtension(new UnconventionalExtensionClass());
}
}
|
In this case, the extension class must also implement a getAlias()
method
and return a unique alias named after the bundle (e.g. acme_hello
). This
is required because the class name doesn't follow the standards by ending
in Extension
.
Additionally, the load()
method of your extension will only be called
if the user specifies the acme_hello
alias in at least one configuration
file. Once again, this is because the Extension class doesn't follow the
standards set out above, so nothing happens automatically.


EXCLUSIVE: DeHaven on Hearing Jay Z's Voice on Wire Taps in His Federal Drug Case
by Jessica ToddDeHaven opened up to VladTV about facing life in his federal case and deciding to take it to trial after seeing the discovery papers and realizing they didn't have anything on him. He explained that he was previously convicted of several minor drug charges and he left the game three years prior to his indictment, which DeHaven said ended up saving him. DeHaven also spoke about Jay-Z's associate Emory Jones being indicted in the same case and learning that the feds had wiretapped Jones' phone. To hear more, hit the above clip.


Read Post
Jekyll Tag Generator Workaround on Github Pages
A few years back, I used Jekyll-Bootstrap to generate static pages. It was awesome because I could modify it to generate static pages for blog and company profile together. However, when I pushed my changes to Github Pages, pages aggregating post tags did not show up. It turned out that Github Pages does not execute tag_gen.rb
under _plugins
folder, as explained by Charlie Park.
Github Pages overrides safe
configuration within _config.yml
file as always true
, preventing any plugin being executed. Charlie provided a nice and clean workaround, but I didn't want to have two separate repositories for source and static pages. So, I came up with a much simpler workaround, which is copying tag
folder, generated by Jekyll on local repository, out of _site
folder by hand before pushing the latest changes to Github Pages. Based on this simple solution, I wrote a short bash script to do it in one go. The script is called jekyllrun.sh
containing:
#!/bin/bash
rm -r tag
jekyll build
cp -r _site/tag .
jekyll serve
The script should be put at root directory. It deletes recursively tag
folder before build, copy a new one from _site
folder, and then starting Jekyll local service. That easy! I guess this workaround will stay, until one day the Github Pages' policy is changed (or never).


Event Location:
University of Denver-Driscoll Student Center
2055 East Evans Avenue
Denver, Colorado
Abstract:
The adoption of Hadoop as a platform for mining big data has opened up a new world of analytic possibilites. Using HDInsight, the cloud-based service from Microsoft, you now have the ability to fire up Hadoop on demand to get the maximum value from large and unstructured data. In this introductory session, you will learn the fundamentals of HDInsight and Hadoop, you'll see how to provision your own cluster in minutes, and you'll know how to put the cluster to work by the end of the session. Practical examples that show clustering techniques and text analysis of unstructured and semi-structured data will be shown allowing attendees to implement their own cluster with minimal administration overhead.
Speaker(s): Carlos Bossy,
Abstract:
The definition of confidence is “belief in oneself and one’s powers or abilities” but the authors of the new book “The Confidence Code” define confidence as “the quality that turns thoughts into actions.” Traditionally men have been found to have much more confidence in themselves than do women. For example, in a study at Hewlett-Packard, men applied for a promotion when they thought they could meet 60% of the qualifications while women applied only when they thought they could meet 100%. Attend this WIT session to learn more about confidence and how it impacts your career and life. To prepare for the session, it is recommended that you complete The Confidence Quiz (http://theconfidencecode.com/confidence-quiz/)
Speaker(s): Denver WIT,
Abstract:
Technology has revolutionized the way organizations run today. Rather than a few file cabinets, organizations use many different software packages and applications that are mission critical to running their business. These systems gather a large amount of valuable data that must be used in decision making to maintain a competitive advantage. However, we've all heard and likely been around when mission critical systems have been rendered useless due to long running reports. To solve this and a host of other source system reporting issues we have proven Data Warehousing techniques to store the data in a report friendly way. Dimensional modeling is one of the most widely used set of techniques that will provide source system relief for reporting. In this session, we will take a look at what Dimensional Modeling is along with some key terms and techniques.
 How about Index Maintenance - does that take too long?Do you really have the appropriate backups in place?Do you have benchmark numbers in place to compare when your server is "slow"?Come discuss the answers to these and other questions - we will discuss the free Maintenance Solution scripted tools from Ola Hallengren and how they can help you fix these and other problems with a little easy coding you can do yourself. We will also discuss other tips and tricks to help you maintain and troubleshoot your SQL Server instances.
Speaker(s): Andy Galbraith,
Abstract:
tSQLt is a testing framework that is designed to help you write repeatable, isolated tests against your database code. In this session we will briefly examine the goals of testing, where it can be used in an automated deployment pipeline, and introduce you to the tSQLt framework. We’ll show you how to design and write tests to enforce standards, check calculations and other DML operations as well as check exception handling. You will see how a real world refactoring task can be tested in a repeatable manner. Learn how you can incrementally write tests that help you build higher quality code and minimize the introduction of errors against your existing objects.
Speaker(s): Steve Jones,
Abstract:
Have you become the de facto DBA? Have you been tasked with the responsibility of backing up your databases? Do you feel that your database maintenance plan is adequate, but may be lacking in what it can do? If these scenarios sound familiar, you’ll want to join this session, where Microsoft Certified Master (MCM) Keith Tate will walk you through the basics of backup and restore options. The session will begin with the reasons why databases must be backed up (hint: to restore them). Then, discuss the different recovery models and how they affect your backup strategy. Next, explore ways to automate backup and restore strategies, and review ways to improve the speed of your backups and restores. Finally, put it all together and you’ll be on your way to a disaster proof backup and restore strategy.
Speaker(s): Keith Tate,
Abstract:
SQL Server Integration Services is full of useful and versatile tasks, components, and containers that allow the ETL developer to easily handle most data movement and transformation issues. However, it's not uncommon to run into ETL need that require more flexibility than what is offered in the native tools of SSIS. Fortunately, Integration Services comes with a couple of tools to overcome most any ETL challenge: the Script Task and the Script Component. In this session, we will explore both the Script Task and Script Component tools within SSIS. We will discuss the reasons why one might need to include scripting as part of an ETL strategy, as well as examining some use cases where scripting is a good fit. We will follow up with several demonstrations of how to solve specific ETL challenges using the Script Task and Script Component in SSIS.
Speaker(s): Tim Mitchell,
Abstract:
You have geospatial data and you know that plotting it on a map will deliver insights. Or maybe you keep hearing “geospatial” as a current BI buzzword and you want to be informed about your options when you get to it. The Microsoft BI stack provides several options for visualizing location data. But how do you know which tool will best serve your purpose, or what factors are important in making this decision? We’ll identify factors to consider when choosing a tool to visualize your data in maps such as system requirements, availability and type of location data, required level of technical understanding, and more. You’ll leave the session confident in your ability to choose the best tool within Excel and SQL Server.
Speaker(s): Meagan Longoria,
Abstract:
Have you ever wondered what really happens behind the scenes when you execute a query? In this unique demonstration, Todd will use a video game engine (Unreal Engine 4) and will dramatically show The Life Cycle of a Query in 3D. We will follow a query from beginning to end and "runthrough" the various SQL Server components all queries must use including the Protocol Layer, Relational Engine, Storage Engine, Buffer Pool and then back out to the client. A volunteer at the end will then don an Oculus Rift Virtual Reality Headset for 3D Gaming and then race through the sections in under a minute to win a prize. Participants will leave with a better understanding of the major components and with a conceptual framework to explore the components more in-depth.
Speaker(s): Todd Kleinhans,
Abstract:
Pop quiz DBA: Your developers are running rampant in production. Logic, reason, and threats have all failed. You're on the edge. What do you do?  Hint: You attend Revenge: The SQL! This session will show you how to "correct" all those bad practices. Everyone logging in as sa? Running huge cursors? Using SELECT * and ad-hoc SQL? Stop them dead, without actually killing them. Ever dropped a table, or database, or WHERE clause? You can prevent that! And if you’re tired of folks ignoring your naming conventions, make them behave with Unicode…and take your revenge! Revenge: The SQL! is fun and educational and may even have some practical use, but you’ll want to attend simply to indulge your Dark Side. Revenge: The SQL! assumes no liability and is not available in all 50 states. Do not taunt Revenge: The SQL! or Happy Fun Ball.
Speaker(s): Rob Volk,
Abstract:
Almost every SQL Developer is familiar with Table Variables and Temporary Tables. While each of these objects represent temporary storage, there are also substantial differences between them. Understanding the differences between Table Variables and Temporary Tables, and the ramifications that those differences cause, is essential to being able to properly select the appropriate object for use in your development tasks. In this code filled session, we’ll discover the differences and similarities of Temporary Tables and Table Variables, dispel some widespread myths about each, and answer the most important questions of them all, "When do I use one or the other and what are the various impacts of doing so?"
Speaker(s): Wayne Sheffield,
Abstract:
Maybe you've only heard of Powershell. Maybe you've seen a little bit of Powershell code, but still don't understand how it works. You've been telling yourself for months now that you need to learn it. Why wait? The time to get started with Powershell is now. In this half day session, we will build the foundation for using Powershell as a database administrator. Three areas will be covered: - Powershell fundamentals - How the language works and how to write it - Powershell/SQL Server integration - Functionality written specifically for SQL Server - Application of Powershell - Use cases and code examples that leverage Powershell for database management This session is intended for database administrators of all levels who have minimal experience with Powershell. Attendees who participate in this session will leave with a solid foundation of Powershell and how to apply it in their own environments.
Speaker(s): Michael Fal,
Abstract:
Rose will share how she studied and passed the Microsoft exams in three weeks. She will share not only how she passed the exams, but also how you can set your own goals to pass the exams.
Speaker(s): Rose Zarling,
Abstract:
Issue a "SELECT {data} FROM {myTable}" statement and users need to trust the data returned is accurate. What happens when multiple processes access the same data? What happens further if one of those process is an UPDATE or even a DELETE statement? How about if both processes will be updating that data? Understanding Isolation in SQL Server is paramount in ensuring data integrity in your system. We will cover the different levels of isolation and how they impact what a user views when accessing the data at a given point-in-time.
Speaker(s): Wendy Pastrick,
Abstract:
Reporting has moved to the cloud with the introduction of Power BI. Get the Power with Power Query, Power Map, Power Pivot and Power View which you will learn about while finding out how they all work together with Microsoft Excel and Office 365 to create a Self-Service Business Intelligence application in the cloud.
 Now what? How can virtualization be embraced to simplify and streamline operations? What about making the systems more resilient to failure? How can it be used to improve uptime and simplify some of the more common architectures? High availability, disaster recovery, backups, and new server provisioning are discussed in this interactive session.
Speaker(s): David Klee,
Abstract:
A journey through a compilation of best practices accumulated over multiple business intelligence, data warehousing projects, and published content in relation to SQL Server Analysis Services. From dimension design to SSAS Engine internals this session will take you through steps to assists in getting your SSAS cubes better optimized to better match the needs of your end users.
Speaker(s): Alan Faulkner,
Abstract:
Biml is gaining traction as a viable method for programming SSIS. In this demo rich presentation you will be introduced to Biml and see the basics of using Biml to develop SSIS packages. We will also dive into examples of how you can leverage the power of Biml to create many packages from a single Biml script using a metadata approach to your development.
Speaker(s): Andy Vold,
Abstract:
There are times when you are able to be proactive and tune existing queries. Sometimes, you will receive a phone call from your manager telling you that a certain web page or report is timing out and your users are furious. You need to quickly diagnose what the problem is. Where do you turn to first? When a query is under-performing, hogging resources or timing out, one of the first things you want to examine is the query execution plan. The Query Optimizer, Execution Plans Query Tuning are the three key topics covered. At the end of the session you will walk away with the confidence to diagnose and tune queries.
Speaker(s): Jason Kassay,
Abstract:
Dynamic Management Views and functions allow you to easily see exactly what is happening inside your SQL Server instances and databases with a high level of detail. You can discover your top wait types, most CPU intensive stored procedures, find missing indexes, and identify unused indexes, to name just a few examples. This session presents, demonstrates and explains numerous DMV queries that you can quickly and easily use to detect and diagnose configuration and performance issues in your SQL Server instances and databases.
Speaker(s): Glenn Berry,
Abstract:
Chris Hyde has been working with the Microsoft SQL Server stack for over thirteen years and has completed certification exams in SQL versions 2012, 2008, 2005, and 2000. He is a Senior Consultant with Leidos Health specializing in the healthcare market, which he particularly enjoys as he gets to tackle different types of data problems at each client. He is currently on the board of the Albuquerque chapter of SQL PASS.
Speaker(s): Chris Hyde,
Abstract:
You have heard all of the buzzwords and hype surrounding Microsoft Azure and the Cloud but what is it really and more importantly how can you use it effectively to solve the most important problems facing your organization today. We will look at both Windows Azure SQL Databases and using Azure VM's to host SQL Server. Let Microsoft Certified Master of SQL Server Jason Horner show you how to apply your existing DBA skills to leverage SQL Server in the cloud.
Speaker(s): Jason Horner,
Abstract:
Power Query, a free add-in for Excel 2010 and 2013, will enhance the self-service business intelligence offering from Microsoft. With Power Query the business analysis along with the BI developer can combine and shape data from a wide variety of data sources in a quick and easy manner. This task can enable more time to be spent in analysis and discover and less time build ETL plumbing. This session will demo the ease of the data extraction process in Power Query. We will explore multiple data sources and even modify the language to create a foundation for further exploration into Power Query.
Speaker(s): Reeves Smith,
Abstract:
SQL Server 2005 and later versions introduced several T-SQL features that are like power tools in the hands of T-SQL developers. If you aren’t using these features, you’re probably writing code that doesn’t perform as well as it could. This session will teach you how to get great performance, avoid cursor solutions, and create simpler code by using the window functions that have been introduced between 2005 and 2012. You'll learn how to use the new functions and how to apply them to several design patterns that are commonly found in the real world.
Speaker(s): Kathi Kellenberger,
Abstract:
Window functions were first introduced with SQL Server 2005 and enhanced with SQL Server 2012. They enable easy development and great performance…well, sometimes. Learn what you need to know to take full advantage of these features. What you don’t know can hurt you when you are using window functions.
Speaker(s): Kathi Kellenberger,
Abstract:
Well, we have all heard about the horror stories of data loss due to SQL Injection and how costly (in many ways) they can be. This in-depth discussion covers various forms of SQL Injection attacks and offers some guidelines on how to avoid them. Lots of code examples in both .NET and TSQL. Watch me hack a website and retrieve user data in just 3 hits on an unprotected html page!
Speaker(s): Kevin Boles,
Abstract:
In this presentation I'll explain what the SQL Server AlwaysOn high availability and disaster recovery solution is all about. I'll talk about the different levels of protection it provides through Windows Clustering, SQL Clustering, and Availability Groups. We'll discuss how these three things come together to protect your databases. We'll finish with a dive into availability group configuration, the new capabilities it gives us, and what's new in SQL Server 2014.
Speaker(s): Ryan Adams,
Abstract:
I have been new to something at some point in my life, new town, new job or new profession. Now, I am the new DBA! Feeling overwhelmed, not sure where to begin. I know I have data and maybe lots of it. I need a friend and mentor to help me discover my new role. Select wants to be my friend, in fact Select and I need to become best friends. For Select and I to become best friends, we need to learn about each other, our weaknesses and our strengths. Come along, Select wants to introduce you to all of Selects friends. Let’s meet Where, Join, Group By and more of Select friends. Come along, let’s discover Select and his friends.
Speaker(s): Thomas Norman,
Abstract:
Follow along as we adventure through the vastness that is Availability Groups in SQL Server. In this beginners guys we show you how to make an Availability Group from scratch, the new system tables that go along with Availability Groups, and how to troubleshoot your Availability Group using the system tables and SSMS.
Speaker(s): Christopher Wolff,
Abstract:
SQL Server 2014 includes a new cardinality estimator. This feature allows for statistics to be updated more frequently than previous versions of SQL Server, resulting in better query performance. Attend this session and understand how, why, and when SQL Server uses statistics and how this new feature will help improve performance.
Speaker(s): Thomas LaRock,
Abstract:
Covering the basics for the beginner and those that have been thrown into a modeling role and have been cowboy’n it like the Wild West. We’ll cover why you should bother with a conceptual model and invest some of your project time in the modeling task. We will go over some different modeling techniques around Normalized, Dimensional and Data Vault options. And lastly, considerations for scalability, sustainability and empowering you with a Data Access Layer so you stay in control of your architecture as opposed to the application beast. Yee-Haw!
Speaker(s): Leslie Weed,
Abstract:
Pop quiz: How can SQL Server help developers build scalable, distributed, and asynchronous applications? Service Broker is the answer! In this presentation, I'll show you what it is; talk about when and why you might want to use it in your applications; walk through an example of how to set it up; and share a few lessons learned from our successful implementations.
Speaker(s): Ed Leighton-Dick,
Abstract:
Extended Events were introduced in SQL Server 2008. With SQL 2012, we have seen a significant upgrade to this feature. Join me for a little adventure into what extended events are. We will discuss how to use extended events to aid in performance tuning and in day to day administration. We will also explore some background and the architecture of extended events.
Speaker(s): Jason Brimhall,
Abstract:
Many database developers today do not have a Computer Science degree and may also have begun their career developing software using procedural programming languages (Java, C#, etc.). As a result, they may not have the background needed to conceptualize solutions in terms of sets of data and therefore may not be able to develop efficient set-based queries. In this session, we will review the basics of set theory and how it applies to database development to enable you to turn cursors, loops, and other procedural programming practices into efficient set-based operations that make the most use of a relational database engine.
Speaker(s): Aaron Cutshall,
Abstract:
Everyone wants a dream job that they enjoy going to each week. However finding that job, and getting yourself hired can be hard for most people. Steve Jones will give you practical tips and suggestions in this session that show you how to better market yourself, how to get the attention of employers, and help improve the chances that the job you want will get offered to you. Learn about networking, blogging, and more.
Speaker(s): Steve Jones,
Abstract:
You are a Developer (.NET, SQL or otherwise) but you have been doing some DBA work and have now decided that is all you want to do - how do you make the transition? What do you need to know? This session will cover this topic from first-hand experience.
Speaker(s): Amy Herold,
Abstract:
Presenting BI in a sophisticated look that is both user friendly and easy to use can be challenging. In this session I will review the three major types of dashboards (Operational, Strategic, and Analytical). Using Visio, SSRS, SharePoint and Pyramid Analytics I will demonstrate examples of each of the dashboard types.
Speaker(s): Jeff Renz,
Abstract:
The optimizer uses statistics to generate a cardinality estimate which, in turn, affects query plan decisions as well as system resources. In this session we're going to step through the process of evaluating the statistics present (or not present) and present a methodology for analyzing the presence of skew, candidate filtered statistics, and their efficacy in an environment. Additionally, we'll look at the impacts of the new Cardinality Estimator in SQL Server 2014 on plan generation This would, ultimately, be an excellent addition to any periodic SQL Server health check.
Speaker(s): Seth Washeck,
Abstract:
VLDBs (Very Large Databases) play in a different league: common maintenance operations can take much longer to run, and some settings and features that work well on smaller databases become much less effective. These downsides generally have a negative impact on users, however through some creativity and changes in our game plan we can have highly performant VLDBs. This session will cover a wide variety of tips and tricks assembled from years of working with databases up to 40TB in size.
Speaker(s): Bob Pusateri,
Abstract:
The advent of SQL Server 2012, SQL Server Data Tools and Integration Services Catalogs have significantly improved out of the box logging. Unfortunately, logging best practices have not evolved with the new logging tools. This talk will outline the logging available “out of the box” with SSIS and discuss the implications for “traditional” ETL logging. Logging best practices will vary by business, industry and regulatory environments. We will review examples from the most basic operational logging to the most sophisticated logging required for auditing and regulatory compliance.
Speaker(s): Michael Sexton,
Abstract:
While we don’t always see SQL Server Reporting Services as a mission-critical function, reporting has become more and more important with the BI explosion. Reports are driving crucial business decisions and providing invaluable information to users on a daily basis. With the introduction of AlwaysOn in SQL Server 2012, it seemed like Reporting Services was forgotten when it comes to HA support. In this talk, we’ll look at possible HA solutions for the ReportServer databases along with application servers. We’ll also discuss some of the challenges that arise from it and how to navigate them as best possible.
Speaker(s): Brandon Tucker,
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/jasonhorner
Contact: http://blog.jasonhorner.com
Hi, my name is Jason I'm a practice lead at Redapt. I spend most of my day helping clients solve business problems mostly in the Data and Advanced Analytics spaces. Sometimes this involves various and sundry cloud technologies including Azure Data Factory, Azure SQL Data Warehouse, Azure Data Lake Store, Azure Databricks, HDInsight and Azure SQL Database. I'm fluent in several languages including: SQL, C#, Python, and PowerShell. I'm a Microsoft Certified Master of SQL Server (MCM) and have been recognized for my technical excellence and evangelism efforts by Microsoft by being awarded the Most Valuable Professional (MVP) for the last 5+ years. In my off hours I like to snowboard, karaoke, ride roller coasters, and play arcade games
LinkedIn: http://www.linkedin.com/in/davidaklee
Contact: http://davidklee.net
David Klee is a Microsoft Data Platform MVP and VMware vExpert with a lifelong passion for technology. David spends his days focusing on the convergence of data and infrastructure as the Founder of Heraflux Technologies. His areas of expertise include cloud, virtualization, performance, and business continuity. David speaks at a number of national and regional technology related events, including PASS Summit, VMware VMworld, SQLBits, SQLSaturday events, and many SQL Server User Groups.
LinkedIn: https://www.linkedin.com/pub/keith-tate/34/a40/a46
Contact: http://thesqlchef.com
Keith Tate is a Senior Database Administrator with over 17 years of experience as a data professional. During Keith#39;s professional career he has been a developer, DBA and data architect. Keith is also active in the SQL Server community and is currently the chapter leader of the Albuquerque SQL Server User Group.
LinkedIn: http://www.linkedin.com/in/kathikellenberger
Contact: http://auntkathisql.com
Kathi Kellenberger is the editor of Simple Talk at Redgate and a Data Platform MVP. She has worked with SQL Server for over 20 years and has authored, co-authored, or tech edited over a dozen technical books. Kathi is the co-leader of the PASS Women in Technology Virtual Group and a volunteer at LaunchCode. When Kathi isn’t working, she enjoys spending time with family and friends, cycling, singing, and climbing the stairs of tall buildings. Be sure to check out her courses on Pluralsight.
LinkedIn: https://www.linkedin.com/in/timmitchell/
Contact: http://www.TimMitchell.net
Tim Mitchell is a business intelligence architect, author, and trainer. He has worked with SQL Server for over a decade, specializing in data warehousing, ETL/SSIS, and reporting. He holds a Bachelor’s Degree in Computer Science from Texas AM at Commerce, and is recognized as a Microsoft Data Platform MVP. Tim is a business intelligence consultant and principal at Tyleris Data Solutions. Tim is an active community speaker and volunteer, having spoken at over 100 events including the PASS Summit, SQLBits, Dev Connections, SQL Intersection, and scores of SQLSaturdays. He blogs at TimMitchell.net, and tweets at @Tim_Mitchell.
LinkedIn: http://www.linkedin.com/in/armordba
Contact: https://armordba.com/
Tom Norman is a Database Architect at KPA with a strong fervor to protect data. He works daily to review and improve data protection methodologies while reviewing governing laws affecting finance, healthcare, and personal data. His areas of expertise include encryption, auditing, data identification, and database object deployment. He is the current leader of the PASS Virtualization Group and Vice President of the TRIPASS user group. You can read his blog at https://armordba.com/ and reach him on twitter at @armordba. Tom speaks at a number of SQLSaturday events and SQL Server user groups.
LinkedIn: https://www.linkedin.com/in/andrewvold
Andy Vold, a SQL Server MCSA, MCTS and MCITP, is an Architect with RevGen Partners working primarily in business intelligence, SSIS/ETL, and database development. He enjoys helping clients by building database and business intelligence solutions to solve their complex business needs. Andy is a past board member of the Denver SQL Server Users Group.
LinkedIn: http://www.linkedin.com/in/ryanjadams
Contact: http://www.ryanjadams.com
Ryan Adams is a Senior Premier Field Engineer for Microsoft. He works directly with customers to help them realize their business potential and accelerate their digital transformation on premises and in the cloud. Previously, Ryan was a Microsoft Data Platform MVP and spent 19 years working for a fortune 100 company. His passion is the SQL Server Engine, High Availability, and Disaster Recovery. He also served on the Board of Directors for the North Texas SQL Server User Group, was President of the PASS Performance Virtual Chapter, was a PASS Regional Mentor, and served as a Director for the PASS organization.
Contact: http://denverwit.sqlpass.org
Panel consisting of Wendy Pastrick, Kathi Kellenberger, Amy Herold, Ginger Grant, Meagan Longoria, Leslie Weed, and Windy Martin
LinkedIn: http://www.linkedin.com/pub/andy-galbraith/5/149/98b
Contact: http://nebraskasql.blogspot.com/
I’m a forty-something Microsoft SQL Server DBA of 18+ years, a devoted husband, and a father of three young boys (all aged eight and under!) I have been a DBA at a public university, at a major bank, at a healthcare system, and I now work as a consultant with customers across the United States. I write and speak primarily about the tips and tricks that I discover along my SQL Server journey.
LinkedIn: http://www.linkedin.com/in/WayneSheffield
Contact: http://blog.waynesheffield.com/wayne
Wayne Sheffield, a Microsoft Certified Master in SQL Server and Microsoft Most Valuable Professional, started working with xBase databases in the late 80’s. With over 25 years in IT, he has worked with SQL Server (since 6.5 in the late 90’s) in various dev/admin roles, with an emphasis in performance tuning. He is the author of several articles at www.sqlservercentral.com, a co-author of “SQL Server T-SQL Recipes”, and enjoys sharing his knowledge by presenting at SQL events worldwide and blogging at http://blog.waynesheffield.com/wayne
LinkedIn: http://www.linkedin.com/in/way0utwest
Contact: http://www.voiceofthedba.com/
Steve Jones is a Microsoft SQL Server MVP and has been working with SQL Server since version 4.2 on OS/2. After working as a DBA and developer for a variety of companies, Steve co-founded the community website SQLServerCentral.com in 2001. Since 2004, Steve has been the full-time editor of the site, ensuring it continues to be a great resource for SQL Server professionals. Over the last decade, Steve has written hundreds of articles about SQL Server for SQLServerCentral.com, SQL Server Standard magazine, SQL Server Magazine, and Database Journal.
Contact: http://datamountain.sqlmountain.com/
Stunningly handsome, yet surprisingly humble, Mike Sexton spent the first ten years of his career as a public defender in New York. Upon learning the discrepancies between his salary and the salary of newly minted college graduates working in IT, he had an epiphany and immediately learned how to program database applications. He has designed and built database applications for 12 years in both SQL Server and Oracle based systems, he has been published in SQL Server Magazine and is one of the aut
LinkedIn: https://www.linkedin.com/in/michaelfal/
Contact: http://mikefal.net
Mike is a specialist in data management technologies. As a community advocate, public speaker, and blogger, Mike is a practicing thought leader for data and automation. He is passionate about DevOps and data, building platforms to optimize, protect, and use data efficiently. Since 1999, Mike has been working in the database field, focusing primarily on SQL Server and specializes in automating data solutions to improve the reliability and efficiency of his environments. He has been caught playing trombone in public on more than one occasion.
Leslie Weed is currently a Data and BI Architect with RevGen Partners in Denver, CO. She has been a SQL Professional specializing in Business Intelligence, data analytics, systems implementation, integration, and solutions delivery for the last 20ish years, including a variety of Enterprise Data Warehouses in various industries.
LinkedIn: http://www.linkedin.com/in/sqlrockstar/
Contact: http://thomaslarock.com
Thomas LaRock is a Head Geek at SolarWinds and a Microsoft Certified Master, Data Platform MVP, VMware vExpert, and a Microsoft Certified Trainer. He has over 15 years’ experience in the IT industry in roles including programmer, developer, analyst, and database administrator.
LinkedIn: http://www.linkedin.com/in/kathikellenberger
Contact: http://auntkathisql.com
Kathi Kellenberger is the editor of Simple Talk at Redgate and a Data Platform MVP. She has worked with SQL Server for over 20 years and has authored, co-authored, or tech edited over a dozen technical books. Kathi is the co-leader of the PASS Women in Technology Virtual Group and a volunteer at LaunchCode. When Kathi isn’t working, she enjoys spending time with family and friends, cycling, singing, and climbing the stairs of tall buildings. Be sure to check out her courses on Pluralsight.
LinkedIn: http://www.linkedin.com/in/meaganlongoria/
Contact: http://datasavvy.me
Meagan Longoria is a business intelligence consultant with Denny Cherry Associates, and lives in Denver, Colorado. She is a Microsoft Data Platform MVP. Meagan spends a lot of time thinking about how to use data integration, DAX, and data visualization techniques to make data useful for people. She enjoys sharing her knowledge and experiences at conferences and user group meetings, as well as through her blog (DataSavvy.me).
LinkedIn: http://www.linkedin.com/in/way0utwest
Contact: http://www.voiceofthedba.com/
Steve Jones is a Microsoft SQL Server MVP and has been working with SQL Server since version 4.2 on OS/2. After working as a DBA and developer for a variety of companies, Steve co-founded the community website SQLServerCentral.com in 2001. Since 2004, Steve has been the full-time editor of the site, ensuring it continues to be a great resource for SQL Server professionals. Over the last decade, Steve has written hundreds of articles about SQL Server for SQLServerCentral.com, SQL Server Standard magazine, SQL Server Magazine, and Database Journal.
LinkedIn: https://www.linkedin.com/in/sqlrv
Contact: http://sqlrv.com
Aaron N. Cutshall is an Enterprise Data Architect with 20 years of experience in analysis, design and development for applications and databases in manufacturing and warehousing plus over 15 years in the Healthcare Informatics field. His primary focus is in designing and developing solutions for extremely large data sets that perform quite well in SQL Server. He is active in the SQL Server community and speaks at SQLSaturday sessions across the country.
LinkedIn: http://www.linkedin.com/pub/todd-kleinhans/0/920/981
Contact: https://toddkleinhans.wordpress.com/
Todd Kleinhans has been using SQL Server since the last millennium. He has served in different roles across many industries but he's mainly been a DBA. When not in virtual reality, he likes to speak at PASS sponsored events and volunteers in various groups like PASS, DSSUG, Colorado Virtual Reality and is the President of Denver/Boulder Unreal Engine group. He is on Twitter: @toddkleinhans and blogs at https://toddkleinhans.wordpress.com/
Contact: http://dawabi.com/blog.aspx
Marc Beacom is President of DawaBI, a Data Warehouse and Business Intelligence Consultancy firm focusing on Making Data-Driven Decisions Possible. He has been working with SQL Server for over a decade delivering scalable solutions for organizations of all sizes. He has earned several industry certifications and degrees. Marc is an active member of the community and has volunteered for many organizations such as PASS, Denver SQL, Colorado GiveCamp, Camp To Belong, to name a few.
Contact: http://wendyverse.blogspot.com
Wendy Pastrick is from Chicago, IL, and for the past 15 years has served as a Database Administrator supporting both development and production environments. Her many years of involvement with PASS include WIT Virtual Chapter and the Chicago Suburban User Group, serving as Regional Mentor, and as a PASS Board member since 2013. Wendy has organized several highly successful SQLSaturday events in Chicago.
LinkedIn: https://www.linkedin.com/pub/christopher-wolff/11/a07/458
Contact: http://sqlred.blogspot.com/
Chris Wolff has been a developer, report writer, and an admin in Microsoft and SQL Server Space since SQL Server 2000 in industries such as telecommunications, green energy, money transfers, and online accounting. He has been an active member of the Denver SQL User Group since 2011 and enjoys learning new things about computers. His interests includes video games, movies, and enjoying time with his wife and 2 kids.
LinkedIn: http://www.linkedin.com/in/bobpusateri
Contact: http://www.BobPusateri.com
Bob Pusateri is a Microsoft Certified Master, DBA, and systems architect with over 10 years of experience on SQL Server. His interests involve internals, performance optimization, and cloud technologies. He is an active member of two Chicago-area PASS Local Groups, a community speaker, and maintains a web presence through both Twitter (@SQLBob) and his blog (bobpusateri.com).
LinkedIn: http://www.linkedin.com/in/aherold
Contact: http://www.sqlkitten.com/
Amy Herold is currently a Premier Field Engineer with Microsoft, specializing in APS. Prior to this, she was a Sr. Database Administrator, focusing on PowerShell and automation. She is also currently the Director of Programs for the North Texas SQL Server User Group (NTSSUG). She frequently speaks at SQLSaturday and user group events across the United States and has also participated in numerous Women in Technology sessions as a panelist. Amy currently blogs at sqlkitten.com.
LinkedIn: http://www.linkedin.com/in/eleightondick
Contact: http://www.edleightondick.com
Ed Leighton-Dick is a Microsoft MVP, SQL Server performance and architecture specialist, and Founder/Principal Consultant of Kingfisher Technologies. He is a frequent volunteer with PASS, including current roles as a Regional Mentor, co-leader of I-380 PASS local group, and co-leader of the HA/DR virtual group. He can often be found teaching sessions at local, regional, and national events, including user groups, SQLSaturday, and PASS Summit.
LinkedIn: http://www.linkedin.com/pub/alan-faulkner/31/b79/932/
Contact: http://falconteksolutionscentral.com/
I am an IT professional with over 20+ years of progressive technical experience with managing, consulting, software development, data integration architecture, data warehousing, and business intelligence development projects. The focus of my work is to work closely with stakeholders to develop architecture frameworks that align with organizational strategy, processes, and IT assets. Specializing in Business Intelligence (BI), Data Warehousing, database architecture, design and implementation.
LinkedIn: https://www.linkedin.com/in/dbajbrimhall/
Contact: http://jasonbrimhall.info
Jason Brimhall has more than 20 years of experience and has worked with SQL Server 6.5 through SQL Server 2019. He has experience in performance tuning, high transaction environments, and large environments. He is currently a consultant specializing in performance tuning, server analysis, and problem resolution. Jason is a Microsoft Certified Master (MCM) and a Data Platform MVP.
LinkedIn: https://www.linkedin.com/in/rob-volk-134ba81
Contact: http://weblogs.sqlteam.com/robv/
Rob Volk is a SQL Server DBA in the Metro Atlanta area since 2001. He also moderates and answers the forums on SQLTeam.com. While an old-time cranky DBA, he no longer considers quot;business intelligencequot; an oxymoron or quot;the cloudquot; as merely atmospheric moisture, and is delightedly dipping his toes into both of these new oceans, and loves to do things in new and and unusual ways.
LinkedIn: https://www.linkedin.com/profile/public-profile-settings?trk=prof-edit-edit-public_profile
Contact: https://glennsqlperformance.com/
Glenn works as a Principal Consultant for Dr. DMV, LLC in Elizabeth, CO. He was a Data Platform MVP from 2007-2017, and he has a whole collection of Microsoft certifications, including MCITP, MCDBA, MCSE, MCSD, MCAD, and MCTS, which proves that he likes to take tests. His expertise includes DMVs, high availability, hardware selection, performance tuning, and Azure SQL Database. He is also an Adjunct Faculty member at University College - University of Denver, where has been teaching since 2000. He has completed the Master Teacher Program at Denver University - University College. He is heavily involved in the SQL Server community, and is a frequent speaker at user groups, SQLSaturdays, and the PASS Community Summit.
LinkedIn: http://www.linkedin.com/in/thesqlguru
Kevin Boles is a SQL Server expert, working exclusively with the product since v6.5. With over 25 years of database experience and over 45,000 man hours of SQL Server engine experience, he holds many related certifications, is an MCT and was a SQL Server MVP from 2007 to 2012. Kevin has been a very successful independent consultant for over 20 years. His passion is the relational engine, especially designing, building, analyzing and tuning high-performance database applications.
LinkedIn: https://www.linkedin.com/in/ginger-grant-3a177b157/
Contact: http://www.DesertIsleSQL.com
Ginger Grant manages the consultancy Desert Isle Group and shares what she has learned while working with data technology to people around the world. As a Microsoft MVP in Data Platform, Microsoft Certified Trainer and an instructor on DataCamp, she focuses on guiding clients to create solutions using the entire Microsoft Data Stack, which includes SQL Server, Power BI, and Azure Data Cloud components. When not working, she protypes the latest pre-release data technologies, maintains her blog http://www.desertislesql.com, and spends time on twitter @desertislesql.
LinkedIn: https://linkedin.com/in/swasheck
Contact: http://swasheck.wordpress.com
Seth Washeck, SentryOne senior solutions engineer, is a longtime SQL Server DBA, active member of the Denver SQL Server User Group, and frequent speaker at SentryOne events. He was formerly senior SQL Server DBA at OppenheimerFunds, and DBA of Baxter Healthcare.
LinkedIn: http://linkedin.com/in/jasonkassay
Contact: http://www.JasonKassay.com
Jason Kassay is a database administrator, software engineer amp; speaker from Colorado with over 12 years of experience. He is passionate about SQL Server, programming, release process, automation amp; performance tuning. Jason is an active member of the SQL Server community amp; volunteers/presents at events such as Colorado User Groups, SQLSaturday amp; Colorado GiveCamp. When not tuning databases or coding, Jason will most likely be found spending time with his family, playing hockey or running.
LinkedIn: http://www.linkedin.com/in/btuck
Over the past 7 years, Brandon has explored SQL Server as a developer, admin, and consultant. After graduating school, he has translated his academic knowledge base into real-world scenarios in the financial, health insurance, and education industries. Brandon has presented at Code Camps/User Groups in multiple states and was elected as VP, Events for DSSUG in 2010. When not pounding away on a keyboard, Brandon can be found wandering the globe in search of great music, beers, and experiences.
Rose Zarling has over 10 years of IT experience in software analysis and development. Her background is in writing SQL ETLs mainly for business analysis needs. She has an uncanny ability to problem solve and translate business needs into technical specs. RoseZ loves to help others achieve more, whether it’s using data analysis to help companies make better business decisions or tutoring in math. She has recently earned her MCSA certification and is an active volunteer for Denver WIT group.
LinkedIn: http://www.linkedin/in/carlosbossy
Contact: http://www.carlosbossy.com
Carlos Bossy (MCTS, MCP BI, CBIP) is a data and cloud analytics architect with 25 years of experience in software and database development. As a principal of Datalere, Carlos focuses on developing BI, Data Science, and Advanced Analytics solutions, including modeling data warehouses and delivering predictive models, integration, and visualization. He has developed warehouses and BI solutions for a variety of industries and state agencies, including health insurance, solar energy, foster care, telecom, and manufacturing.
LinkedIn: http://www.linkedin.com/in/reevessmithiii/
Contact: http://reevessmith.wordpress.com
Reeves Smith, owner and principal architect of Macer Consulting, is passionate about applying data technologies that empower organizations. Reeves wields his knowledge and experience to lead, design, architect, and teach, working with both data center and business project teams. He approaches every project by first understanding the organization’s business challenges, and then developing a unique approach that targets those business needs accurately and effectively. Reeves Smith has more than 20 years of experience working on the SQL Server stack. He is a Microsoft Data Platform MVP and Microsoft Certified Master, and regularly delivers technical presentations at international, regional, and local conferences and user groups.
LinkedIn: https://www.linkedin.com/in/chris-hyde-3803706
Chris Hyde is a Microsoft Data Platform MVP and Microsoft Certified Trainer based in Albuquerque, New Mexico. He works as an independent SQL Server BI and DBA consultant, and is the leader of the Albuquerque PASS local user group. He is also part of the Friends of Redgate program and was a member of the Idera ACE class of 2018. He loves loud music and cricket, but usually not at the same time.
LinkedIn: http://www.linkedin.com/pub/jeff-renz/29/82a/aa4
Contact: http://www.revgen.com
Jeff Renz is a Senior Architect at RevGen Partners, currently working as the design architect and implementation lead on several projects for a Fortune Top 50 company. Jeff has worked with SQL Server and BI for 15+ years and has 10 years’ experience with data warehouse design and implementation. In addition to consulting, he is joining the University of Denver adjunct faculty and is expected to begin teaching in the ICT program starting in June. He received his bachelor’s degree in Computer Science, his master’s degree in Operations Research from Colorado School of Mines, and will be graduating from the Harvard Business Analytics Program in December.
The following is a list of sponsors that helped fund the event.


{% extends "server/base.html" %} {% block content %}
You should already have your teams and be ready to start hunting for sights around Old San Juan! Here's a quick recap of the rules. When you're ready to start hunting do the following:
TLDR; it's a scavenger hunt. Your team will get clues via SMS or on this site. You have to check-in at the solution to get the next clue. Email your answers for bonus questions to<EMAIL_ADDRESS>
This Scavenger Hunt will cover historic and modern points of interest in Old San Juan!
Things to pack for the hunt: hat, sun block, water, comfortable walking shoes, phone/camera.
Upon arrival in Old Town, we'll be at Plaza Colon. Check into the plaza on Swarm using your personal Foursquare account -- AFTER you have logged in to this site and updated your phone number -- and you'll begin receiving your team's clues via SMS! Check into venues as you discover them to uncover your next clues. You can also see a list of all the clues you've uncovered on this site at any time in case you don't get the text or forget what the clue was.
We'll be in Old Town for 2.5 hours.  But, do not miss the 5:30pm bus or your team will be disqualified and you'll need to find your own transportation back to the hotel.
Answers are 1 point. Bonus Answers are 2 points.
Answers are submitted by someone on your team checking in to the solution.
All bonus answers should be submitted via email to<EMAIL_ADDRESS>in picture or video form and captioned with your team name. If a question requests you write an answer, you can simply jot it down in your phone "notes" and send a screen shot. Paper/pens will not be necessary.
Only answers submitted before 5:30pm will count.
Scavenger Hunt Timeline, Monday afternoon:
The winning team will receive a Puerto Rico Gift Bag! Good luck!
{% endblock %}


Folders
<parent>
File
File
File
File
File
File
File
File
File
File
13_Roman_...r.java
172_Facto...s.java
29_Divide...s.java
69_Sqrt(x).java
Excel_She...r.java
Factorial...s.java
Happy_Number.java
Power_of_...e.java
Roman_to_...r.java
Sqrt(x).java
171_Excel...r.java
202_Happy...r.java
326_Power...e.java
Divide_Tw...s.java
Folders: 1
Files: 14
Size of all files: 0.007 MG


Usage: docker push [OPTIONS] NAME[:TAG]
Push an image or a repository to a registry
Options:
--disable-content-trust
Skip image signing (default true)


⚠ Documentation is version-specific: This page was generated for ScottPlot 4.1.4-beta
Additional documentation and more version-specific cookbooks are on the ScottPlot Website
Fill methods help to create semitransparent polygons to fill the area under a curve. This can be used to give the appearance of shading under a scatter plot, even though the plottable created here is a polygon with optional edge color and fill color.
var plt = new ScottPlot.Plot(600, 400);
// create sample data
double[] xs = DataGen.Range(0, 10, .1, true);
double[] ys1 = DataGen.Sin(xs);
double[] ys2 = DataGen.Cos(xs);
// add filled polygons
plt.AddFill(xs, ys1);
plt.AddFill(xs, ys2, baseline: -.25);
// tighten the axis limits so we don't see lines on the edges
plt.SetAxisLimits(xMin: 0, xMax: 10);
plt.SaveFig("fill_curve.png");
Sometimes you want to share the area under a curve, but change its color depending on which side of the baseline value it is. There's a helper method to make this easier.
var plt = new ScottPlot.Plot(600, 400);
// create sample data
Random rand = new Random(3);
double[] xs = DataGen.Consecutive(201);
double[] ys = DataGen.RandomWalk(rand, xs.Length);
// add filled polygons
plt.AddFillAboveAndBelow(xs, ys);
// tighten the axis limits so we don't see lines on the edges
plt.SetAxisLimits(xMin: 0, xMax: 200);
plt.SaveFig("fill_aboveBelow.png");
Given two curves, a polygon can be created to give the appearance of shading between them. Here we will display two scatter plots, then create a polygon to fill the region between them.
var plt = new ScottPlot.Plot(600, 400);
// create sample data
double[] xs = DataGen.Range(0, 10, .1, true);
double[] ys1 = DataGen.Sin(xs);
double[] ys2 = DataGen.Cos(xs);
// add a polygon to fill the region between the two curves
plt.AddFill(xs, ys1, xs, ys2);
// add two scatter plots the traditional way
plt.AddScatter(xs, ys1, color: Color.Black);
plt.AddScatter(xs, ys2, color: Color.Black);
// tighten the axis limits so we don't see lines on the edges
plt.SetAxisLimits(xMin: 0, xMax: 10);
plt.SaveFig("fill_between.png");


npm dist-tag add <pkg>@<version> [<tag>]
npm dist-tag rm <pkg> <tag>
npm dist-tag ls [<pkg>]
aliases: dist-tags
Add, remove, and enumerate distribution tags on a package:
add: Tags the specified version of the package with the specified tag, or the --tag
config
if not specified. If you have two-factor authentication on auth-and-writes then you’ll need to include a
one-time password on the command line with --otp <one-time password>
, or at the OTP
prompt.
rm: Clear a tag that is no longer in use from the package. If you have two-factor authentication on
auth-and-writes then you’ll need to include a one-time password on the command line with --otp
<one-time password>
, or at the OTP prompt.
ls: Show all of the dist-tags for a package, defaulting to the package in the current prefix. This is the default action if none is specified.
A tag can be used when installing packages as a reference to a version instead of using a specific version number:
When installing dependencies, a preferred tagged version may be specified:
(This also applies to any other commands that resolve and install dependencies, such as npm dedupe
,
npm update
, and npm audit fix
.)
Publishing a package sets the latest
tag to the published version unless the --tag
option is used. For example, npm publish --tag=beta
.
By default, npm install <pkg>
(without any @<version>
or
@<tag>
specifier) installs the latest
tag.
Tags can be used to provide an alias instead of version numbers.
For example, a project might choose to have multiple streams of development and use a different tag for each
stream, e.g., stable
, beta
, dev
, canary
.
By default, the latest
tag is used by npm to identify the current version of a package, and
npm install <pkg>
(without any @<version>
or @<tag>
specifier) installs the latest
tag. Typically, projects only use the latest
tag for
stable release versions, and use other tags for unstable versions such as prereleases.
The next
tag is used by some projects to identify the upcoming version.
Other than latest
, no tag has any special significance to npm itself.
This command used to be known as npm tag
, which only created new tags, and so had a different
syntax.
Tags must share a namespace with version numbers, because they are specified in the same slot: npm install
<pkg>@<version>
vs npm install <pkg>@<tag>
.
Tags that can be interpreted as valid semver ranges will be rejected. For example, v1.4
cannot be
used as a tag, because it is interpreted by semver as >=1.4.0 <1.5.0
. See https://github.com/npm/npm/issues/6082.
The simplest way to avoid semver problems with tags is to use tags that do not begin with a number or the letter
v
.


Andriy Mykulyak
"Offline-first applications"
2018-10-10
Who am I ?
Senior software consultant
@ Shedul,
Warsaw
Full stack developer. Like challenges, JavaScript, Python and Elixir.
Privately is passionate about triathlon.
"Do. Or do not. There is no try" (c) Yoda
Plan
- What is offline-first application ?
- Offline-first architecture
- Static asset caching
- What is with application data ?
- Adapting UI to offline
- Collaborative applications
- Other stuff
What is offline-first application ?
An application that remains functional even without network connection.
Also usable in cases:
- very slow connections
- server overloads
- downtimes
Offline - basic
- loads even when offline
- tracks/shows connection status
- when offline, blocking screen is displayed
- restores normal operation when online
Offline - readable
- all from basic
- when offline, interface is still browsable
- when offline, data modifications are blocked
Offline - first
- all from basic and readable
- when offline, data modifications are allowed
- when online, synchronizes in the background with the server
Offline - omg
- allows collaborative work, even when offline
- real-time
- operates on large amounts of data (1 Gb or more)
Offline architecture
Write applications as if there were no network connection at all.
Consider communication with server as a side effect.
Why not native apps ?
- single code base
- faster deployment and upgrades
- a way higher visibility to customers
Offline challenges
- What serves our application ?
- How to manage (store, version, upgrade) application assets ?
- Where to store application data ?
- How to reliably synchronize with the server ?
Service workers to the rescue !
- It is a separate script that sits between Web page and network
- It can intercept requests from page to servers
- It can receive notifications from servers
- It can communicate with Web pages via
postMessage()
- It can access cached HTTP content for this page
Architecture - how SW works
Architecture - service worker lifecycle
Service worker registration
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
// service worker will control
// everything under /scope path
navigator.serviceWorker.register('/scope/sw.js');
});
}
Service worker lifecycle events
self.addEventListener('install', (event) => {
// we'll install soon
});
self.addEventListener('activate', (event) => {
// no other service workers are present
// we'll control our pages soon :)
});
Architecture - offline-first application
Asset caching
- Cache API is the foundation
- works offline
- can use HTTP Cache
- very low-level (
add()
, match()
, put()
, delete()
- no versioning, expiration, etc.
- is a nice wrapper
- high-level interface above Cache API
- request routing and caching strategies
- adds versioning and time-based expiration functionality
- Webpack plugins for service worker generation
Workbox setup - easy way
import workboxPlugin from 'workbox-webpack-plugin';
export default {
plugins: [
new workboxPlugin.GenerateSW(options),
],
};
Workbox setup - customizable
import workbox from 'workbox-webpack-plugin';
export default {
plugins: [
new workbox.InjectManifest({
swSrc: '/scope/service-worker.js'
})
]
}
Caching strategies
- precaching - download and cache an asset before service worker installs
- cache, fallback to network - for rarely modified assets
- stale-while-revalidate - use cache, fetch from network, update cache
Precaching - Cache API
self.addEventListener('install', event => {
event.waitUntil(
caches.open('cache-name').then(cache => {
cache.addAll([ ... ]); // non-required deps
return cache.addAll([ ... ]); // required deps
})
)
});
Precaching with Workbox
importScripts('https://storage.googleapis.com/workbox-cdn/releases/3.6.2/workbox-sw.js');
importScripts('/scope/service-worker.js');
workbox.precaching.precacheAndRoute(
self.__precacheManifest || []
);
Cache, fallback to network - Cache API
self.addEventListener('fetch', (event) => {
event.respondWith(
caches.match(event.request).then((response) => {
return response || global.fetch(event.request);
})
);
});
Cache, fallback to network - Workbox
workbox.routing.registerRoute(
/\/avatars/.*\.(?:png|jpg|jpeg|svg|gif)/,
workbox.strategies.cacheFirst({
plugins: [
new workbox.expiration.Plugin({
maxEntries: 20,
maxAgeSeconds: 7 * 24 * 60 * 60,
})
],
})
);
Where to store application data ?
- localStorage
- IndexedDB
- PouchDB (with CouchDB)
- Firebase
Using IndexedDB
- object database
- multiple stores, indexes
- event-based
- not the easiest interface
Application data - framework support
- redux-offline
- redux-persist
Application data - reading
- Store and cache data locally
- framework-specific solutions
Application data - writing
- Background synchronization
Adapting UI to offline
- Displaying connection status
- Optimistic updates
- Displaying update info for app objects
- Resolving conflicts
Collaborative work
- conflict resolution
- MVCC
- ETag
- Operational Transform
Conflict resolution strategies
- ShareDB
- TurtleDB / TortoiseDB
Other (interesting) stuff
- Security of offline applications
- Authorization data
- transactional applications
See you next month at WarsawJS


For reference: here we have some Snacklabs.
Build a Twitter Clone using Flexbox
Build a Weather App with Vue