text:
---
title: Microcontent Sells
author: callie
layout: post
permalink: /2008/03/10/microcontent-sells/
tags:
  - business
  - ideas
  - microcontent
  - music
  - OpenContent
---

I spend a lot of time in the Open Content world. [COSL ][1] is all about opening up content and making it available to the world. Given that fact why would I write about selling content? The Internet is full of great content and if all I need to do is run a quick Google search to get my answer why would I pay?

 [1]: http://cosl.usu.edu

For anyone that has done any Ruby on Rails programming you have hopefully discovered [Peep Code][2].  Peep code picks a very specific topic related to an area of programming in Rails that is meaningful to a lot of people. They have videos on REST, ActiveMerchant, using Textmate, etc. Many of these topics are covered on sites around the web, but customers are willing to pay to get it here.

 [2]: http://peepcode.com/

Why?

For one the handy packaging makes it simple to find what you need. They have done a great job marketing the site. Most people in the community know the site. They have experts give the training so you know you are getting high quality material. For example, Cody Fauser, one of the ActiverMerchant developers put together the presentation on ActiveMerchant. The fact that the micro-training is cheap - $9 - doesn't hurt either.


text:
[![Build Status](https://app.travis-ci.com/vanessavps/java-design-patterns.svg?branch=main)](https://app.travis-ci.com/vanessavps/java-design-patterns)
# Design Patterns - Java
Some design patterns examples in Java

## Creational Patterns
* [Singleton](src/main/java/com/vanessavps/patterns/creational/singleton)
* [Builder](src/main/java/com/vanessavps/patterns/creational/builder)
* [Factory](src/main/java/com/vanessavps/patterns/creational/factory)
* [Abstract Factory](src/main/java/com/vanessavps/patterns/creational/abstractFactory)
* [Prototype](src/main/java/com/vanessavps/patterns/creational/prototype)

## Structural Patterns
* [Adapter](src/main/java/com/vanessavps/patterns/structural/adapter)
* [Bridge](src/main/java/com/vanessavps/patterns/structural/bridge)
* [Composite](src/main/java/com/vanessavps/patterns/structural/composite)
* [Decorator](src/main/java/com/vanessavps/patterns/structural/decorator)
* [Facade](src/main/java/com/vanessavps/patterns/structural/facade)
* [Flyweight](src/main/java/com/vanessavps/patterns/structural/flyweight)
* [Proxy](src/main/java/com/vanessavps/patterns/structural/proxy)

## Behavioral Patterns
* [Chain of Responsibility](src/main/java/com/vanessavps/patterns/behavioral/chainOfResponsibility)
* [Command](src/main/java/com/vanessavps/patterns/behavioral/command)
* [Iterator](src/main/java/com/vanessavps/patterns/behavioral/iterator)
* [Mediator](src/main/java/com/vanessavps/patterns/behavioral/mediator)
* [Strategy](src/main/java/com/vanessavps/patterns/behavioral/strategy)
* [Memento](src/main/java/com/vanessavps/patterns/behavioral/memento)
* [State](src/main/java/com/vanessavps/patterns/behavioral/state)
* [Observer](src/main/java/com/vanessavps/patterns/behavioral/observer)
* [Template](src/main/java/com/vanessavps/patterns/behavioral/template)
* [Interpreter](src/main/java/com/vanessavps/patterns/behavioral/interpreter)
* [Visitor](src/main/java/com/vanessavps/patterns/behavioral/visitor)

## License
[MIT](https://choosealicense.com/licenses/mit/)

license: MIT

repository: vanessavps/java-design-patterns

branch_name: refs/heads/main

extension: md

license_type: permissive

repo_name: vanessavps/java-design-patterns


text:
# Promagen
PROject MAnager & GENerator

## How it work's?
Web service on browser is using console for executing bash scripts on server/pc/iot device

Start and maintaince is so simple, without using terminal and many lines of scripts code
Now for each project can be easly access to seolve problems & maintanance project without experts.

+ Webapplication is based on [Nodejs](https://nodejs.org/en/)
+ Terminal scripts are starting over [shelljs](https://github.com/shelljs/shelljs) library
+ Scripts are created by [apicra](https://github.com/apicra) project, which is supporting any os

## Benefits
Thanks this, you can faster do something without spending time for writing
Special solution for mobile devices!

Be faster!
... more touching, less writing

### Devops-Gui
the first version of apicra tool, just for testing web interface and terminal console
This project is using apicra-devops scripts to execute in console on many platform: Windows, Linux, iOS

https://github.com/apicra/devops

### DevOpsTerminal
This tool will be used instead of apicra tool, with:
+ extended functionality for shell, bash scripting
+ more options for project management
+ the same platform, nodejs
+ better UI, optimisied for automatisation

### WebBrowser client for terminal console
https://github.com/DevOpsTerminal/frontend

## How it works
NodeJS Installation

https://nodejs.org/en/

Create Application

Scann xampp projects

Run Command from any docker

show console result

possible to restart docker with defaults from command line?

Libraries

https://www.npmjs.com/package/shelljs

    npm install shelljs
    npm install opn
    npm install fs-path
    npm install ini
    npm install --save os-homedir

shelljs/global

    npm install shelljs

Start APP

    npm start

## TODO

    Make for each folder, by param
    user folders/
        /intellij
        phpstorm
        webstorm
    xampp path

repository: promagen/devops-gui

branch_name: refs/heads/master

gha_language: JavaScript

repo_name: promagen/devops-gui


text:
---
# Proximity 3 click

Proximity 3 click is an intelligent proximity and light sensing device, which features the VCNL4200 sensor from Vishay - high sensitivity long distance proximity sensor (PS), ambient light sensor (ALS) and 940 nm IRED, all in one small package.

[click Product page](https://www.mikroe.com/proximity-3-click)

---

#### Click library

- **Author**        : MikroE Team
- **Date**          : Dec 2019.
- **Type**          : I2C type

# Software Support

We provide a library for the Proximity3 Click
as well as a demo application (example), developed using MikroElektronika
[compilers](https://shop.mikroe.com/compilers).
The demo can run on all the main MikroElektronika [development boards](https://shop.mikroe.com/development-boards).

Package can be downloaded/installed directly form compilers IDE(recommended way), or downloaded from our LibStock, or found on mikroE github account.

## Library Description

> This library contains API for Proximity3 Click driver.

#### Standard key functions :

- Config Object Initialization function.
> void proximity3_cfg_setup ( proximity3_cfg_t *cfg );

- Initialization function.
> PROXIMITY3_RETVAL proximity3_init ( proximity3_t *ctx, proximity3_cfg_t *cfg );

- Click Default Configuration function.
> void proximity3_default_cfg ( proximity3_t *ctx );

#### Example key functions :

- This function writes data to the desired register.
> void proximity3_generic_write ( proximity3_t *ctx, uint8_t reg_address, uint16_t data_in );

- This function reads data from the desired register.
> uint16_t proximity3_generic_read ( proximity3_t *ctx, uint8_t reg_address );

- This function gets the data returned by the ambient light sensor.
> uint16_t proximity3_read_ambient_light_sensor ( proximity3_t *ctx );

- This function returns the proximity.
> uint8_t proximity3_read_proximity( proximity3_t *ctx );

- This function calculates distance using data reported by sensor.
> uint8_t proximity3_get_distance( proximity3_t *ctx );

- This function returns illuminance.
> uint16_t proximity3_get_illuminance( proximity3_t *ctx );

## Examples Description

> This example reads the data from the ambient light sensor
> and converts the data into digital form using calculations.

**The demo application is composed of two sections :**

### Application Init

> Initialization driver enables - I2C, initializes VCNL4100,
> write configuration register and starts to write log to Usart Terminal.

```c

void application_init ( void )
{
    log_cfg_t log_cfg;
    proximity3_cfg_t cfg;

    //  Logger initialization.

    log_cfg.level = LOG_LEVEL_DEBUG;
    LOG_MAP_USB_UART( log_cfg );
    log_init( &logger, &log_cfg );
    log_info( &logger, "---- Application Init ----" );

    //  Click initialization.

    proximity3_cfg_setup( &cfg );
    PROXIMITY3_MAP_MIKROBUS( cfg, MIKROBUS_1 );
    proximity3_init( &proximity3, &cfg );

    // Default startup options for Ambient Light Sensor
    proximity3_generic_write( &proximity3, PROXIMITY3_ALS_CONF_REG, PROXIMITY3_ALS_CONF_CONFIG );
    Delay_ms( 10 );

    // Default startup options for Proximity
    proximity3_generic_write( &proximity3, PROXIMITY3_PS_CONF1_CONF2_REG, PROXIMITY3_PS_CONF1_CONF2_CONFIG );
    Delay_ms( 10 );
    proximity3_generic_write( &proximity3, PROXIMITY3_PS_CONF3_MS_REG, PROXIMITY3_PS_CONF3_MS_CONFIG );
    Delay_ms( 10 );

    // Set the proximity interrupt levels
    proximity3_generic_write( &proximity3, PROXIMITY3_PS_THDL_REG, PROXIMITY3_PS_THDL_CONFIG );
    Delay_10ms();
    proximity3_generic_write( &proximity3, PROXIMITY3_PS_THDH_REG, PROXIMITY3_PS_THDH_CONFIG );
    Delay_10ms();

    // Check device ID
    value_id = proximity3_generic_read( &proximity3, PROXIMITY3_DEVICE_ID_REG );

    if ( value_id != PROXIMITY3_DEVICE_ID_VALUE )
    {
        log_printf( &logger, "        ERROR");
    }
    else
    {
        log_printf( &logger, "       Initialization" );
        log_printf( &logger, "--------------------------" );
    }

    Delay_100ms();
}

```

### Application Task

> This is a example which demonstrates the use of Proximity 3 Click board.
> Measured distance ( proximity ) and illuminance ( abmient light ) from sensor,
> results are being sent to the Usart Terminal where you can track their changes.
> All data logs on usb uart for aproximetly every 3 sec.

```c

void application_task ( void )
{
    result_proximity = proximity3_get_distance( &proximity3 );
    Delay_ms( 10 );

    log_printf( &logger, " Proximity:     %d cm", result_proximity );

    result_ambient_light = proximity3_get_illuminance( &proximity3 );
    log_printf( &logger, " Ambient Light:       %d lux", result_ambient_light );

    log_printf( &logger, "-----------------------------------------" );
}

```

The full application code, and ready to use projects can be  installed directly form compilers IDE(recommneded) or found on LibStock page or mikroE GitHub accaunt.

**Other mikroE Libraries used in the example:**

- MikroSDK.Board
- MikroSDK.Log
- Click.Proximity3

**Additional notes and informations**

Depending on the development board you are using, you may need
[USB UART click](https://shop.mikroe.com/usb-uart-click),
[USB UART 2 Click](https://shop.mikroe.com/usb-uart-2-click) or
[RS232 Click](https://shop.mikroe.com/rs232-click) to connect to your PC, for
development systems with no UART to USB interface available on the board. The
terminal available in all Mikroelektronika
[compilers](https://shop.mikroe.com/compilers), or any other terminal application
of your choice, can be used to read the message.

---


text:
Contributing Guidelines
=======================

Issues
------

You can report bugs and feature requests to [GitHub Issues](https://github.com/effkay/blazing/issues).

When you file a bug, please try to follow these simple rules if applicable:

* Make sure you've read the README carefully.
* Make sure that the issue is reproducible with your description.

**It's most likely that your bug gets resolved faster if you provide as much information as possible!**

Development
-----------

Pull requests are very welcome! Please try to follow these simple rules if applicable:

* Please create a topic branch for every separate change you make.
* Make sure your patches are well tested.
* Update the README.
* Update the CHANGELOG for noteworthy changes.
* Please **do not change** the version number.

repository: Alric/blazing

repo_name: Alric/blazing


text:
# Topic

> 【環境教育】《明天過後》演錯了？專家解析災難電影 (Climate Scientist Reviews Global Warming Movies)

> We see the rise of dictators across the planet and resources become more and more limited, most of the earth has turned into a desert.

> 我們看到全球獨裁者興起、資源日益缺乏、多數土地沙漠化。

[![Image](https://cdn.voicetube.com/assets/thumbnails/47fqf8_J2HQ.jpg)](https://www.youtube.com/embed/47fqf8_J2HQ?rel=0&showinfo=0&cc_load_policy=0&controls=1&autoplay=1&iv_load_policy=3&playsinline=1&wmode=transparent&start=257&end=268&enablejsapi=1&origin=https://tw.voicetube.com&widgetid=1)

Host: Nina

Today issue: Hello, everyone! Nice to meet you!

[Host record](https://cdn.voicetube.com/tmp/everyday_records/2186512841442311/3426.mp3)

## learning points
1. _
	* dictator [ˋdɪk͵tetɚ] (n.) 獨裁者；專斷獨行的人
		- The military dictator has been ruling this country for decades the people in this country has not had a single day of peace.
			+ 幾十年來，軍事獨裁者統治這個國家，這個國家的人民沒有一天的和平日。

2. _
	* resource [ˈriˌsɔrs] (n.) (有形的；無形的) 資源
		- Russia is full of Natural Resources such as oil and gas.
			+ 俄羅斯充滿了石油和天然氣等自然資源。
		- The company used all its resources to develop this new product it's all or nothing for them.
			+ 該公司利用其所有資源開發這種新產品，這對他們來說是全有或全無。
			+ all or nothing => 成敗在此一舉

3. _
	* limited [ˋlɪmɪtɪd] (adj.) 有限的
		- It was already too late for started to look for a hotel there were very limited options.
			+ 開始尋找酒店已經太晚了，選擇非常有限。
		- unlimted => 無限
			+ If you buy the monthly or pass ticket you can take the MRT for an unlimited number of times before it expires.

4. _
	* desert [ˋdɛzɚt] (n.) 沙漠
		- My dream is to ride a camel in the desert.
			+ 我的夢想是在沙漠中騎駱駝。
		- Oasis => 綠洲, cactus => 綠洲


text:
title: Unique Counters
---

# Unique Counters

Sometimes simple counters are not enough and you need more powerful counters. This is where unique counts, or **time windowed set cardinalities**, come into play.

### Your first unique counter

To get started we're going to count the number of unique credit cards used over your entire account in the last twelve hours.

```
LET NumCreditCards := countUnique(CreditCard LAST 12 HOURS);
```

### Grouping unique counts

It is rare that you just want to count unique values across your whole dataset. More often than not, you will be interested in counting unique values grouped by another feature.

Let's say we wanted to create a rule that blocks payments from users who have a suspicious number of credit cards. We could accomplish that with the following rule.

```
LET NumCreditCards := countUnique(CreditCard BY SessionActor LAST 5 DAYS);
CREATE RULE SuspiciousNumCreditCards WHERE NumCreditCards > 4;
```

Now, rather than counting all the unique credit cards we have seen for everyone, we are counting the number of cards by each individual user.

### Counting with conditions and groups

Let's bring it together with an example that includes a WHERE condition as well. In this example we want to create a rule that picks up when a credit card is used in more than one risky country.

We include the number of risky countries it has been seen in inside the rule reason. Finally we mark the rule as fully rolled out, and set it to both block the action and apply a bad_credit_card label to the card that was used.

```
LET NumRiskyCountries := countUnique(Country BY CreditCard WHERE RiskyCountry LAST 5 DAYS);
CREATE RULE MultiRiskyCountryCreditCard WHERE NumRiskyCountries > 1
  WITH REASON "Credit card was used in ${NumRiskyCountries} risky countries in last 5 days.";

WHEN MultiRiskyCountryCreditCard
  blockAction(),
  addLabel(CreditCard, "bad_credit_card");
```

repository: twitter/sqrl

gha_language: TypeScript

repo_name: twitter/sqrl


text:
#### Nr: 228
#### [Back to Main list](index.md)
# SQLSaturday #228 - Cambridge 2013
Start Time (24h)|Speaker|Track|Title
---|---|---|---
00:00:00|Bruno Basto|The Meaning of Life (DBA)|[SQL Internal Storage – P2](#sessionid-11002)
00:00:00|Constantin Klein|...and now for something completely different|[StreamInsight: Complex Event Processing by MS](#sessionid-11802)
00:00:00|Dave Ballantyne|Ministry of funny walks (DEV)|[TraceFlag Fun](#sessionid-12193)
00:00:00|David McMahon|Dead Parrot (SharePoint)|[SharePoint HA and DR](#sessionid-12422)
00:00:00|Hugo Kornelis|The Meaning of Life (DBA)|[Advanced Indexing](#sessionid-15063)
00:00:00|Hugo Kornelis|Ministry of funny walks (DEV)|[Create Your Own Data Type](#sessionid-15068)
00:00:00|Niko Neugebauer|SPAM (BI)|[DataExplorer - the reason you might not need SQL Server ](#sessionid-15368)
00:00:00|Jen Stirrup|...and now for something completely different|[From Big Data to secret sauce: power your organisation with PowerBI](#sessionid-16391)
00:00:00|Jen Stirrup|SPAM (BI)|[Advanced Data Visualisation with Reporting Services](#sessionid-16547)
00:00:00|John Martin|Ministry of funny walks (DEV)|[Data Driven Branding for SSRS](#sessionid-17166)
00:00:00|Jens Vestergaard|SPAM (BI)|[Analysis Services Security - Steel Curtain Cubes](#sessionid-17805)
00:00:00|Kevin Chant|...and now for something completely different|[Come and meet my little friend - Using Hyper-V on Windows 8 Pro](#sessionid-18034)
00:00:00|Kennie Pontoppidan|Ministry of funny walks (DEV)|[SQL anti patterns](#sessionid-18113)
00:00:00|Leonard Lobel|Ministry of funny walks (DEV)|[Database Development with SQL Server Data Tools](#sessionid-19032)
00:00:00|Les Reading|Ministry of funny walks (DEV)|[Advanced Performance Tuning Tips with Ignite](#sessionid-19517)
00:00:00|Les Reading|SPAM (BI)|[High Performance and Highly Available SANLess Clustering for MS SQL Server](#sessionid-19518)
00:00:00|Les Reading|The Meaning of Life (DBA)|[Automate All The Things! Best Practices for Fast, Painless Database Deployments](#sessionid-19519)
00:00:00|Les Reading|Just a slither|[How to build process based applications on top of your SQL Data](#sessionid-19521)
00:00:00|Les Reading|...and now for something completely different|[Microsoft training and certification for SQL Server and Cloud solutions](#sessionid-19522)
00:00:00|Les Reading|The Meaning of Life (DBA)|[Migrating to the Cloud](#sessionid-19523)
00:00:00|Les Reading|SPAM (BI)|[PDW : Introduction to the Data Movement Service](#sessionid-19524)
00:00:00|Les Reading|Dead Parrot (SharePoint)|[Now that’s what I call the worst dataviz – ever! ](#sessionid-19525)
00:00:00|Les Reading|The Meaning of Life (DBA)|[Idera SQL Diagnostic Manager](#sessionid-19526)
00:00:00|Les Reading|Just a slither|[Introduction to SQL Server 2014 In-Memory OLTP](#sessionid-19527)
00:00:00|Les Reading|Dead Parrot (SharePoint)|[SQL Server Estate Rationalisation](#sessionid-19528)
00:00:00|Mark Broadbent|Just a slither|[When to use which installation of SQL Server: On-prem, IaaS in Windows Azure, or Windows Azure SQLDB](#sessionid-19529)
00:00:00|Mark Broadbent|SPAM (BI)|[The Irish Economic Crisis, Visualized](#sessionid-19530)
00:00:00|Mark Macrae|Dead Parrot (SharePoint)|[Business Intelligence Options for SharePoint 2013 ](#sessionid-19675)
00:00:00|Niko Neugabauer|...and now for something completely different|[SQL 2014 Clustered Columnstore - An Introduction](#sessionid-21444)
00:00:00|Oliver Engels|...and now for something completely different|[Access Services are cool! Are you kidding? :)](#sessionid-21548)
00:00:00|Peter Baddeley|Dead Parrot (SharePoint)|[SharePoint what are you doing at my SQL event](#sessionid-21899)
00:00:00|Lord Richard Douglas|Ministry of funny walks (DEV)|[Natural Born Killers, performance issues to avoid](#sessionid-22689)
00:00:00|Lord Richard Douglas|Ministry of funny walks (DEV)|[The Day After Tomorrow: Why you need to baseline](#sessionid-22692)
00:00:00|Regis Baccaro|Just a slither|[Deep Dive into DQS](#sessionid-22827)
00:00:00|Seb Matthews|Dead Parrot (SharePoint)|[Leveraging PowerShell for SharePoint Database Operations](#sessionid-24296)
00:00:00|Stephen Archbold|The Meaning of Life (DBA)|[Getting the most from your SAN - File and Filegroup design patterns](#sessionid-25292)
00:00:00|Stuart Moore|The Meaning of Life (DBA)|[Automating Database Restores and Verification with PowerShell](#sessionid-25823)
00:00:00|Kevin Boles|...and now for something completely different|[Windowing Functions: THE Reason to Upgrade to 2012](#sessionid-26157)
00:00:00|Tony Rogerson|The Meaning of Life (DBA)|[Bitmap and Bloom Filter Indexing in SQL Server](#sessionid-27047)
00:00:00|Al Eardley|Dead Parrot (SharePoint)|[So you're getting SharePoint - What's a DBA to do?](#sessionid-9172)
00:00:00|Alex Whittles|SPAM (BI)|[MDX 101 - getting started with MDX](#sessionid-9213)
00:00:00|Allan Mitchell|SPAM (BI)|[Hadoop for the Microsoft Guy](#sessionid-9289)
00:00:00|Anthony Obi|Dead Parrot (SharePoint)|[Rapid Data Integration using SharePoint Business Connectivity Services](#sessionid-9692)
#
#### SessionID: 11002
# SQL Internal Storage – P2
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: The Meaning of Life (DBA)
## Speaker: Bruno Basto
## Title: SQL Internal Storage – P2
## Abstract:
### This session describes how SQL Server internally stores table data. Although you can use SQL without understanding the internals of data storage, a deep knowledge of how data is stored will improve the development of efficient applications. This second part of this session explores the basic of metadata that keeps track of index storage and compression.
#
#### SessionID: 11802
# StreamInsight: Complex Event Processing by MS
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: ...and now for something completely different
## Speaker: Constantin Klein
## Title: StreamInsight: Complex Event Processing by MS
## Abstract:
### The number of sensors is growing and growing and brings us closer to the "Internet of things". Applications, that have to process a big amount of data from event streams are a logical consequence. Some developers might have heard from Reactive Extensions (Rx) already, but Microsoft offers with StreamInsight (SI) another comprehensive platform for these scenarios.

In this session you will learn what a great addition for your toolbox StreamInsight is, if you have to develop applications, that have to handle complex events (CEP- Complex Event Processing). See how you can start with this technologie and how easy it is to jump in for .NET developers.
#
#### SessionID: 12193
# TraceFlag Fun
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: Ministry of funny walks (DEV)
## Speaker: Dave Ballantyne
## Title: TraceFlag Fun
## Abstract:
### SQLServer has many TraceFlags that are, for the most part, used to alter a specific part of functionality of SQLServer and are documented as such.  Many of the more interesting flags, however are undocumented, usage is not guaranteed to work across releases, but none the less can reveal some important insight about the product, your data and your queries.

In this session a selection of flags ( both documented and undocumented ) will be explained and why you would (and would not) want to enable them.

#
#### SessionID: 12422
# SharePoint HA and DR
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: Dead Parrot (SharePoint)
## Speaker: David McMahon
## Title: SharePoint HA and DR
## Abstract:
### When it comes to SharePoint High Availability (HA) and Disaster Recovery (DR) are often merged and confused. In this session we'll take a look at the various HA tools that are available to you  when configuring a SharePoint Farm. We'll look at this from a SQL perspective and from a SharePoint perspective and consider what the implications are when applying patches and deploying customisations to a SharePoint Farm for HA and DR. We'll consider some HA and DR scenarios for SharePoint 2010 and SharePoint 2013 and take a look at the use of SQL Always On as it relates to SharePoint.
#
#### SessionID: 15063
# Advanced Indexing
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: The Meaning of Life (DBA)
## Speaker: Hugo Kornelis
## Title: Advanced Indexing
## Abstract:
### So you know all about heaps, clustered indexes, and nonclustered indexes, but are still not satisfied? Then this is just the session for you!
Hugo will explore advanced features such as included columns, indexed views, and filtered indexes. You will find out how they are stored on disk, and how SQL Server uses them to satisfy queries. Then, you will see the tools SQL Server itself hands you to help identify just the right subset of indexes. And finally, you will get an stunning demonstration of just how bad you can hurt performance by following all those recommendations and creating too many indexes.
#
#### SessionID: 15068
# Create Your Own Data Type
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: Ministry of funny walks (DEV)
## Speaker: Hugo Kornelis
## Title: Create Your Own Data Type
## Abstract:
### Have you ever needed a data type that SQL Server simply does not support? So why not add it?
Ever since SQL Server 2005, you can easily create additional data types for use in SQL Server. Using .NET integration, you can define a data type and program all the methods you need to make it behave exactly the way you want it to - both in the database and in your .NET application programs.
This session will show you exactly how to create a CLR user-defined data type, and how to integrate it in your database. Will you be the one who creates the next Big Thing, the data type that puts Spatial and Hierarchyid to shame?
#
#### SessionID: 15368
# DataExplorer - the reason you might not need SQL Server
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: SPAM (BI)
## Speaker: Niko Neugebauer
## Title: DataExplorer - the reason you might not need SQL Server
## Abstract:
### The DataExplorer plugin for Excel( which is currently in preview) is targeting Excel users and Business Analysts by providing them a homegrown ETL process without any additional Servers. Powered by the flexibility of the "M" language, DataExplorer is capable reaching out for such diverse sources as OData, File System, HDInsight or Facebook, for example.
Besides providing an accessible interface for the non-IT people, the real potential behind DataExplorer lies in creating customizable functions and processes far beyond any GUI.
Join me for an hour of "DataExploration"! :)
#
#### SessionID: 16391
# From Big Data to secret sauce: power your organisation with PowerBI
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: ...and now for something completely different
## Speaker: Jen Stirrup
## Title: From Big Data to secret sauce: power your organisation with PowerBI
## Abstract:
### Big Data is not so much about storing massive amounts of data in a common database. It is also a force of change for the organisation, and it means that we have to consider the collective capabilities of the platform to serve the business: from data source to secret sauce that will help the business to make data-driven decisions to drive the enterprise forward, using familiar tools such as the new Microsoft Power BI tools

In this session, we will look at RHadoop, which is a match made in heaven for data scientists. It is a combination of R, the world's favourite free data analysis tool, and Hadoop. In this session, we will look at an example of using RHadoop to analyse Big Data, from data to result.

We will also look at evangelising your secret sauce throughout the business, using Microsoft’s new Power BI tools in Office 365: Power View, Power Map and Power Query. Come and see how to make Big Data accessible, relevant and perhaps even fun!
#
#### SessionID: 16547
# Advanced Data Visualisation with Reporting Services
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: SPAM (BI)
## Speaker: Jen Stirrup
## Title: Advanced Data Visualisation with Reporting Services
## Abstract:
### As a report creator and designer, it's your role to make the message of the data come alive for data consumers and decision-makers. This requires a balance between conveying the 'truth' of the data across to the target audience, in addition to making the report look interesting that it will draw people's attentions in the first place.

SSRS is one of the most widely-used Business Intelligence products within the Microsoft stack. Come to this session to pick up some tips and tricks for advanced reporting writing, that is also  in accordance with thinking by Data Visualisation gurus such as Stephen Few and Edward Tufte.
This session will cover more advanced and less well-known features of reporting services with Data Viz in mind!
#
#### SessionID: 17166
# Data Driven Branding for SSRS
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: Ministry of funny walks (DEV)
## Speaker: John Martin
## Title: Data Driven Branding for SSRS
## Abstract:
### Ever had marketing send out that email saying that they are re-branding the company with new colours and fonts, normally not a problem until they mention that the 300+ SSRS reports need to be changed too...

This session will show you how to make use of SSRS project templates, and built in data sets, variable, expressions and a bit of modification to the SSRS database to help make these sorts of requests a simple matter of updating some values in a database. As opposed to pulling the reports out of source control before modifying them and trying to get a deployment scheduled.
#
#### SessionID: 17805
# Analysis Services Security - Steel Curtain Cubes
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: SPAM (BI)
## Speaker: Jens Vestergaard
## Title: Analysis Services Security - Steel Curtain Cubes
## Abstract:
### Being able to accomodate the most demanding requirements on security is more important now than ever. This session will take you through a variety of approaches on how to implement basic to complex security on dimensions in SSAS. A quick intro through the GUI will bring us to XMLA and AMO as the weapon of choice. Different concepts on hierarchy security models will also be demonstrated.
#
#### SessionID: 18034
# Come and meet my little friend - Using Hyper-V on Windows 8 Pro
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: ...and now for something completely different
## Speaker: Kevin Chant
## Title: Come and meet my little friend - Using Hyper-V on Windows 8 Pro
## Abstract:
### We've all been there, utilising Virtualisation packages on our previous Windows installations on our desktops or laptops to test new things, in this practical session I'll introduce you to the version of Hyper-V that comes with Windows 8 Professional, and show you how to utilise it to test various SQL Server 2012 scenarios on your machine and some useful tips.
#
#### SessionID: 18113
# SQL anti patterns
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: Ministry of funny walks (DEV)
## Speaker: Kennie Pontoppidan
## Title: SQL anti patterns
## Abstract:
### You can learn SQL in three days but it'll take you 10 years to become good at it. In this session we will have a look at some basic design errors and get a notion of the things that absolutely doesn't work. Antipatterns is a way of naming common design errors in order to make them easier to remember - even if you haven't done them yet.

 The session is relevant for developers and DBAs.
#
#### SessionID: 19032
# Database Development with SQL Server Data Tools
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: Ministry of funny walks (DEV)
## Speaker: Leonard Lobel
## Title: Database Development with SQL Server Data Tools
## Abstract:
### With the release of SQL Server 2012, the new SQL Server Data Tools serves as your primary development environment for building applications on top of SQL Server. SSDT plugs in to Visual Studio with tooling designed specifically for the application developer. With SSDT, developers no long need to constantly switch between VS and SSMS. In this session, Lenni demonstrates how SSDT is used to develop for (and deploy to) on-premise and Windows Azure SQL Database. You will learn how to use code navigation, IntelliSense, and refactoring with your database model, and how to design databases offline and under source control right from VS. Don’t miss out on this demo-centric information-packed session on the new generation of database tools for developers!
#
#### SessionID: 19517
# Advanced Performance Tuning Tips with Ignite
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: Ministry of funny walks (DEV)
## Speaker: Les Reading
## Title: Advanced Performance Tuning Tips with Ignite
## Abstract:
### Are you struggling with performance issues and your current tools are not providing answers? Confio’s flagship product, Ignite, may be your answer. This presentation outlines a method for determining the best approach for tuning SQL statements by utilizing response time analysis. Neil will use real-life case studies to demonstrate the techniques.
#
#### SessionID: 19518
# High Performance and Highly Available SANLess Clustering for MS SQL Server
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: SPAM (BI)
## Speaker: Les Reading
## Title: High Performance and Highly Available SANLess Clustering for MS SQL Server
## Abstract:
### Join SIOS to learn how to eliminate the IO bottlenecks, costs and failure points with traditional SAN-based clustering.   By leveraging the performance of high-speed storage such as that offered by Fusion- io, and by adopting a SANless architecture to achieve higher levels of availability with SIOS – this ‘blueprint’ gives you the best of both worlds – cost effective performance and protection. Join us and you could win a £75 gift card.
#
#### SessionID: 19519
# Automate All The Things! Best Practices for Fast, Painless Database Deployments
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: The Meaning of Life (DBA)
## Speaker: Les Reading
## Title: Automate All The Things! Best Practices for Fast, Painless Database Deployments
## Abstract:
### “In this speed-through session, Emma will give a bird’s eye-view of database deployment best practices, covering where – and how - automation fits into your workflow. We’ll look at how to combine your database and application code changes for maximum effect, what kind of processes to put in place, and some of the tools – like Deployment Manager – that will get you there.”
#
#### SessionID: 19521
# How to build process based applications on top of your SQL Data
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: Just a slither
## Speaker: Les Reading
## Title: How to build process based applications on top of your SQL Data
## Abstract:
### See the live build of a process based business application using your SQL Server data. See how an effective business data layer can speed up your time to delivering custom user forms and process driven business applications.
#
#### SessionID: 19522
# Microsoft training and certification for SQL Server and Cloud solutions
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: ...and now for something completely different
## Speaker: Les Reading
## Title: Microsoft training and certification for SQL Server and Cloud solutions
## Abstract:
### Join Global Knowledge, a leading Microsoft Learning Partner, to hear about the latest Microsoft training and certifications available to you as SQL Server professionals, BI and SQL server developers.
#
#### SessionID: 19523
# Migrating to the Cloud
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: The Meaning of Life (DBA)
## Speaker: Les Reading
## Title: Migrating to the Cloud
## Abstract:
### So your CTO wants you to migrate your mission critical database application to the Azure. What's involved and what are the pitfalls?

In one hour we will take a sample ecommerce application and database, show tools available for migrating schema, data and application components. Then we aim to demo performance and scalability impacts.
#
#### SessionID: 19524
# PDW : Introduction to the Data Movement Service
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: SPAM (BI)
## Speaker: Les Reading
## Title: PDW : Introduction to the Data Movement Service
## Abstract:
### Question: How do you get multiple SQL Servers to act as one monstrously powerful processing scale out database engine?

Answer: Go to California and acquire some kick-ass technology! Introducing the DMS. Learn what it is, how it works and why it holds the key to the future for PDW. All in 30 minutes.

## Abstract:
###         Information: We will discuss the worst data visualisations in the world - ever. Join in the fun and bring along the worst data visualisation you’ve ever seen. Come and see why certain visualisations are bad, and wonder why people ever thought that it was a good idea to display data like that!
#
#### SessionID: 19526
# Idera SQL Diagnostic Manager
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: The Meaning of Life (DBA)
## Speaker: Les Reading
## Title: Idera SQL Diagnostic Manager
## Abstract:
### Come to this session to learn about Idera SQL Diagnostic Manager
#
#### SessionID: 19527
# Introduction to SQL Server 2014 In-Memory OLTP
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: Just a slither
## Speaker: Les Reading
## Title: Introduction to SQL Server 2014 In-Memory OLTP
## Abstract:
### This session will introduce the In Memory OLTP engine that is planned for SQL Server 2014, covering off the implementation approach, migration considerations and tips and tricks in effective use.
#
#### SessionID: 19528
# SQL Server Estate Rationalisation
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: Dead Parrot (SharePoint)
## Speaker: Les Reading
## Title: SQL Server Estate Rationalisation
## Abstract:
### Learn how SoftwareONE help their clients get a grip on database sprawl and poorly or semi-hidden deployments  in order to improve database performance and availability whilst reducing SQL Server licence liability.
#
#### SessionID: 19529
# When to use which installation of SQL Server: On-prem, IaaS in Windows Azure, or Windows Azure SQLDB
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: Just a slither
## Speaker: Mark Broadbent
## Title: When to use which installation of SQL Server: On-prem, IaaS in Windows Azure, or Windows Azure SQLDB
## Abstract:
### Buck will explain the various pivot-points to consider for using SQL Server on-premises, in virtualization, or in the Windows Azure Cloud Service - either as a full installation of SQL Server in IaaS, or in "SQL Azure" (Windows Azure SQL Databases). You'll get technical guidance on which option suits your solution architecture best.
#
#### SessionID: 19530
# The Irish Economic Crisis, Visualized
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: SPAM (BI)
## Speaker: Mark Broadbent
## Title: The Irish Economic Crisis, Visualized
## Abstract:
### In this session we will explore the Irish Economic Crisis as it unfolded, using Microsoft’s latest Visualisation tools including Power BI, Power Query, Power Map, Power View and SharePoint”.   It starts from a very common business perspective, needing to make sense of data, fast, but not knowing what questions to ask, nor how to combine available sources in a way that makes sense.   This session converts the Irish Economic crisis into a story that can be explored in an interactive way, using familiar tools, in a way that people may feel should have been noticed in the run-up to the crisis.
#
#### SessionID: 19675
# Business Intelligence Options for SharePoint 2013
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: Dead Parrot (SharePoint)
## Speaker: Mark Macrae
## Title: Business Intelligence Options for SharePoint 2013
## Abstract:
### This presentation will provide the audience with an overview of the options available to them across the BI toolkit proivided by SharePoint 2013 and Office 2013.  We will break these options down into Personal, Team and Corporate BI and look at the pros and cons of each.  Specifically we will look at PowerView, PowerPivot, Excel Services and PerformancePoint covering a good mix of slides and demonstrations.

#
#### SessionID: 21444
# SQL 2014 Clustered Columnstore - An Introduction
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: ...and now for something completely different
## Speaker: Niko Neugabauer
## Title: SQL 2014 Clustered Columnstore - An Introduction
## Abstract:
### SQL Server 2014 receives a very new  important feature - Clustered Columnstore Indexes. Using a xVelocity compression and a batch processing mode this type of indexes which was introduced in SQL Server 2012 is greatly enhanced by making it a Clustered and making it a default recommend solution for the DataWarehouse solutions. Join to discover the Clustered Columnstore Indexes by understanding on which principles they are built and what should you do get the best out of them. This new feature is targeted at the OLAP installations and it is already available for the PDW (Parallel DataWarehouse) v2.
#
#### SessionID: 21548
# Access Services are cool! Are you kidding? :)
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: ...and now for something completely different
## Speaker: Oliver Engels
## Title: Access Services are cool! Are you kidding? :)
## Abstract:
### No! Access Services in SharePoint 2013 are really cool, if used in the right way and with clear expectations. This session will give you a detailed demo-driven look to the possibilities you have with Access Services, how you integrate it with SSRS, how you can use it as RAD toolset or as an simple but effective MDS approach. A comparison to the version in SharePoint 2010, deployment and change management tips and tricks will round up the session.
#
#### SessionID: 21899
# SharePoint what are you doing at my SQL event
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: Dead Parrot (SharePoint)
## Speaker: Peter Baddeley
## Title: SharePoint what are you doing at my SQL event
## Abstract:
### SQL is fundamental to every deployment of SharePoint, and increasingly many organisations have or are planning some form of SharePoint deployment.  Building on the presentation from last year this session will explain the importance of SharePoint to SQL Professionals and thus why there is a dedicated SharePoint track this year.  The session will be an introduction to some of the key considerations around SQL for SharePoint including different database, sizing, naming and a few common issues encountered.   It will also introduce the SharePoint integration to Reporting Services which has been enhanced in SQL 2012.  Finally it will make the case that you how and why you should get actively in your organisations SharePoint deployment.
#
#### SessionID: 22689
# Natural Born Killers, performance issues to avoid
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: Ministry of funny walks (DEV)
## Speaker: Lord Richard Douglas
## Title: Natural Born Killers, performance issues to avoid
## Abstract:
### You’ll learn simple tricks to write better code, scripts, and tables. Plus, you’ll gain a deeper understanding of common database development and administration mistakes, and how you can avoid them.

Plus, you’ll learn how to take corrective action when:
•The optimizer isn’t using all available processors
•The database engine fails to report all the resources a query has used
•The optimizer uses the wrong plan
•Database tables cause memory issues

#
#### SessionID: 22692
# The Day After Tomorrow: Why you need to baseline
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: Ministry of funny walks (DEV)
## Speaker: Lord Richard Douglas
## Title: The Day After Tomorrow: Why you need to baseline
## Abstract:
### Ensuring peak SQL Server performance isn’t always easy and requires a lot of work on the part of the DBA. To maintain the best-possible performance, you need to make sure you’re monitoring the right things. But how do you know if the figures you’re seeing are good or bad? Baseline comparisons can help, and in this session Richard will show you how to get the most from them. Richard will explain what a baseline is, why and when you need to take one, and how you can create one. You’ll also learn about a number of native Windows and SQL Server tools that will allow you to do just that.
#
#### SessionID: 22827
# Deep Dive into DQS
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: Just a slither
## Speaker: Regis Baccaro
## Title: Deep Dive into DQS
## Abstract:
### Is DQS here to stay or is it the emperor's new clothes ? in this session we will a look at how DQS can empower data cleansing in the enterprise , how we can use it in SSIS and some advanced techniques to solved complex data cleansing problems that'll make you a cleansing and matching hero with concepts such as Term Based Relationships, Domain/Composite Domain Rules, and using Remote Data Services in Windows Azure marketplace. We will also demonstrate how to enhance your DQS KB as you cleanse, enabling a cycle of data quality improvement. If you’ve looked at DQS but aren’t sure how to get the most out of it for your data, come to this session to see how to move beyond the basics
#
#### SessionID: 24296
# Leveraging PowerShell for SharePoint Database Operations
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: Dead Parrot (SharePoint)
## Speaker: Seb Matthews
## Title: Leveraging PowerShell for SharePoint Database Operations
## Abstract:
### PowerShell has become the lifeblood of SharePoint Administrators and it's simplicity, elegance and intuitive nature makes our lives easier, or does it?

Many SharePoint admins suffer from "decisions made by SharePoint" when using both the UI and PowerShell to configure and manage their farms, database operations in particular are often clunky and inefficient due to how SharePoint uses its own stored procedures to manage its databases.

In this session we will look at how SharePoint admins can unleash their DBA-fu via PowerShell to help their SharePoint farm databases run efficiently, optimally and (the big one) FASTER.

If you want to understand how you can utilise PowerShell in SharePoint database scenarios, this session is for you.
#
#### SessionID: 25292
# Getting the most from your SAN - File and Filegroup design patterns
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: The Meaning of Life (DBA)
## Speaker: Stephen Archbold
## Title: Getting the most from your SAN - File and Filegroup design patterns
## Abstract:
### You’ve been given the task of optimising the File and Filegroup layout to get the most from your storage. Not sure where to start, or thinking you could get a more from your storage with a different design?

Are your SAN guys telling you your storage can process 2 GB/s but you're only seeing 200 MB/s?

This session will dive into how to optimise your File and Filegroup layout strategy to get the most from your I/O Subsytem, including a case study where we took a customer's table scans from 500 MB/s to 1.2 GB/s with only a change in filegroup layout.

Topics covered include:
- Layout for OLTP
- Data Warehousing Fast Track Style
- Data Warehousing on a SAN
- Get data into your SSAS cubes faster (ProcessData)
- Hidden options and “go faster” buttons
- How to maximise performance in enterprise edition and master read ahead

#
#### SessionID: 25823
# Automating Database Restores and Verification with PowerShell
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: The Meaning of Life (DBA)
## Speaker: Stuart Moore
## Title: Automating Database Restores and Verification with PowerShell
## Abstract:
### SQL Server makes it simple to automate backups with jobs and maintenance, but doesn't provide a simple method to schedule test restores to prove the backups have worked. Using PowerShell we can write simple scripts that allow us to automate test restores from our SQL backups, and then check that the restored database is valid, consistent and usable.

This session will introduce you to the basics of restoring simple databases with PowerShell scripts, and then extending this to cope with more complex situations including data file relocation, point in time restores and running DBCC checks against the restored database

#
#### SessionID: 26157
# Windowing Functions: THE Reason to Upgrade to 2012
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: ...and now for something completely different
## Speaker: Kevin Boles
## Title: Windowing Functions: THE Reason to Upgrade to 2012
## Abstract:
### For the first time since SQL 7 there is a compelling reason for EVERY SQL Server user to upgrade to the next version and this time around the reason is Windowing Functions.   And these are NOT limited to Enterprise Edition, like so many other really useful and important features!  The range of data processing needs that can be very efficiently and cleanly solved with these tools is stunning. In this demo-packed session we will cover as many features as we can pack into an hour's time, and you can take the demo code back home with you to review at your leisure!
#
#### SessionID: 27047
# Bitmap and Bloom Filter Indexing in SQL Server
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: The Meaning of Life (DBA)
## Speaker: Tony Rogerson
## Title: Bitmap and Bloom Filter Indexing in SQL Server
## Abstract:
### We look at how you can role your own indexing strategies to complement SQL Server's B+Tree; this session will refresh you on how SQL Server Indexes work, bitwise operations. We will then look at how Bloom Filters and Bitmap Indexing can be used to dramatically improve the performance of certain query patterns within SQL Server. Session is based partly on the blog series on Bloom Filters: http://tinyurl.com/bloomfilter
#
#### SessionID: 9172
# So you're getting SharePoint - What's a DBA to do?
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: Dead Parrot (SharePoint)
## Speaker: Al Eardley
## Title: So you're getting SharePoint - What's a DBA to do?
## Abstract:
### Learn about the databases that SharePoint creates: how to plan for the databases; what sizes to expect; what type of IO profile they have; how fast they will grow.

Understand the SQL Server pre-requisites that need to be in place for a successful implementation of SharePoint.

Learn how to manage the SharePoint databases: Maintenance, Disaster Recovery  High Availability
#
#### SessionID: 9213
# MDX 101 - getting started with MDX
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: SPAM (BI)
## Speaker: Alex Whittles
## Title: MDX 101 - getting started with MDX
## Abstract:
### Getting Multi-dimensional with Queries!
In this session we'll look at the structure and basics of MDX, the Multi-Dimensional query eXpression language for querying Analysis Services OLAP cubes. We'll start at the beginning, so you need no previous MDX experience.
#
#### SessionID: 9289
# Hadoop for the Microsoft Guy
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: SPAM (BI)
## Speaker: Allan Mitchell
## Title: Hadoop for the Microsoft Guy
## Abstract:
### Microsoft have released a distribution of Hadoop targeted at making big data accessible to everyone.  Hadoop is different to SQL Server.  Not necessarily better, just different.  It is a tool for a job.  if you have only ever worked with an RDBMS such as SQL Server then Hadoop is going to play with your mind a little and you are going to need to rethink a few things.
This session is going to take Hadoop and break it apart.  I will also look at some of the tooling Hive and Pig.
Keep an open mind and let me show you that Hadoop has lots to offer.

#
#### SessionID: 9692
# Rapid Data Integration using SharePoint Business Connectivity Services
#### [Back to calendar](#nr-228)
Event Date: 28-09-2013 - Session time: 00:00:00 - Track: Dead Parrot (SharePoint)
## Speaker: Anthony Obi
## Title: Rapid Data Integration using SharePoint Business Connectivity Services
## Abstract:
### Anthony Obi – Performing CRUD operations against SQL data sources using SharePoint Business Connectivity Services.Many organizations see SharePoint as yet another silo of information that can only access data stored in its Lists and Libraries. In this session, Anthony will review working with external SQL data from within SharePoint using Business Connectivity Services (BCS). He will cover the basic fundamentals required to perform ‘CRUD’ (Create, Read, Update and Delete) operations against external SQL Databases, whilst also exploring a variety of SharePoint features available through a series of real time demonstrations. Finally, Anthony will attempt to highlight key points/comparisons to look out for when attempting to use in real world scenarios.

repository: andrekamman/sqlsathistory

repo_name: andrekamman/sqlsathistory


text:
---
title: Opening Windows again (part 1)
date: '2017-07-11 11:13:35'
modified: '2017-07-11 14:11:42'
tags:
  - web
published: true
---
# Opening Windows again (part 1)

I've had the good fortune to be given a trial Microsoft Surface machine from the folks at Microsoft, and I agreed (and wanted) to share my particular experience with my return/toe-in to Windows.

This first instalment will focus on the hardware and tactile aspects of the device (since mostly I'm still configuring my development environment on the machine).

With everything I talk about here, please keep in mind that I'm comparing to my day-to-day usage of an [Apple MacBook Pro 2015](https://www.apple.com/macbook-pro/specs-2015/) spec'ed out to the max (most RAM I could buy, etc).

![Surface book close ups](/images/windows/surface-close-ups.jpg)

## Aesthetics 💅

Overall, the feel of the Surface Book is really quite nice (again, I'm comparing directly to my daily use of a Mac). It's beautifully designed and has already drawn a couple of "wow, that's nice" from friends and family just by seeing it on the worktop.

The material is really nice too. It's like either a very lightweight metal or a sturdy plastic. It seems like it might be cheap material looking at it closely, but it stands up well to touch and press. One particular thing I liked is that since this material *is* a matte plastic, it doesn't get oily in the way the metal surface of my MBP sometimes does on the trackpad and wrist support. A bit weird I admit, but maybe someone else has experienced this! :)

## Weight and balance ⚖

The weight of the Surface Book is decent. I think it's _slightly_ heavier than the MBP that I have (but I'm thinking perhaps 0.5lbs?).

I watched a video comparing the screen-lifting technique compared to a Mac, and it hadn't crossed my mind at all but the screen on the Surface lifts perfectly well, leaving the keyboard seated. i.e. I wouldn't want to lift the screen only for the keyboard to follow up and me have to prise the screen and keys apart!

Seated on a work surface, the laptop is fine. Placed on my lap is a slightly different affair. Since most of the weight is in the screen (because it's a tablet, and I'll come back to this), I can't have the laptop on my _lap_ without my hands keeping it from falling off.

## Tablet too 🔪

The reason the weight is mostly in the screen is because, as per other Surface devices, it's also a tablet given the press of a key (or software button). It's certainly heavier than most tablets I've used, but equally it's larger and packs a lot more punch than any other tablet I've used too.

The slight downside is that there's two batteries, one in the screen and one in the base/keyboard, and the charging unit goes into the base only. This means if the screen is low on power, a) you can't detach it, and b) you _have_ to charge it via the base/keyboard unit.

I'm not sure I would travel without the keyboard base, but this obviously means that I can't.

## Power unit 🔌

Normally there isn't much to say on the matter. It's a standard [fig 8 adapter](https://en.m.wikipedia.org/wiki/IEC_60320#C7.2FC8_coupler) (apparently that's what it's called - I used to call them "the tape deck power things"). What _is_ neat is that the powerblock also includes an integrated USB port, giving me another power port if I want it.

## Keyboard ⌨

The keyboard, and keys are soft to touch and a pleasure to press. The keys are a light plastic, matte like texture, and don't come off cheap (which would be entirely possible with this kind of material).

Going from the Mac to the Windows layout of keys there are a number of noticeable differences, most of which I can adjust fairly easily, i.e. swapping of the @ and the ", backticks and slash positions and copy/paste being in a slightly different location compared to the Mac.

The area I'm finding hardest are the two extremities of the keyboard. Firstly, my Mac has a single backspace key, and shift+backspace turns it into delete. It took me about 2 weeks (of irregular use) to realise that the Windows keyboard has _both_. Moreover, I kept finding myself hitting fn+backspace which would reduce the screen brightness, and then no idea how to use the keyboard to bring the brightness back up! Someone eventually put me onto Scott Hansleman's [blog post on shortcuts](https://www.hanselman.com/blog/CollectingWindows10AnniversaryEditionKeyboardShortcuts.aspx).

However, I've been using the Surface in anger for the last week and I've come to realise the hardest part for me to master is the bottom left where a number of control keys are. On the Surface, the keys are: ctrl, fn, meta, alt. On a Mac, the keys are: fn, ctrl, alt, meta. Specifically those ctrl and alt keys which we use a lot are in completely different positions which is why I keep randomly hitting the fn key and the meta (windows start) key - both of which are typically useless in the cases I'm working in.

Finally, one area that's still entirely a mystery to me, is how I invoke special characters. Specifically, I use emdashes and ellipsis quite a bit both in my blog but also on twitter. On a Mac, I use alt+. to get an ellipsis. On Windows...I've no idea. I've literally used google to find an emdash and pasted into twitter! I don't know where this kind of stuff is documented either.

## (Touch) Screen 👈

I love the touchscreen. I've got a Google Pixel (laptop) and although I initially thought the touchscreen would be a gimmick, it's not at all and becomes quickly a natural gesture to reach out to the screen to do a thing.

The screen on the Surface is lovely and crisp to look at. I'm assuming it's retina (or equivalent), and the touch is responsive whenever I've used it and _doesn't_ show any signs of pressure when touching the screen (though it's possibly my memory is harking back to the early 2000s when touch screens were terrible!).

## Stylus...the pen 🎨

I didn't realise the Surface came with the stylus, but I'm so glad it does. It's _really_ fun to use. From the first day I really had a decent play with the Surface, the kids had a turn with the stylus and the screen and it seemed really natural to draw with the pen (and fingers).

![My daughter drawing with the surface](/images/windows/seren-touch.jpg)

I've always been wary of extra fingers or hands causing interference, but that's not an issue at all. Combined with touch, the screen really comes to live and is amazingly simple to interact with.

For the first few weeks though, I figured the pen would magnetised to the back of the screen, and rather loosely. It seemed like a daft place too, because when I went to reach for it behind the screen it would be totally out of the way. Of course, in the last few days, I _plonked_ the pen next to the laptop, and it just _jumped_ to its actual position on the left of the screen, and much more securely.

I think it's just a little weird that there was no(?!) documentation (or I completely missed it unboxing the Surface). That said, it's hardly a deal breaker!

## Trackpad 😠

This is where my experience has been absolutely awful. I will add though, I _think_ that it might just be me, as I've heard from peers that the trackpad is overly sensitive for some people.

For me however, the trackpad's click works about 20% of the time.  Which only adds to the problem, because when I'm pushing harder on the trackpad, it's less accurate and sometimes just moves the pointer right before the click actually fires, causing some other thing to be clicked.

This issue is also why I quite often use my finger to touch or use the stylus to get some interaction working. I suspect a separate mouse would work around the issue, but for now it's extremely frustrating.

Again, I believe this might be limited to the device I have, but it's made me wary of buying one personally (as I expect to return this device to Microsoft at some point) without first giving the trackpad (and the keyboard) and damn good test. Slightly related, the 4 key seems to be 50% responsive too, important as I type `!$` into BASH a lot!

## Overall 💪🚀

A really nice bit of kit. Definitely strong in helping me feel confident that there's a life after Mac (which I'm so desperately seeking). I was asked why not look at a Linux machine recently via Twitter, and my response is simple: Apple's hardware aesthetic experience is top notch, and I'm used to that and don't want a step down. The macOS I couldn't care for, so I want to move to a device that is a pleasure to use. So far, the Surface Book is doing a great job to compete for that title.

(The next Windows posts will be on the software side, ranging from regular apps to my development workflow).

11 July 2017: mistakenly called the Surface Book a Pro.


text:
# Employee-Tracker

## Description

Employee tracker is a CLI application for managing a company's employees using node, inquirer, and MySQL.

## Key Learning:

1. Async Javascript.
2. MySQL
3. Node.js
4. NPM packages console.table
5. Usage of Github (uploading and publishing on github).

## Table of Contents

- [Installation](#Installation)
- [Usage](#Usage)
- [License](#License)
- [Contributors](#Contributors)
- [Tests](#Tests)
- [Technologies](#Technologies)
- [Questions](#Questions)

## Installation

- Install MySQL on your machine.
- Clone project into a local directory and cd into the project directory.
- On console run npm install. It will install all project dependencies.
- In the projects root directory, you will need to create a file named ".env", to hold your MySQL password safely.
- Run the command node index.js and interact with database.

## Usage

- Homepage Screenshot

  ![CLI](./images/clisnapshot.jpg)

- Mockup

  [Watch Video](https://youtu.be/Zc6SIAYvGbo)

## License

- The application is covered under the license MIT. For more Info please visit [License Info](https://opensource.org/licenses/MIT)

## Contributors

- None

## Tests

- None

## Technologies

- Node.js
- inqurier
- MySQL

## Questions

If you have any questions about project you can either contact me or visit my github profile.

Link to my Github: [Github](https://github.com/gunjanb)

Email address :[gunjanbhargava2021<EMAIL_ADDRESS>

repository: gunjanb/Employee-Tracker

repo_name: gunjanb/Employee-Tracker


text:
# Beat Saber Calculator
Calculates the number of points needed to achieve a certain rank in Beat Saber game (http://beatsaber.com/)

Check out at https://bscalc.motzel.dev

repository: motzel/beatsaber-calculator

repo_name: motzel/beatsaber-calculator


text:
# Minority Groups in Congress
### Created by Rita Bennett-Chew

An app built to practice and learn Vue and D3. In addition, this site was created to visualize trends of politicians in minority groups serving in Congress. See the [live site](https://minority-groups-in-congress.herokuapp.com/timeline) for more information.

## Tools Used
- Vue, Vue CLI
- D3
- Bootstrap, Bootstrap-Vue
- Heroku
- Data from [history.house.gov](https://history.house.gov/)

## Completed Features
- Timeline which visually shows the number of people serving in each Congress session who belong to the selected minority group. (A 'minority group' here is definied as a demographic group which has historically made up a minority of the total politicians in Congress)
- The ability to optionally show Congress members in each session by political party (Democrat or Republican or Other)
- A sidebar with extra information about the project
- Responsive design

## TODO Features
- Addition of events to the left of the timeline axis. Events would be relevant to each minority group. I'll start with Amendments passed and Major Acts of Congress (again, data from [history.house.gov](https://history.house.gov/)), and can expand from there
- Tooltips with data on each Congress member to appear upon hover of each dot

## To Serve Locally
1. Fork and clone the [repo](https://github.com/ritabc/congress-groups)
1. run `npm install` to install dependencies
1. To launch: `npm run serve`
1. To run unit tests: `npm run test:unit`
1. To compile and minify for production: `npm run build`

Licensed under the MIT license.

repository: ritabc/congress-groups

repo_name: ritabc/congress-groups


text:
# What is Memoization?

And why this programming paradigm shouldn’t make you cringe.

---

### What is Memoization?

#### And why this programming paradigm shouldn’t make you cringe.

### The following animated gifs were taken from:

#### Source

Dead Code Rising

The last couple of weeks I've been using a lot of hours playing around with GatsbyJS, and it's been a blast! Gatsby is…www.deadcoderising.com

**Memoization** is a design paradigm used to reduce the overall number of
calculations that can occur in algorithms that use recursive algorithms.

Recall that recursion solves a large problem by dividing it into smaller
sub-problems that are more manageable.

Memoization will store the results of the sub-problems in some other data structure, meaning that you avoid duplicate calculations and only “solve” each subproblem once.

This approach is near synonymous with another computer science term you may have heard before — caching. However, caching as a practice is not achieved exclusively by memoizing. Think of a cache as a little bucket where we will keep important information we don’t want to forget in the near future but that isn’t vitally important or part of the long-term makeup of our application. It’s less important than the things we need to store in memory but more important than a variable we can discard as soon as we use it once.

There are two features that comprise memoization:

- The function is recursive.
- The additional data structure used is typically an object (we refer to this as
  the memo).

This is a trade-off between the time it takes to run an algorithm (without
memoization) and the memory used to run the algorithm (with memoization).

Usually, memoization is a good trade-off when dealing with large data or
calculations.

You cannot always apply this technique to recursive problems. The problem must have an “overlapping subproblem structure” for memoization to be effective.

Generally speaking, computer memory is cheap and human time is incalculably valuable so we may opt for this approach even when the largest gains on paper can be made from converting RAM at the expense of execution speed.

Here’s an example of a problem that has such a structure:

> Using pennies, nickels, dimes, and quarters, how many combinations
> of coins are there that total 27 cents?

Along the way to calculating the possible coin combination of 27
cents, you should also calculate the smallest coin combination of 25 cents as well as 21 cents and any smaller total that comprises a fraction of the total combination of 27 (so long as there is a one-cent piece; if there are only nickels and up, the problem deviates from this approach on a technicality but in essence, it is still calculated in the same manner, that is to say as a component of that bigger problem).

Remember, a computer is stupid and must check every possibility exhaustively to ensure that no possible combination is missed (in reality, I may be oversimplifying the truth of the matter but for now, please bear with me).

This is the essence of a redundant subcomponent of the overall problem.

### Memoizing factorial

From this plain `factorial` above, it is clear that every time you call
`factorial(6)` you should get the same result of `720` each time. The code is
somewhat inefficient because you must go down the full recursive stack for each top-level call to `factorial(6)`.

If we can store the result of `factorial(6)` the first time you calculate it, then on subsequent calls to `factorial(6)` you simply fetch the stored result in constant time.

The `memo` object above will map an argument of `factorial` to its return
value. That is, the keys will be arguments and their values will be the
corresponding results returned. By using the memo, you are able to avoid
duplicate recursive calls!

By the time your first call to `factorial(6) `returns, you will not have just the argument `6` stored in the memo. Rather, y**ou will have _all_ arguments 2 to 6 stored in the memo.**

Perhaps you’re not convinced because:

- You didn’t improve the speed of the algorithm by an order of Big-O (it is
  still O(n)).
- The code uses some global variable, so it’s kind of ugly.

### Memoizing the Fibonacci generator

Here’s a _naive_ implementation of a function that calculates the Fibonacci
number for a given input.

    function fib(n) {
      if (n === 1 || n === 2) return 1;
      return fib(n - 1) + fib(n - 2);
    }

    fib(6);     // => 8

The time complexity of this function is not super intuitive to describe because
the code branches twice recursively. Fret not! You’ll find it useful to
visualize the calls needed to do this with a tree. When reasoning about the time complexity for recursive functions, draw a tree that helps you see the calls. Every node of the tree represents a call of the recursion:

-   *n *, the height of this tree will be `n`. You derive this by following
    the path going straight down the left side of the tree.
-   each internal node leads to two more nodes. Overall, this means that the tree will have roughly 2n nodes.
-   which is the same as saying that the `fib `function has an exponential time complexity of 2n.
-   That is very slow!

See for yourself, try running `fib(50)` - you'll be waiting for quite a lot longer than you’ve gotten used to waiting for a program to run in the last decade.

The green regions highlighted above are repetitive.

As the `n` grows bigger, the number of duplicate sub-trees grows exponentially.

Luckily you can fix this using memoization by using a similar object strategy.

You can use some JavaScript default arguments \``memo={}`*\`*to clean things up:

You can see the marked nodes (function calls) that access the memo in green.
It’s easy to see that this version of the Fibonacci generator will do far fewer
computations as `n` grows larger! In fact, this memoization has brought the time complexity down to linear `O(n)` time because the tree only branches on the left side. This is an enormous gain if you recall the complexity of class hierarchy.

### The memoization formula

Now that you understand memoization, when should you apply it? Memoization is useful when attacking recursive problems that have many overlapping sub-problems.

You’ll find it most useful to draw out the visual tree first. If you notice duplicate sub-trees, time to memoize. Here are the hard and fast
rules you can use to memoize a slow algorithm:

1.  Write the unoptimized, brute force recursion and make sure it works.
2.  Add the memo object as an additional argument to the function. The keys will
    represent unique arguments to the function, and their values will represent the results for those arguments.
3.  Add a base case condition to the function that returns the stored value if
    the function’s argument is in the memo.
4.  Before you return the result of the recursive case, store it in the memo as a
    value and make the function’s argument its key.

Here’s the solution to the aforementioned coin problem:

_More content at_ plainenglish.io

### Discover More:

Web-Dev-Hub

Memoization, Tabulation, and Sorting Algorithms by Example Why is looking at runtime not a reliable method of…bgoonz-blog.netlify.app

By Bryan Guner on [June 4, 2021](https://medium.com/p/86685d811182).

Canonical link

Exported from [Medium](https://medium.com) on July 4, 2021.

gha_license_id: MIT


text:
# [Unmock](https://www.unmock.io/) (Python SDK)
[![CircleCI](https://circleci.com/gh/unmock/unmock-python.svg?style=shield)](https://circleci.com/gh/unmock/unmock-python)
[![codecov](https://codecov.io/gh/unmock/unmock-python/branch/dev/graph/badge.svg)](https://codecov.io/gh/unmock/unmock-python)
[![PyPI version](https://badge.fury.io/py/unmock.svg)](https://badge.fury.io/py/unmock)

Public API mocking for Python.

Unmock can be used to test modules that perform requests to third-party
APIs like Hubspot, SendGrid, Behance, and hundreds of other public APIs.

Unmock can also be used to mock these APIs in a development environment,
i.e. an express server on a local machine or in a staging environment.

The Unmock Python package offers intuitive, hassle-free SDK to the
Unmock service with minimal setup steps.

The ultimate goal of unmock is to provide a semantically and
functionally adequate mock of the internet.

Unmock also provides access via other languages, all with similar
interface. We have [unmock-js](https://github.com/unmock/unmock-js)
already publicly available, and we are working on .Net, PHP and Java.
We're open to more requests - just [let us know](mailto:contact@unmock.io)!

**Table of Contents**

<!-- toc -->

- [Unmock](#unmock)
  - [How does it work?](#how-does-it-work)
  - [Install](#install)
  - [Usage](#usage)
    - [Tests](#tests)
    - [Development](#development)
    - [unmock.io](#unmockio)
    - [Scoping](#scoping)
    - [Saving mocks](#saving-mocks)
    - [Ignoring aspects of a mock](#ignoring-aspects-of-a-mock)
    - [Adding a signature](#adding-a-signature)
    - [Whitelisting API](#whitelisting-api)
    - [unmock.io tokens](#unmockio-tokens)
  - [Contributing](#contributing)
  - [License](#license)

<!-- tocstop -->

## How does it work?

Unmock works by overriding Python's low-level `HTTPConnection`'s and
`HTTPRequest`'s functions, thereby capturing calls
made by popular packages such as `requests` and `urllib3`.

Unmock works out of the box for most APIs that it mocks and does not
require any additional configuration. For APIs that it does not mock
yet, or to tweak return values from the unmock service, you can consult
the URLs printed to the command line by unmock.

We intend to offer Python2.7 support quite soon, along with other common
libraries such as `aiohttp`, `pycurl`, etc.

## Install

```sh
$ pip install unmock
```

## Usage

### Tests

In your unit tests, you can invoke unmock in several ways:

1. If you're using pytest for your tests, you can either use the unmock
fixture (you don't even need to import unmock!) -

```python
import pytest
import requests

def test_behance(unmock_local):
    response = requests.get("https://www.behance.net/v2/projects/5456?api_key=u_n_m_o_c_k_200")
    assert response.json().get("project").get("id") == 5456
```

... or you may want to use unmock for all your tests, in which case you
can simply use the `--unmock` flag for pytest:
```bash
pytest tests --unmock
```

2. You can control use unmock in a scoped manner using context managers:
```
# do stuff
with unmock.patch():
    response = requests.get("https://www.example.com/")
# do stuff with mocked response
real_response = requests.get("https://www.example.com/")  # won't be mocked

# You can also access the returned object to modify certain runtime behaviour:
with unmock.patch() as opts:
    # can modify certain behaviour aspects via `opts` object now too
    response = requests.get("https://www.example.com/")
```

3. You can have fine grained control over unmock using the `init` and
`reset` methods, and modify the `UnmockOptions` object during runtime:
```python
import unmock

# do stuff
opts = unmock.init()
res1 = requests.get("https://www.example.com")  # will be mocked
opts.save = True
res2 = requests.get("https://www.example.com")  # will be mocked and response will be saved
unmock.reset()
res3 = requests.get("https://www.example.com")  # will not be mocked
```

Unmock will then either serve JIT semantically functionally correct
mocks from its database or an empty JSON object for unmocked APIs that
can be filled in by the user. The address of these editable objects is
printed to the command line during tests.

### Development

After you create your flask, django, or own server, call

```python
unmock_options = unmock.init()
unmock_options.ignore("story")

# equivalent to calling:
unmock.init(ignore="story")
```

This has the same effect as activating unmock in your tests.
It will intercept HTTP traffic and serve semantically and functionally
adequate mocks of the APIs in the unmock catalogue.
The main difference is the result of `ignore("story")` passed to unmock
options, which tells the service to ignore the order of mocked requests.
Always use this option when the order of mocked data does not matter,
i.e. when you are in sandbox or development mode.
For users of the [unmock.io](https://www.unmock.io) service, this will
help unmock better organize your mocks in its web dashboard.

### unmock.io

The URLs printed to the command line are hosted by unmock.io. You can
consult the documentation about that service
[here](https://www.unmock.io/docs).

### Scoping
As a handy shortcut to initializing and reseting the capturing of API
calls, we also offer the use of context manager via `unmock.patch()`.
`patch` accepts as parameters anything that `init` accepts.

### Saving mocks

All mocks can be saved to a folder called `.unmock` in your user's home
directory by adding a `save` field to the unmock options object like so:

```python
unmock_options = unmock.init(save=True)
```
You can also specify a specific location to save the directory:
```python
unmock_options = unmock.init(save=True, path=".")  # Saves in current path
```
Unmock refers to every mock by a unique hash. Individual mocks or groups
of mocks can be saved by setting save to either a single hash or an
array of hashes like so:

```python
unmock_options = unmock.init(save=["ahash", "anotherhash", "yetanotherhash"])
```

### Ignoring aspects of a mock

Sometimes, you would like for two mocks of slightly API calls to be
treated as equivalent by unmock. For example, you may want all `GET`
calls to the same path with different headers to be served the same
mock. To do this, use the `ignore` field of the unmock options object.
You can do this while initializing unmock or afterwards (as shown before
with ignoring `"story"`):

```python
# Option A:
unmock_options = unmock.init()
unmock_options.ignore("headers", "story")
# Option B:
unmock.init(ignore=["headers", "story"])
```

The following fields may be ignored:

* `headers`: the headers of the request
* `hostname`: the hostname of the request
* `method`: the method of the request (ie GET, POST, PUT, DELETE).
Note that this is *case insensitive*!
* `path`: the path of the request
* `story`: the story of the request, meaning its order in a series of requests

Ignore evaluates regular expressions, so you can also pass
`"headers|path"` instead of `["headers", "path"]`. Furthermore, to
ignore nested headers, pass a dictionary such as
`{"headers": "Authorization" }`, or to match against the value of a
header, `{"headers": { Authorization: "Bearer *" }}`. When using the
ignore _method_ on the `UnmockOptions` object (returned from a call to `init`),
you may pass either a list (`*args`) or a dictionary (`**kwargs`).

### Adding a signature

Sometimes, it is useful to sign a mock with a unique signature. This is
useful, for example, when AB testing code that should serve two
different mocks for the same endpoint in otherwise similar conditions.
To do this, use the `signature` field of the unmock options object:

```python
unmock_options = unmock.init()
unmock_options.signature = "signature-for-this-particular-test"
# Equivalent to
unmock.init(signature="signature-for-this-particular-test")
```

### Whitelisting API

If you do not want a particular API to be mocked, whitelist it.

```python
unmock_options = unmock.init()
unmock_options.whitelist = ["api.hubspot.com", "api.typeform.com"]
# Equivalent to:
unmock.init(whitelist=["api.hubspot.com", "api.typeform.com"])
```

### unmock.io tokens

If you are subscribed to the [unmock.io](https://www.unmock.io) service,
you can pass your unmock token directly to the unmock object.

```
unmock.init(token="my-token")
```

At a certain point this becomes a bit tedious, (even if very readable),
at which point you will want to create a credentials file. See
[unmock.io/docs](https://www.unmock.io/docs) for more information on
credential files.
Behind the scenes, we automatically create a credentials file for you,
for caching purposes. With this, subsequent calls to `unmock.init()`
will read the token from the credential files.

## Contributing

Thanks for wanting to contribute! We will soon have a contributing page
detaling how to contribute. Meanwhile, star this repository, open issues
and ask for more features and support!

Please note that this project is released with a
[Contributor Code of Conduct](CODE_OF_CONDUCT.md). By participating in
this project you agree to abide by its terms.

## License

[MIT](LICENSE)

Copyright (c) 2018–2019 [Meeshkan](http://meeshkan.com) and other
[contributors](https://github.com/unmock/unmock/graphs/contributors).

repository: meeshkan/unmock-python

repo_name: meeshkan/unmock-python