text:
# Contributing an HTML example

HTML interactive examples are presented in two sections, side by side.

The left-hand side contains, minimally, a code editor containing some HTML. It will usually also contain some CSS: in this case the CSS is presented in its own editor, accessible via tabs at the top of the left-hand side.

The right-hand side contains the rendered HTML, styled according to any CSS that was provided.

To write an interactive HTML example, you need to write the HTML and, if you need it, the CSS. You then need to update some metadata to tell the site builder about the new example.

In this section we'll walk through creating an example for the [`<td>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td) element.

## Example structure

HTML examples are all stored under `./live-examples/html-examples`. Under there, they are grouped into directories according to the categorization in the [HTML elements reference](https://developer.mozilla.org/en-US/docs/Web/HTML/Element):

- content-sectioning
- demarcating-edits
- document-metadata
- embedded-content
- form-attributes
- ...and so on

Each of these directories contains:

- a file called `meta.json`, which is a kind of manifest for all the examples in that directory.
- an HTML file for each example, whose name is the name of the element, for example `td.html`.
- a directory called `css` that contains CSS files for each example, whose name is the name of the element, for example `td.css`.

## Example walkthrough

In this section we'll go through the basic steps needed to add an HTML interactive example. We'll use the `<td>` element as an example.

### Writing the example

The `<td>` element is in the ["Table content"](https://developer.mozilla.org/en-US/docs/Web/HTML/Element#Table_content) category. So let's navigate to `./live-examples/html-examples/table-content`. If `table-content` doesn't exist, you'll need to create it first.

```bash
mkdir live-examples/html-examples/table-content
cd live-examples/html-examples/table-content
```

Create a new file whose name is the name of the element or attribute you are demonstrating, and give it a `.html` suffix:

```bash
touch td.html
```

In this file we'll add the HTML fragment that will be displayed in the HTML editor. The fragment will need to include all the extra HTML needed to render the example, and should use good practices as far as possible. For example, in this case we'll include a complete `<table>` element:

```html
<table>
  <thead>
    <tr>
      <th colspan="3">Table heading</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td rowspan="2">2-row cell</td>
      <td>A cell value</td>
      <td>Another cell</td>
    </tr>
    <tr>
      <td colspan="2">2-column cell</td>
    </tr>
  </tbody>
</table>
```

## Styling the example

Often the example will want some CSS. In this case, the table will be much easier to read if it's given some basic styling.
To add CSS, create a new file under `./live-examples/html-examples/table-content/css`. Give it the same name as the HTML file, but with a `.css` prefix.

```bash
cd live-examples/html-examples/table-content/css
touch td.css
```

(Note that you don't have to create a new file. If an existing CSS file already contains the styles you need, you can just use that.)

For the `<td>` example, we could do something like this:

```css
table,
td {
  border: 1px solid #333;
  padding: 0.5rem;
}

thead {
  background-color: #333;
  color: #fff;
}
```

For all additions, make sure you follow the [MDN code style guide](https://developer.mozilla.org/en-US/docs/MDN/Writing_guidelines/Writing_style_guide/Code_style_guide).

## Updating the metadata

In `./live-examples/html-examples/table-content/`, you'll need a file called `meta.json`. This tells the site builder about the examples inside the directory. If it doesn't exist, you'll need to create it. If it does exist, open it to view the file contents.

It contains a JSON object whose most interesting property is an object called `pages`. Each property of `pages` is a page we want the site builder to build:

```json
{
  "pages": {
    "table": {
      "exampleCode": "./live-examples/html-examples/table-content/table.html",
      "cssExampleSrc": "./live-examples/html-examples/table-content/css/table.css",
      "fileName": "table.html",
      "title": "HTML Demo: <table>",
      "type": "tabbed"
    }
  }
}
```

Add a property under `pages` describing your example. The example for `<td>` could look like this:

```json
"td": {
    "exampleCode": "./live-examples/html-examples/table-content/td.html",
    "cssExampleSrc": "./live-examples/html-examples/table-content/css/td.css",
    "fileName": "td.html",
    "title": "HTML Demo: <td>",
    "type": "tabbed"
}
```

- `"exampleCode"` is the path to the file containing the example HTML.
- `"cssExampleSrc"` is the path to the file containing the CSS for the example.
- `"fileName"` is the filename of the final (output) page that will contain this HTML example.
- `"title"` is the title to show in the example. For HTML element examples it should be `"HTML Demo: <{name}>"` where `{name}` is the name of the element.
- `"type"` describes the type of example to create. All HTML examples should put "tabbed" here.

Note that entries in `pages` are in alphabetical order, please preserve that when adding your page.

Once you've finished writing the example, see the [Testing](../CONTRIBUTING.md#testing) section for the next step.

The final example should look something like this:

![Code editor example combining HTML and CSS amd demonstrating the result](../media/html-example-screenshot.png)

## Guidelines

This section describes some guidelines to follow when writing HTML examples. It's split into two sections:

- **Formal guidelines** cover formal aspects of the example, such as how long it should be.
- **Content guidelines** cover the actual content of the example: that is, what it should include or exclude.

Sometimes formal and content guidelines are at odds. For example, sometimes writing a useful example means making it longer than the formal guidelines ask. Usually, when this happens, we should prioritize content guidelines.

### Formal guidelines

In general: try out your example using `npm start` and see what it looks like with a browser window width of 1000px.

- Can the user see the whole example source without having to scroll?

- Is the example source readable?

- Does the source look messed up because of how it's wrapped?

- Does the output fit properly in the output pane?

- Does the layout break at narrower widths?

In particular, see the following guidelines for the HTML source and the output:

#### HTML source formal guidelines

- **Keep the line count short**: a maximum of 14 lines if possible. The shorter editor will show 14 lines, so if the example is more than that, the user will need to scroll to see the whole thing, and this isn't ideal. It's not always possible to keep to this: if you have to, you can increase the editor height to 18 or 30 lines (see [Changing the editor height](#changing-the-editor-height)), but don't do this unless you have to.

- **Keep line length short**: as a rule of thumb, try to keep lines under 64 characters.

- **Use 4-space indent**

- **Use line breaks for readability**: keep in mind that at different browser widths longer lines will wrap and this can hurt readability. By including line breaks you can make the example more readable at different browser widths. For example, consider an example like this:

```html
<img
  class="fit-picture"
  src="/media/examples/Grapefruit_Slice--332x332.jpg"
  alt="Grapefruit slice atop a pile of other slices"
/>
```

With a browser window width of 1000 pixels, this will wrap like this:

```html
<img
  class="fit-picture"
  src="/media/examples
/Grapefruit_Slice--332x332.jpg"
  alt="Grapefruit slice atop a pile
of other slices"
/>
```

If we add line breaks after each attribute, the example is much more readable:

```html
<img
  class="fit-picture"
  src="/media/examples/Grapefruit_Slice--332x332.jpg"
  alt="Grapefruit slice atop a pile of other slices"
/>
```

#### HTML output formal guidelines

By default (with a browser window width of at least 1008 pixels) the editor for the HTML examples is 590 pixels high by 349 pixels wide. You should check if the example looks good at these dimensions. If you make the viewport width narrower, the output panel is collapsed below the editor. You should check if the example still looks good when it's displayed in a vertical layout for these smaller dimensions.

### Content guidelines

The basic guideline for the example's content is: as simple as possible while still being illustrative and demonstrating good practice.

#### Illustrate the main concept

Try to make the example engaging, good-looking, and interesting, and to show some important attributes.

However, illustrate the main concept of the item, not every possible usage of it. Remember: the example is not the documentation. It's appearing in a page of documentation that has the space to go into every detail about all the different options that can be used with the item. You don't need to include them all in the example.

For example, here's an example for the `<button>` element:

```html
<p><button>Default button</button></p>

<p><button disabled>Disabled button</button></p>

<p>
  <button name="submit" type="submit" value="submit-true">Form submit button</button>
</p>

<p>
  <button accesskey="a">Button with <u>A</u>ccesskey</button>
</p>

<p><button class="styled">Fancy styled button</button></p>
```

This includes 5 different button elements. It's too long. The example should include a single element with some common attributes.

Try out your example with `npm start`. Can you immediately see the point of the example, or is the element buried in a wall of source?

#### Use good practices

Although the example should be simple it should illustrate good practice. For example, it should follow accessibility good practices, use good semantics, and not include anything known to be a bad practice.

For example, `<input>` element examples should include `<label>` elements:

```html
<label for="pet-select">Choose a pet:</label>

<select id="pet-select">
  <option value="">--Please choose an option--</option>
  <option value="dog">Dog</option>
  <option value="cat">Cat</option>
  <option value="hamster">Hamster</option>
  <option value="parrot">Parrot</option>
  <option value="spider">Spider</option>
  <option value="goldfish">Goldfish</option>
</select>
```

This also applies to semantics: for example, the example for `<aside>` should not just be:

```html
<aside>
  <p>I'm an aside!.</p>
</aside>
```

This doesn't tell the reader anything about how they should use the element. The element should be shown in a context that shows its semantic purpose. For example, one use for `<aside>` is for a pull quote, so we might try this:

```html
<p>
  When cut in half we see they are filled with a pure white substance, like the inside of a young puff-ball. We learn
  from Professor Peck that it is called Calostoma cinnabarinus.
</p>

<aside>
  <p>
    We are not responsible for the names given to plants, but cannot help wishing that some might be changed or
    shortened.
  </p>
</aside>

<p>
  Calostoma is a Greek word meaning beautiful mouth, and cinnabarinus is taken from cinnabaris, which means
  dragon’s-blood. We are not responsible for the names given to plants, but cannot help wishing that some might be
  changed or shortened.
</p>
```

## Extra features

### Changing the editor height

For the HTML editor there are three CSS classes that can be applied to the editor container element. This allows the editor to by taller or shorter than it’s standard height. The classes are as follows:

- `tabbed-shorter` - ~14 visible lines of code
- `tabbed-standard` - ~18 visible lines of code
- `tabbed-taller` - ~30 visible lines of code

Usage is as follows. When adding the meta information for your example, set the `height` property to one of the classes specified above. For example:

```json
"date": {
    "exampleCode": "./live-examples/html-examples/input/date.html",
    "cssExampleSrc": "./live-examples/html-examples/input/css/date.css",
    "fileName": "input-date.html",
    "title": "HTML Demo: <input type=\"date\">",
    "type": "tabbed",
    "height": "tabbed-shorter"
}
```

### Changing tab opened by default

When an HTML interactive example is loaded, the HTML tab will be opened by default. We can change the default open tab to either `css` or `js`, by setting that value in the `defaultTab` property. For example:

```json
"before": {
    "exampleCode": "./live-examples/css-examples/pseudo-element/before.html",
    "cssExampleSrc": "./live-examples/css-examples/pseudo-element/before.css",
    "fileName": "pseudo-element-before.html",
    "title": "HTML Demo: ::before",
    "type": "tabbed",
    "defaultTab": "css",
    "height": "tabbed-standard"
}
```

### Changing which tabs are shown

The tabbed editor is displaying `HTML` and `CSS` tabs by default and allows the user to switch between those two. If one of the tabs is not needed, or if you wish to show the `JS` tab too, you can add the `tabs` property. The expected value is a comma-separated list of tab names in lowercase, which are `html`, `css` and `js`. For example:

```json
"template": {
   "exampleCode": "./live-examples/html-examples/interactive-elements/template.html",
   "cssExampleSrc": "./live-examples/html-examples/interactive-elements/css/template.css",
   "jsExampleSrc": "./live-examples/html-examples/interactive-elements/js/template.js",
   "fileName": "template.html",
   "title": "HTML Demo: template",
   "type": "tabbed",
   "tabs": "html,css,js",
   "height": "tabbed-shorter"
}
```

When this property is set, make sure to provide the path to the content which is to be placed in every visible tab.

- Tab `html` expects the path to the HTML file in the `exampleCode` property.
- Tab `css` expects the path to the CSS file in the `cssExampleSrc` property.
- Tab `js` expects the path to the JS file in the `jsExampleSrc` property.

### Changing which tabs are shown

The tabbed editor is displaying `HTML` and `CSS` tabs by default and allows the user to switch between those two. If one of the tabs is not needed, or if you wish to show the `JS` tab too, you can add the `tabs` property. The expected value is a comma-separated list of tab names in lowercase, which are `html`, `css` and `js`. For example:

```json
"template": {
   "exampleCode": "./live-examples/html-examples/interactive-elements/template.html",
   "cssExampleSrc": "./live-examples/html-examples/interactive-elements/css/template.css",
   "jsExampleSrc": "./live-examples/html-examples/interactive-elements/js/template.js",
   "fileName": "template.html",
   "title": "HTML Demo: template",
   "type": "tabbed",
   "tabs": "html,css,js",
   "height": "tabbed-shorter"
}
```

When this property is set, make sure to provide the path to the content which is to be placed in every visible tab.

- Tab `html` expects the path to the HTML file in the `exampleCode` property.
- Tab `css` expects the path to the CSS file in the `cssExampleSrc` property.
- Tab `js` expects the path to the JS file in the `jsExampleSrc` property.

### Encoding HTML entities

Sometimes your example might want to include [HTML entities](https://developer.mozilla.org/en-US/docs/Glossary/Entity). For example, if you are referring to an HTML tag in the example itself, you might want the example to include something like:

`Use the <ol> element to create an ordered list.`

This won't work, because the browser will replace the entity with the real character when it loads the example source. You must also escape the `&` character, by writing something like:

`Use the &lt;ol&gt; element to create an ordered list.`

This will render in the editor like this:

`Use the <ol> element to create an ordered list.`

...and render in the output pane like this:

`Use the <ol> element to create an ordered list.`

To see this in action, see the example for [`<wbr>`](https://interactive-examples.mdn.mozilla.net/pages/tabbed/wbr.html), which uses this trick to include the soft hyphen `&shy` in the example.

### Fonts

Because the editor uses Shadow DOM to isolate the example, you can't use `@font-face` to include extra fonts in your example. We've included a number of extra fonts in the [shadow-fonts.css](https://github.com/mdn/bob/blob/main/editor/css/editor-libs/shadow-fonts.css) file, and you can use these with a normal `font-family` declaration:

```css
p {
  font-family: 'molot';
}
```

If you need to include some additional fonts, add them to your pull request and update the "shadow-fonts.css" file to include them.

repository: mdn/interactive-examples

repo_name: mdn/interactive-examples


text:
# Routing E2E Test

This test spec file was created as part of the setup work for the routing refactor. It is designed to create a simple survey that utilizes all
features offered by the current routing implementation. This test runs across the entire EQ structure and asserts that the route is correct
by following it though on EQ-Survey-Runner.

The layout of the survey is as follows:

```
                                   +-------------------+
                                   | Section 1. Page 1 |
                                   +----------+--------+
                                   |          |        |
           Chose A                 |          |        |                         Chose B
           +-----------------------+          |        +--------------------------------+
           |                           Not Answered                                     |
           |                                  |                                         |
           v                                  v                                         v

+-----------------+                 +-----------------+                       +--------------------+
|Section 1. Page 4| <-------+       |Section 1. Page 2|          +----------> |End of Questionnaire|
+----------+------+         |    +-----------------------+       |            +----------+---------+
           |                +----+ Question Confirmation +-------+                       ^
           |               < 5   +-----------------------+     > 5                       |
           |                                                                             |
           |                                                                             |
           v                                                                             |
                                                                                |
+----------------+                                                                       |
|Section 2 Page 1+-----------------------------------------------------------------------+
+----------------+
```

### Set up of the services required

This test requires the following services and env vars:
EQ-Author - REACT_APP_FUNCTIONAL_TEST="true"
EQ-Author-Api - RUNNER_SESSION_URL="http://localhost:5000/session?token="
EQ-Publisher

EQ-Survey-Runner - This and all related services can be spun up using the docker-compose file located in the Runner repo.

Once all these services are running the test can be started using: yarn cypress:open:routing

license: MIT

repository: hamishtaplin/eq-author-app

branch_name: refs/heads/master

extension: md

license_type: permissive

repo_name: hamishtaplin/eq-author-app


text:
# Migration

Nuxt 3 migration guide. Work in progress 🚧

## Nuxt 2 to Nuxt 3

At the moment, there is no Nuxt 2 to Nuxt 3 migration guide nor is it recommended due to potentially more changes coming.
We are working to provide a stable migration guide and tooling to make it as smooth as possible. Please check [Bridge](/getting-started/bridge) for the alternative.

Some features have been dropped from Nuxt 2, some are yet to be implemented for Nuxt 3 and some are new in Nuxt 3 (and Bridge).

Noticeable and/or breaking changes for Nuxt 3 other than the requirements of Nuxt Bridge are:

::list{type=warning}
- Vue app templates are rewritten
- Vue upgraded to `3.x`
- Using `<Suspense>` for async data fetching
- Webpack `5.x` (if not using `vite`)
- Components discovery is rewritten
- Introduced main [`app.vue` component](/docs/directory-structure/app)
- Introduced new [`layouts` system](/docs/directory-structure/layouts)
- The [`pages/` directory](/docs/directory-structure/pages) conventions changed
::

In table below there is an overall feature comparation table:

Feature / Version         | Nuxt 2  | Nuxt 3   | Changes required
--------------------------|---------|----------|------------------
Vue Version               | 2       | 3        | Yes
`app.vue`                 | ❌      | ✅        | -
Assets                    | ✅      | ✅        | No
Components                | ✅      | ✅        | No
Layouts                   | ✅      | ✅        | Yes
Error Pages               | ✅      | 🚧        | Yes
Pages                     | ✅      | ✅        | Yes
Pages: Dynamic Params     | ✅      | ✅        | Yes
Pages: _.vue              | ✅      | ✅        | No
Plugins                   | ✅      | ✅        | Yes (compatible by default)
Store                     | ✅      | 🚧        | Yes
Transitions               | ✅      | 🚧        | ?
Suspense                  | ❌      | ✅        | -
Options API: `asyncData`  | ✅      | 🚧        | ?
Options API: `fetch`      | ✅      | 🚧        | ?

### Module Compatibility

All Nuxt 2 modules should be forward compatible with Nuxt 3 as long as they migrate to bridge or if they are already following guidelines.

All (upcoming) modules made with `@nuxt/kit` should be backward compatible with Nuxt 2 projects (even without bridge) as long as they are not depending on a Nuxt 3 / Bridge-only feature.

### Plugin Compatibility

Most Nuxt 2 plugins should be forward compatible with Nuxt 3 with a magical compat layer we inject.

Nuxt 3 plugins are **not** backward compatible with Nuxt 2.

### Vue Compatibility

For plugins using composition API or components, it needs exclusive Vue 2 or Vue 3 support.

By using [vue-demi](https://github.com/vueuse/vue-demi) they should be compatible with both Nuxt 2 and 3.

## Module Migration

When Nuxt 3 users add your module, a compatible module container layer from `@nuxt/kit` is **automatically injected**, so as long as your code is following the guidelines below, it should continue working as-is.

### Test with `@nuxt/bridge`

Migrating to `@nuxt/bridge` is the first and most important step for supporting Nuxt 3.

If you have a fixture or example in your module, add `@nuxt/bridge` package to its config (see [example](/getting-started/bridge#update-nuxtconfig))

### Avoid CommonJS syntax

Nuxt 3 natively supports TypeScript and ECMAScript Modules.

#### Update the imports

::code-group
```js [Before]
const lib = require('lib')
```
```js [After]
import lib from 'lib'
// or using code-splitting
const lib = await import('lib').then(e => e.default || e)
```
::

#### Update the exports

::code-group
```js [Before]
module.exports = ...
```
```js [After]
export default ...
// or using named export
export const hello = ...
```
::

#### Avoid using specific CJS syntax

Avoid the usage of `__dirname` and `__filename` as much as possible.

### Ensure plugins default export

If you inject a Nuxt plugin that does not have `export default` (such as global Vue plugins), ensure you add `export default {}` to the end of it.

::code-group
```js [Before]
// ~/plugins/vuelidate.js
import Vue from 'vue'
import Vuelidate from 'vuelidate'

Vue.use(Vuelidate)
```
```js [After]
// ~/plugins/vuelidate.js
import Vue from 'vue'
import Vuelidate from 'vuelidate'

Vue.use(Vuelidate)

export default () => { }
```
::

### Avoid runtime modules

With Nuxt 3, Nuxt is now a build-time-only dependency, which means that modules shouldn't attempt to hook into the Nuxt runtime.

Your module needs should work even if it's only added to [`buildModules`](/docs/directory-structure/nuxt.config#buildmodules) (instead of `modules`). For example:

- Avoid updating `process.env` within a Nuxt module and reading by a nuxt plugin; use [`runtimeConfig`](/docs/directory-structure/nuxt.config#publicruntimeconfig) instead.
- (*) Avoid depending on runtime hooks like `vue-renderer:*` for production
- (*) Avoid adding `serverMiddleware` by importing them inside module. Instead, add them by referencing a file path so that they are independent of module context

(*) Unless it is for `nuxt dev` purpose only and guarded with `if (nuxt.options.dev) { }`.

### Add module meta

Ensure your module is exporting meta object.

\[TODO\]

### Use TypeScript (optional)

While it is not essential, most of the Nuxt ecosystem is shifting to use TypeScript, so it is highly recommended to consider migration.

::alert{icon=💡}
You can start migration by simply renaming `.js` files, to `.ts`. TypeScript is designed to be progressive!
::

::alert{icon=💡}
You can use TypeScript syntax for Nuxt 2 and 3 modules and plugins without any extra dependencies.
::

repository: antfu/nuxt-framework

branch_name: refs/heads/main

repo_name: antfu/nuxt-framework


text:
# Our Company Handbook
*A Collaborative Handbook for our Team & Community*

This `handbook` has gone through a number of changes over the years and this version is no exception! This version _should_ be the most "usable" as there's only a few pages to review (and update...)!

This repository serves these purposes:

1. Gives a high-level overview of who we are, what we do, and why we do what we do...
2. Our compensation, benefits, and employment policies for our staff and team...
3. A cultural glossary of practices, quirks, principles, and operating virtues...
4. An assortment of other organization-centric things to know about...

It's a work-in-progress, something designed to be touched by anyone in our community. If you have thoughts, I'd [love to hear them](mailto:john@yen.io)!

Finally, I'm grateful that you're here and that you've decided to commit a season of your life helping to build a _meaningful_ and _impactful_ software product for our amazing community — their success (and ours) wouldn't be possible without you.

To infinity & community,

John // Chief Cartridge Blower

# Table of Contents

1. [Operating Virtues](https://github.com/yenio/handbook#operating-virtues)
2. [Our Team](https://github.com/yenio/handbook#our-team)
3. [Our Story](https://github.com/yenio/handbook#our-story)
4. [Employment (Compensation and Benefits)](https://github.com/yenio/handbook/blob/master/1-employment.md)
5. [Open Roles](https://github.com/yenio/handbook/blob/master/2-job-openings.md)
6. [Cultural Quirks](https://github.com/yenio/handbook#cultural-quirks)
7. [Tools We Use](https://github.com/yenio/handbook/blob/master/3-tools.md)
9. [Policy Changes, Legal Stuff](https://github.com/yenio/handbook#policy-changes-and-legal-stuff)

## Operating Virtues

Ben Horowitz via his book [What You Do is Who You Are](https://amzn.to/338OBm7) helped us frame our own:

>Bushido looks like a set of principles, but it’s a set of practices. The samurai defined culture as a code of action, a system not of values but of virtues. A value is merely a belief, but a virtue is a belief that you actively pursue or embody.
>
>The reason so many efforts to establish “corporate values” are basically worthless is that they emphasize beliefs instead of actions. Culturally, what you believe means nearly nothing. What you do is who you are.

Consequently, here are our current `operating virtues` (taken from our [blog](https://john.do/day-one/)):

### 1. Table All The Things — `#tatt`
Or, in other words, we “put everything out on the table” — the good, the bad, and most definitely the ugly. Information is the lifeblood of our business which is especially true in a distributed-first organization. This means that we share things in real-time: We don’t wait for the timing to be “perfect” and we’re comfortable with sharing incomplete, imperfect, and unpolished ideas in prose.

[Candor](https://www.indiehackers.com/post/candor-the-secret-to-startup-success-de93cf7ace) is our weapon of choice — both a strategy and tactic.

We treat all updates from team members with respect knowing of the courage required to share something that could make the person "look" foolish or silly. Instead, we engage graciously, responding to the update with the care and attention that we’d hope to receive if it was our own, knowing that they’ve successfully modeled this virtue with excellence.

Finally, `#tatt` means that we may share things that of personal nature and are only meant for those presently at our table. Everything shared in our communication tools should be held in the highest regard and with strict confidence.

Our **table is strong** when **trust is the foundation**.

### 2. Speed of Decision Making — `#sodm`
No bullshit: We are in a fight for our survival and every single day we make business-altering decisions. And sometimes theese decisions are made without all of the data. Regardless, we agree with General Patton when he said “*A good plan, violently executed **now**, is better than a perfect plan next week.*”

That “plan” is our first operating virtue, `#tatt`, because our team has mastered the art of communicating with [candor](https://www.indiehackers.com/post/candor-the-secret-to-startup-success-de93cf7ace): We are open, honest, and we keep things simple to maximize meaning and understanding.

When making decisions, we clearly state if consensus or feedback is required, the expected time to deliver, and then, with enough collective confidence that we can create, we commit to the decision even (and especially) when we may personally disagree.

We move the fastest and are the most effective **when we are aligned**.

### 3. Kaizen — `#kaizen`
When our team executes the first two `operating virtues` with excellence it allows us to build a culture of `continuous improvement`, both corporately and independently. We seek to do this in everything that we do. Consequently, everything in our business is dynamic, not static; a real-life work-in-progress.

We look for opportunities to not only grow but also to share our learnings with the other folks on our team — this is part of `#tatt`! Much has been written about the history and application of [kaizen](https://en.wikipedia.org/wiki/Kaizen) and it's worth developing your own personal philosophy and practice.

As a team we intentionally find opportunities to invest in ourselves and one another through continual education — reading, attending (virtual) conferences, and even taking educational courses to level-up as humans. Feel free use your monthly budget to invest in yourself!

## Our Team

#### John Saddington - Community - [@yenFTW](https://twitter.com/yenFTW)

John was most recently co-founder of Pinpoint, an engineering analytics company in Silicon Valley backed by some of the top names in VC (Bessemer, Storm Ventures, BoldStart, BloombergBeta, Slack Fund, Social Capital, and [more](https://john.do/pinpoint/)). Previously, he was a co-founder of The Iron Yard, the largest coding bootcamp before it was acquired by Apollo Global (Fortune 500). Through his love of open source he founded 8BIT, which was both an open source product (acquired by WooThemes) and a content company (acquired by WPEngine). He's [a](https://ceobrain.substack.com/) [writer](https://john.do), dad, and amateur [filmmaker](http://yen.show).

#### Agata Bergstrom - Engineering - [LinkedIn](https://www.linkedin.com/in/agatabergstrom)

Agata wrote her first lines of code when she was 9 years old. Won the Math Olympiad in Poland at the age of 14. Graduated with an MS degree in Computer Science from one of the top technical universities in Poland. Moved to Ireland and eventually settled in the beautiful Pacific Northwest region of the US. 10+ years of professional experience as an engineer, from an employee #50,000 to an employee #5. Worked at Microsoft, Facebook and at various stage startups. On top of engineering experience and a track record of shipping well-founded products, she also has experience interviewing engineers (600+ interviews) and making hiring decisions for a top 5% talent company. In her past life Agata was a licensed skydiver (200+ skydives), amateur photographer and enjoyed flying tiny airplanes with her husband. Currently her favorite pastime is chasing her two little daughters and trying to keep them alive, which she finds more challenging than jumping out of airplanes.

#### Andrew J. Mason - Storytelling - [@AndrewJMason](https://twitter.com/andrewjmason)

Andrew is one of the best audio / video producers you’ve *_never_* heard of. John bought Andrew his first podcasting mic in 2009 and challenged him to give “this new thing called podcasting” a try. Since then, Andrew’s voice and production work has been featured on podcasts for major news outlets like Time, Wired, and Inc.com. He currently hosts & produces one of iTune's Top 100 Business podcasts: The “_Getting Things Done_” (GTD) show for David Allen Company. He also hosts & produces for WisdomDestinations.com. Andrew enjoys spending time with his wife, two boys, and 13 year old Dachsund named Harmony.

#### The Yenicorn - Mascot - [LinkedIn](http://yenicorn.com/)

According to myth and legend, our friend, The Yenicorn, was raised by a herd of Japanese unicorns in a mysterious other worldly… … world. She knows (as prophecy has foretold) that she has a very important part to play in the cryptocurrency community but is understandably a bit nervous and often lacks a bit of self-confidence (thus the helmet)  – but she wants to help people and do her very best!

#### Venture Capital Firms

We're fortunate to have the financial support from the following (repeat!) venture firms:

1. [Cherubic VC](https://cherubic.com/)
2. [Hustle Fund](https://www.hustlefund.vc/)
3. [LINE Corp](https://lineventurescorp.com/en/)
4. [Sterling Road VC](https://www.sterlingroad.com/)
5. [Service Provider Capital](http://www.serviceprovidercapital.com/)

We also have a top-flight group of Angel Investors who act as both advisors and personal friends.

## Our Story

Born out of the ashes of two pivots over 2+ years, we restarted YEN's story in early-2020 as we caught a vision for an exciting and inevitable future — a `vision` of a future where there's a "community on every website" and how we do that is through our `mission` to "democratize community building" for everyone, everywhere.

For starters, it looks like a simple b2b saas platform that helps businesses launch, manage, and grow a community right on their own website. Unlike other solutions that can take a lot of time to properly setup and install, we bring the community right to the business, maximizing their efforts and marketing ROI.

Built for speed, we help creators connect with their customers, monetize their projects and know-how, and build a community they can be super-proud of.

We are currently test-driving the mvp in our own business-building community.

## Cultural Quirks

Here are a few things that aren't immediately obvious about us and our team.

### How We Refer To Ourselves:

- Legally, we are `ROFLCOPTER, INC.` But other than legal docs, you’ll rarely see this.
- Most commonly, we refer to team, project, company as our core product, YEN.
- YEN (all caps) is not an acronym.
- You’ll also see accounts under [yen.io](http://yen.io) or `yenio` or `yenFTW` or `yen_io` (sometimes we couldn’t get just YEN)
- If "YEN" is combined with another word, it's not capitalized (e.g. `YenIQ`)
- You can find our `brand` guidelines [here](https://john.do/brand-2019/). It is outdated, copy-wise, but the colors and other identifying marks are correct.

### Some Terms You'll See Tossed Around:

- `Yenizen` - Members of our amazing community
- `Yeniverse` - What we're building AND how we describe our community
- `Yeni` or `Yenni` (what community members named the company mascot, the [Yenicorn](http://yenicorn.com))
- `yenSTRONG` - When one of our community members does something amazing and supportive of another `yenizen`.
- `yenSQUAD` - An alternative way / loving way of talking about our community
- `yenIVERSITY` — Any of our educational courses or [workshops](http://yen.education).

### "My Meeting, My Notes"

- When you call or 'own' the meeting, you are responsible for taking notes and dispersing them along with action items after the meeting so those who weren't able to attend are made aware. We usually just drop those in Slack post-meeting.

### "Team Food Day"

- Until someone on our team comes up with a better name for this... it's just called "Team Food Day"! On `Wednesdays` the company trades one meal of your choice (Breakfast, Lunch, or Dinner... or Second Dinner...) for a picture of it! Feel free to pay for the family too!

## Policy Changes and Legal Stuff
*The only constant is change...*

We want all of our policies to be living documents which can improve and change as we learn and grow as a company. This is how we'll propose and make changes to our policies.

Right now, we use the following tools to discuss the Handbook:

1. **GitHub** - The canonical resource. Feel free to open a pull request with context!

2. **In Person Meetings** - Our hope is that as we grow and scale, we'll have more opportunities to gather in-person and virtually to discuss the #handbook openly.

#### Handbook Use, Policy

This Employee Handbook describes the employment policies applicable to all employees of the Company. Where there are differences in the terms applicable to employees in different jurisdictions, the differences are noted in the Handbook. This Handbook is not a contract, express or implied, guaranteeing employment for any specific duration.

This Handbook is designed to familiarize employees with the employment policies of YEN. Employees should read, understand, and comply with all provisions of the Handbook. It describes many of the responsibilities of an employee and outlines the programs developed by YEN to benefit its employees.

No Employee Handbook can anticipate every circumstance or question about policy. As YEN continues to grow and as business needs, employment legislation and economic conditions change, YEN reserves the right to revise, supplement, or rescind any policies or portion of the Handbook from time to time as it deems appropriate, in its sole and absolute discretion. No statement or promise by any other member of the Company can be interpreted as a change in policy nor will it constitute an agreement with an employee. Employees will be notified of such changes to the Employee Handbook as they occur.

Should there be any discrepancy between the Handbook and other documents of the Company, the policies incorporated in the Handbook shall govern. This Employee Handbook supersedes any and all other previous YEN Employee Handbooks or other YEN policies, whether written or oral.

Policies set forth in this Handbook are not intended to create a contract, nor are they to be construed to constitute contractual obligations of any kind or a contract of employment between YEN and any of its employees. No person can enter into an employment contract with YEN for a specified period of time or make any agreement contrary to this policy without written approval from CEO.

The provisions of the handbook have been developed at the discretion of management and may be audited, amended or cancelled at any time, at YEN’s sole discretion. Whenever the word “Company” is used, it refers to the employer, “YEN”.

repository: rubendinho/handbook

repo_name: rubendinho/handbook


text:
# Exceptions

When dealing with errors in Flask API you should typically raise one of the built-in exceptions, or a subclass of the base `APIException`.  Exceptions raised in this way will get the standard content negotiation applied to the response and will be rendered with an appropriate renderer.

By default all error responses will include a key `detail` in the body of the response.

For example, the following request:

    POST http://api.example.com/foo/bar HTTP/1.1
    Content-Type: application/json
    Content-Length: 63

    {'malformed json': 'keys and values should use double quotes'}

Might receive an error response indicating that the JSON content of the request is malformed:

    HTTP/1.1 400 Bad Request
    Content-Type: application/json
    Content-Length: 33

    {"detail": "Malformed request."}

---

## APIException

**Signature:** `APIException()`

The **base class** for all exceptions raised inside Flask API.

To provide a custom exception, subclass `APIException` and set the `.status_code` and `.detail` properties on the class.

For example, if your API relies on a third party service that may sometimes be unreachable, you might want to implement an exception for the "503 Service Unavailable" HTTP response code.  You could do this like so:

    from flask.ext.api.exceptions import APIException

    class ServiceUnavailable(APIException):
        status_code = 503
        detail = 'Service temporarily unavailable, try again later.'

## ParseError

**Signature:** `ParseError(detail=None)`

Raised if the request contains malformed data when accessing `request.data`, `request.form` or `request.files`.

By default this exception results in a response with the HTTP status code "400 Bad Request".

## AuthenticationFailed

**Signature:** `AuthenticationFailed(detail=None)`

Should be raised when an incoming request includes incorrect authentication.

By default this exception results in a response with the HTTP status code "401 Unauthenticated".

## NotAuthenticated

**Signature:** `NotAuthenticated(detail=None)`

Should be raised when an unauthenticated request fails permission checks.

By default this exception results in a response with the HTTP status code "401 Unauthenticated".

## PermissionDenied

**Signature:** `PermissionDenied(detail=None)`

Should be raised when an authenticated request fails permission checks.

By default this exception results in a response with the HTTP status code "403 Forbidden".

## NotFound

**Signature:** `NotFound(detail=None)`

Should be raised when a request is made to a resource that does not exist.

By default this exception results in a response with the HTTP status code "404 Not Found".

<!-- Currently 405's will result in Flask's default behavior.
## MethodNotAllowed

**Signature:** `MethodNotAllowed(method, detail=None)`

Raised when an incoming request occurs that does not map to a handler method on the view.

By default this exception results in a response with the HTTP status code "405 Method Not Allowed".
-->

## NotAcceptable

**Signature:** `NotAcceptable(detail=None)`

Raised if there are no renderers that can satisfy the client's requested `Accept` header.

By default this exception results in a response with the HTTP status code "406 Not Acceptable".

## UnsupportedMediaType

**Signature:** `UnsupportedMediaType(detail=None)`

Raised if there are no parsers that can handle the content type of the request data when accessing `request.data`, `request.form` or `request.files`.

By default this exception results in a response with the HTTP status code "415 Unsupported Media Type".

## Throttled

**Signature:** `Throttled(detail=None)`

Should be raised when an incoming request fails throttling checks.

By default this exception results in a response with the HTTP status code "429 Too Many Requests".

[cite]: http://www.doughellmann.com/articles/how-tos/python-exception-handling/index.html
[authentication]: authentication.md

repository: flask-api/flask-api

branch_name: refs/heads/develop

gha_language: Python

gha_license_id: NOASSERTION

repo_name: flask-api/flask-api


text:
# RGImage

Add the following lines to your Podfile:

    source 'git@github.com:ryangomba/RGPodspecs.git'
    pod "RGImage"

repository: ryangomba/bif

repo_name: ryangomba/bif


text:
---
layout: page
title: Platforms & Developers
permalink: /about/2016/new-york/notes/platforms-and-developers/
---

## "How can platforms support bot developers?"

Notes by [Meagan Gamache](https://twitter.com/meaganrgamache)

What are platform companies doing to help devs?
Platform representatives reported differentiating characteristics.

### Microsoft

* Robust, complete available AI platform
* Quick & cheap onboarding with Azure
* Provide an emulator
* For Teams,
	* new developer product
	* Really interested in usability/quick-to-launch bots
	* Launched Teams with a set of key strategic platform partners
	* Key strategy: one conversation platform across all products

### Kik
* Tech & biz partner program
* Marketing & sales materials
* Connecting startups to brand customers
* Focus on co-branding

### Google
* Active platform partnerships
* Decent discoverability with Assistant
* Triages your requests across your bots
* Open source Tensorflow, ML tools (API.ai)

### Alexa
* Alexa fund (~$100m)
* Active partner program
* Making more open the voice services
* Leverages AWS for deploying apps

### Facebook
* Startup program expanding to bots
* Deep dive w/ devs (tech, prod, partnerships, etc.)
* Partner program
* Groups and discussions, now
* Guides & recipes
* Focus on stability of APIs
* Cadence of releases
* Wit.ai

### Watson
* Blue mix
* Multiple cognitive technologies made available to developers (including sentiment analysis, etc.)
* Watson conversation (bot-building technology)

### Slack
* Slack Fund (~$80m)
* Active partner program
* Responsiveness
* App directory
* Interactivity
* Collaborative efforts with Watson

## What do startups/devs/enterprises want?
*Participants representing various start-ups shared what they wanted to hear from platforms, collected below and organized by topic.*

* Auth/installations
	* Inconsistency with authentication & installing bots across platforms
* UI
	* Consistent language across platforms to describe UI features would be great
* Security & policy
	* Huge problem with privacy and not totally understanding what happens to data consumers share with bots
	* How do we bring start-ups into the Enterprise space? What about compliance?
		* One way of thinking about this: Messenger/Slack are user acquisition channels, and then bringing users to compliant apps later
	* Limited encryption for conversational platforms
* Customer learnings
	* How might startups share what we know about customer behavior to platforms?
	* How do platform teams think about their enterprise and consumer customers? Similarities, differences.
		* This would help the startup founder to decide which platforms to support and build on
* Bot metrics & business support
	* Ads, payments: some platforms are very opaque about monetization. How do platforms set expectations with start-ups attempting to build businesses on platforms?
	* Metrics: Data representation across all of the platforms is very different, and it would be great to have conventions around similar schema to represent users or other objects

*People also provided ideas for next steps.*
* Working sessions to report to platforms information about health of business and actual company needs
* What can we do to organize our community for the future?

repository: Botness/site

gha_language: Ruby

repo_name: Botness/site


text:
# UCLan 4WC API Documentation
A simpler, markdown version of the 4WC API documentation

These docs are not made to replace the provided docs, instead to compliment them with an easier to search, less information dense copy of the basic endpoints, parameters and returned values.
It includes some notes on implementation, but doesn't have instructions on using App Inventor with this API.

## Links

- [API Overview](https://github.com/UCLanTeamNaN/api-docs/blob/master/docs/overview.md)
- [Game Session Interaction](https://github.com/UCLanTeamNaN/api-docs/blob/master/docs/game.md)
- [Player Status Information](https://github.com/UCLanTeamNaN/api-docs/blob/master/docs/players.md)
- [Map Information](https://github.com/UCLanTeamNaN/api-docs/blob/master/docs/maps.md)
- [Leaderboard](https://github.com/UCLanTeamNaN/api-docs/blob/master/docs/leaderboard.md)

## Endpoints

- Maps
    - [getMaps](https://github.com/UCLanTeamNaN/api-docs/blob/master/docs/maps.md#get-all-maps)
- Game Sessions
    - [createGame](https://github.com/UCLanTeamNaN/api-docs/blob/master/docs/game.md#create-game)
    - [joinGame](https://github.com/UCLanTeamNaN/api-docs/blob/master/docs/game.md#join-game)
    - [getPlayers](https://github.com/UCLanTeamNaN/api-docs/blob/master/docs/game.md#get-players-in-current-game)
    - [startGame](https://github.com/UCLanTeamNaN/api-docs/blob/master/docs/game.md#join-game)
    - [getGameState](https://github.com/UCLanTeamNaN/api-docs/blob/master/docs/game.md#get-game-state)
    - [getDrXLog](https://github.com/UCLanTeamNaN/api-docs/blob/master/docs/game.md#get-drx-history-log)
    - [getPlayerDetails](https://github.com/UCLanTeamNaN/api-docs/blob/master/docs/game.md#get-player-locations--ticket-counts)
- Player Controls/Data
    - [makeMove](https://github.com/UCLanTeamNaN/api-docs/blob/master/docs/players.md#make-move)
    - [getPosition](https://github.com/UCLanTeamNaN/api-docs/blob/master/docs/players.md#get-position)
- Leaderboard
    - [getLeaderboard](https://github.com/UCLanTeamNaN/api-docs/blob/master/docs/leaderboard.md#get-current-challenge-leaderboard)

## Overview

The API is a simple CSV plain text based API built on Tomcat.
This documentation assumes you already know the basic information about the API,
such as what it's for, the base URLs & how the game works.

These docs will (hopefully) be kept up-to-date during the challenge, providing more
standardised documentation, that is more concise & easier to read at a glance.

Written by Team Not a Name for All Teams.

## Attribution

This documentation exists to make development of the 4WC app easier for those familiar with standard API documentation.

These docs have a lot less information than the official ones provided by UCLan, but can be used as a quick reference while creating your game.

This documentation is based on the UCLan provided documents.

Written by Cameron Fleming @ Team NaN for everyone.

repository: UCLanTeamNaN/api-docs

repo_name: UCLanTeamNaN/api-docs


text:
# Automatic command line parsing
No need to manually parse command line options for your scripts, `bds` does it for you.

`bds` automatically parse any command line line argument that starts with "-" and assigns the value to the corresponding variable global variable (if the variable exists).

Example (test_20.bds):
```
#!/usr/bin/env bds

in := "in.txt"
print("In file is '$in'\n")
```

If we run this, we get
```
$ ./test_20.bds
In file is 'in.txt'
```

Now we pass a command line argument `-in another_file.txt`, and `bds` automatically parses that command line option replacing the value of variable `in`
```
$ ./test_20.bds -in another_file.txt
In file is 'another_file.txt'
```

This feature also works for other data types (`int`, `real`, `bool` or lists).

###Flags
In case of `bool` if the option is present, the variable is set to `true`.
File test_21.bds
```
#!/usr/bin/env bds

bool flag
print("Variable flag is $flag\n")
```

```
$ ./test_21.bds
Variable flag is false
```

```
$ ./test_21.bds -flag
Variable flag is true
```

Or you can specify the value (`true` or `false` which is useful to set to `false` a bool that is by default `true`:
File test_21b.bds
```
#!/usr/bin/env bds

flagOn  := true
flagOff := false
print("flagOn = $flagOn\nflagOff = $flagOff\n")
```

So in this example we can reverse the defaults by running this (note that we can use `-flagOff` instead of `-flagOff true `):
```
$ ./test_21b.bds -flagOn false -flagOff true
flagOn = false
flagOff = true
```
Note that we can use `-flagOff` instead of `-flagOff true`.

###Lists
You can also apply this to a list of strings.
In this case, all command line arguments following the `-listName` will be included in the list (up to the next argument starting with '-').

E.g.: Note that list `in` is populated using `in1.txt in2.txt in3.txt` and `out` is set to `zzz.txt`
File test_22.bds
```
#!/usr/bin/env bds

in  := ["in.txt"]
out := "out.txt"
ok	:= false

print("In : $in\n")
print("Out: $out\n")
print("OK : $ok\n")
```

```
$ ./test_22.bds  -ok -in in1.txt in2.txt in3.txt -out zzz.txt
In : [in1.txt, in2.txt, in3.txt]
Out: zzz.txt
OK : true
```

repository: Dantistnfs/bds

repo_name: Dantistnfs/bds


text:
# Mistplay-Challenge
Mistplay Data Analyst Take Home Challenge

The Jupyter Notebook in this repository focuses on two main details. First, a general visualisation of the difference between "Life Time Value", "Total Time" and "Total Units Earned" across 60 AB Testing groups. Second, a look into the optimization of Mistplay's game economy.

- The first step taken was the exploration of the datasets and get familiar with what was given.
- Next, the dataset was cleaned of any duplicate data, inappropriate data types, etc.
- Analysis and Visualisations
- Insights
- Conclusion and Limitations

repository: juliayslee/Mistplay-Challenge

gha_language: Jupyter Notebook

gha_license_id: MIT

repo_name: juliayslee/Mistplay-Challenge


text:
# Changelog for ASAA Version 0.2.1

## Message
Thank you for being with me up until this point. This release is by far the hardest to execute, mainly because I wasted a lot of time working in the wrong ideas. I was very close to creating a new major release, but [symantic versioning](https://semver.org/) told me that only non-backwards compatible changes deserve a new **MAJOR** version. Of course, I did change a few things, so I will list them soon.

## Dependencies
I added Pandas for ease of access from the user.

## Changes

I am terribly sorry, but we have finally integrated Pandas DataFrames :satisfied:!

Now, I garuntee some outrage, but I made the export format to Microsoft Excel Open XML files(XLSX) :scream:, which means you might get an error saying ``ImportError: No module named 'openpyxl'``, simply type in the terminal ``pip3 install openpyxl``. It should work after.

After you enter in data, your screen spits out a much nicer looking image: ![pd Image](https://bn1301files.storage.live.com/y4m9U1K2w4WCK95EqMTtzLMUXlpg9T8Z-ipVYwLlUGGDpkgEYe1Z9tAkBKx3QNJOKXcDBYRcd0c1vzf5ecXKn87WzsurAayOsPR-JN-Pzi0LsO1LJFUS5S4Kd4JHvRoABuXkg1b0BIWDWpMeNU1wTjYoDwvhsvpx9EniAjvGb_3mk8PToY-2ohPDlUi2A-AghWx?width=293&height=123&cropmode=none)

Of course, you see that all the databases now have "left" as their handiness instead of "l", and there is a new column for distance. Here is how the document looks on Excel 2019:

![Excel Data](https://bn1301files.storage.live.com/y4mer2YNeIQtUN5DJk0DU-YZ6OnDNEITyMihRmWNyCPs87GaM7uDFkpZrD7A1NwcKqnVnM0-2oLtiZDZq5mD_KbLxvOgY602VsH92oaJJA036O-XVPhwVtQ0HkgB6R518v9bPmQTM0FbH3ElzXnEINFI5vwi8FT6g4b25unDAkKftlD2xAHcEJsdIoGbo4N6gDK?width=288&height=161&cropmode=none)

### Code Level Changes

> These changes are not noticable in the program but are different inside the code.

```python
# New function!!
    def b_setup(self):
        global count
        count = len([name for name in os.listdir(".") if os.path.isfile(name)])
        wincd = "asaa_logs"
        unixcd = "asaa_logs"
        if platform.system() == 'Windows' and not os.path.exists(wincd):
            os.mkdir(wincd)
            os.chdir(wincd)
            count
        elif platform.system() == 'Windows' and os.path.exists(wincd):
            os.chdir(wincd)
            count
        elif platform.system() == 'Linux' and not os.path.exists(unixcd):
            os.mkdir(unixcd)
            os.chdir(unixcd)
            count
        else:
            os.chdir(unixcd)
            count

        count = len([name for name in os.listdir(".") if os.path.isfile(name)])
```
```python
# Removed dbvar.pop(-1)!! Also add self variable to every method.
if time == 0:

    dbobj = {
        "author": auth,
        "handiness": left_or_right,
        "distance": distance,
        "numbers": dbvar
    }

    self.b_setup()
    df = pd.DataFrame.from_dict(dbobj)

    df.to_excel(f"thr_time{count}.xlsx", index=False)
    print(df)
    break
else:
    tcon = 16.67*time/1000
    throwing_time = distance / tcon * 3.6
dbvar.append(throwing_time)

lr_id = asaa.insert_one(dbobj).inserted_id
```

repository: LIKE-Productions/ASAA

repo_name: LIKE-Productions/ASAA


text:
# GeekBudget
Open source budget manager for geeks. Currently unreleased & under **heavy** development.

[![Build status](https://ci.appveyor.com/api/projects/status/o884780cnk276y1h?svg=true)](https://ci.appveyor.com/project/minajevs/geekbudget-api)
[![Coverage](https://codecov.io/gh/minajevs/GeekBudget.Api/branch/master/graph/badge.svg)](https://codecov.io/gh/minajevs/GeekBudget.Api)

[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy)

## Development status
Active


text:
#SERVANT Installer
Install SERVANT into Windows.

##Dependencies
* Qt 5.7.1 or later

##Build
* use Qt with MinGW-w64(require filesystem support)

##Note
* This project is still under heavy development.
* Dirty but works.


text:
# Add labels to custom metrics

Let's imagine that we have set up application logging in our GAE app with a custom payload. How can we filter by a specific field in Stackdriver Monitoring's metrics explorer? how can we set up the corresponding alerts? Originally written as a StackOverflow [answer](https://stackoverflow.com/a/59760010/6121516).

## Example

First of all, we can create our own [user-defined metrics][1] in Stackdriver Logging. This way, we can capture all logs that match a target filter and expose the payload fields that we want as metric labels.

We navigate to `Stackdriver Logging` -> `Logs-based Metrics` -> `Create Metric` and select a filter for a GAE application:

```
resource.type="gae_app"
logName=("projects/REDACTED/logs/appengine.googleapis.com%2Fstdout"
OR "projects/REDACTED/logs/appengine.googleapis.com%2Fstderr"
OR "projects/REDACTED/logs/appengine.googleapis.com%2Fnginx.request"
OR "projects/REDACTED/logs/appengine.googleapis.com%2Frequest_log")
resource.labels.module_id="image-demo"
httpRequest.requestMethod="GET"
```

In my case requests contain a generic `jsonPayload` such as (but you can have your own fields as per the implemented application logging):

```
jsonPayload: {
  appLatencySeconds: "0.000"
  latencySeconds: "0.001"
  trace: "4ff777572199f23f4fc97388e75c0acc"
 }
```

On the metric editor (right panel) under `Labels` there is a `Field name` dropdown selector that includes our `jsonPayload` fields:

[![enter image description here][2]][2]

As an example, we select `jsonPayload.trace` and now we can filter our custom metric by **trace** label in the Metrics Explorer:

[![enter image description here][3]][3]

Note that we can create a Stackdriver Monitoring alert directly from our list of user-defined metrics (`Create alert from metric`):

[![enter image description here][4]][4]

  [1]: https://cloud.google.com/logging/docs/logs-based-metrics/
  [2]: https://i.stack.imgur.com/FNfC7.png
  [3]: https://i.stack.imgur.com/gDTpj.png
  [4]: https://i.stack.imgur.com/uBQm2.png

## License

These examples are provided under the Apache License 2.0.

## Issues

Report any issue to the GitHub issue tracker.

repository: dorina-sada/gcp-snippets

repo_name: dorina-sada/gcp-snippets


text:
gfx_glyph
[![crates.io](https://img.shields.io/crates/v/gfx_glyph.svg)](https://crates.io/crates/gfx_glyph)
[![Documentation](https://docs.rs/gfx_glyph/badge.svg)](https://docs.rs/gfx_glyph)
================

Fast GPU cached text rendering using [gfx-rs](https://github.com/gfx-rs/gfx/tree/pre-ll) & [rusttype](https://github.com/dylanede/rusttype).

Makes use of three kinds of caching to optimise frame performance.

* Caching of glyph positioning output to avoid repeated cost of identical text
rendering on sequential frames.
* Caches draw calculations to avoid repeated cost of identical text rendering on
sequential frames.
* GPU cache logic to dynamically maintain a GPU texture of rendered glyphs.

```rust
extern crate gfx_glyph;
use gfx_glyph::{Section, GlyphBrushBuilder};

let garamond: &[u8] = include_bytes!("GaramondNo8-Reg.ttf");
let mut glyph_brush = GlyphBrushBuilder::using_font_bytes(garamond)
    .build(gfx_factory.clone());

let section = Section {
    text: "Hello gfx_glyph",
    ..Section::default() // color, position, etc
};

glyph_brush.queue(section);
glyph_brush.queue(some_other_section);

glyph_brush.draw_queued(&mut gfx_encoder, &gfx_color, &gfx_depth)?;
```

## Examples
Have a look at
* `cargo run --example paragraph --release`
* `cargo run --example performance --release`
* `cargo run --example varied --release`
* `cargo run --example depth --release`

## Limitations
The current implementation supports OpenGL *(3.2 or later)*. In future we'll support the upcoming gfx-rs ll releases.

repository: mtak-/gfx-glyph

repo_name: mtak-/gfx-glyph


text:
# Agaricus atramentarius Bull., 1786 SPECIES

#### Status
SYNONYM

#### According to
The Catalogue of Life, 3rd January 2011

#### Published in
Herb. Fr. tab. 164 (1786)

#### Original name
Agaricus atramentarius Bull., 1786

### Remarks
null

repository: mdoering/backbone

path: /life/Fungi/Basidiomycota/Agaricomycetes/Agaricales/Psathyrellaceae/Coprinopsis/Coprinopsis atramentaria/ Syn. Agaricus atramentarius/README.md

repo_name: mdoering/backbone


text:
# Show Open Files

Simple plugin for Sublime Text to show the number of open files in the status bar.

## Installation

You may either install using Package Control (which gains you automatic updates and a simpler install), or manually using `git`.

### Package Control (Recommended)

1. Install [Sublime Package Control](http://wbond.net/sublime_packages/package_control/installation).
2. Run `Package Control: Install Package` from the Command Palette
3. Find and install the `Show Open Files` plugin

### Manual

1. CD into your Sublime Text Packages directory;
	* Windows: `%APPDATA%\Sublime Text 3\Packages\`
	* OS X: `~/Library/Application Support/Sublime Text 3/Packages/`
	* Linux: `~/.config/sublime-text-3/Packages/`
	* Portable Installation: `Sublime Text 3/Data/Packages/`
2. `git clone https://github.com/grapegravity/ShowOpenFiles.git`

_**Note**: For Sublime Text 2 users, substitute the `3` in the above directory names with `2`._

## Usage

The number of files open in the current window will be displayed in the status bar. This is updated whenever a view is opened or closed. There are no settings to configure.

repository: ticky/ShowOpenFiles

repo_name: ticky/ShowOpenFiles


text:
# Image Upload to Imgur

Upload Image to Imgur using dropzone.js

* [Imgur API](https://api.imgur.com/endpoints/image) for uploading the image.
* [Dropzone.js](http://www.dropzonejs.com) for Drag N’ Drop image uploads with image previews.
* Links uploaded to imgur are saved to mongodb using [Mongoose](http://mongoosejs.com/docs/unstable/index.html)

[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy)

## Running the app

```bash
$ git clone https://github.com/mukulsaini/node-image-upload-imgur.git
```

```bash
$ cd node-image-upload-imgur &&  npm install
```

```bash
$ npm start
```

Open the [link](http://localhost:3000) in the browser to see this working.

### MLab

Thanks to [MLab](https://mlab.com/) which provides 500MB free data upon signup which is perfect for such small experimental projects.

### LICENSE

The [Unlicense](https://github.com/kiok46/Pymongo-notification/blob/master/LICENSE)

license: Unlicense

repository: austin-hwang/node-image-upload-imgur

repo_name: austin-hwang/node-image-upload-imgur


text:
---
title: "Taskwarrior - Upgrading Taskserver"
---

# Upgrading Taskserver

Upgrading to Taskserver {{< label >}}1.1.0{{< /label >}} requires some configuration changes.
The required changes are mostly concerned with improvements to security and encryption.
Updating the software itself is straightforward.

## Upgrade the Software

This is simply a matter of shutting down the server, installing the new software, modifying the configuration as discussed below, and restarting the server.
Before doing this, please read the issues below, so that you will be prepared, and more secure.

## PKI

If you used self-signed certificates, and the scripts provided with Taskserver 1.0.0, then you will want to regenerate all your CA, CRL, server, client and user certificates using the updated scripts.

The scripts now properly use the `CN` field, and no longer use `SAN`s.
This is important for hostname verification, and required for `strict` validation.

Please note also that the PKI scripts provided use a certificate expiration of 365 days.
This means no certificate is valid after a year.
If you used the default scripts when you installed Taskserver 1.0.0, you may have already discovered this.

It is generally a good idea to expire and renew certificates.
Long-term certificates may need to be revoked using the CRL, so short-term certificates provide a dead-man\'s switch approach.

## Allow/Deny

The `client.allow` and `client.deny` configuration settings should be removed, as this feature has been removed from the server.
As it is easy to spoof a valid client, this technique offered no security.

## Trust

The new `trust` configuration setting determines how client certificates are validated.
Values maybe either `allow all` or `strict`.
The value `allow all` performs no client certificate validation.
This is not recommended.
The value `strict` causes the client certificate to be validated against a CA.

Note that using the `strict` value may require that your server certificates be replaced.
This depends on the data used to create your original certificates.
Taskserver PKI scripts now create certificates with a proper CN value.

## GnuTLS

Please bear in mind that [GnuTLS](https://gnutls.org) is a security product, and it is important that you use the most recent version available.
Please upgrade GnuTLS before building Taskwarrior and Taskserver.

We have received many reports of problems with older GnuTLS releases, specifically version 2.12.20 and earlier cannot complete handshake with a CRL.

Versions prior to 3.2 also suffer from significant memory leaks, which will take down your Taskserver over time.

In addition to benefiting from bug fixes and leak fixes, newer GnuTLS versions include new and more secure default ciphers and algorithms.
Security is important.

gha_language: CSS


text:
At the moment Psalm is over five times as popular as it was a year ago. That's great for the project, but it's also led to an equivalent increase in feature requests and bug reports. Every year the number of new issues roughly doubles – 50 per month in 2018, 90 per month in 2019, 180 per month in mid-2020.

The more issues get created, the harder it is for me (and one or two other regular contributors) to address them all. I’m slightly worried about burning out, so I’m asking for your help.

## How you can help

If you know PHP, you can probably be useful. Psalm is written in PHP, and much of its analysis is reasonably straightforward. I’m always happy to explain the more complicated bits to anyone who’s interested.

Whether it’s adding a feature, fixing a bug, or just cleaning up the codebase a bit, every little helps.

### Where to get started

I’ve added a GitHub tag called [Easy problems](https://github.com/vimeo/psalm/issues?q=is%3Aissue+is%3Aopen+label%3A%22easy+problems%22) that should provide you some low-hanging fruit.

There’s also a [contributing guide](https://github.com/vimeo/psalm/blob/master/CONTRIBUTING.md) that tells you how to test your code and, if you need, [a short guide to Psalm’s internals](https://github.com/vimeo/psalm/blob/master/docs/how_psalm_works.md).

### Don’t be afraid!

One great thing about working on Psalm is that it’s _very_ hard to introduce any sort of type error in Psalm’s codebase. There are almost 5,000 PHPUnit tests, so the risk of you messing up (without the CI system noticing) is very small.

### Why static analysis is cool

If you need another reason to help, the problem space is just thoroughly interesting.

Day-to-day PHP programming involves solving concrete problems, but they're rarely very complex. Psalm, on the other hand, attempts to solve a pretty hard collection of problems, which then allows it to detect a ton of bugs in PHP code without actually executing that code.

There's a lot of interesting theory behind the things Psalm does, too. If you want you can go very deep, though you don't need to know really any theory to improve Psalm.

Lastly, working to improve static analysis tools will also make you a better PHP developer – it'll help you think more about how values flow through your program.

## “Why can’t I pay you?”

Money’s great, but that's not what I'm after. There are a bunch of other PHP developers whose work I rely on, though – if you don't have time to support Psalm with code, you support Psalm indirectly by sponsoring these developers:

- [Sara Golemon](https://github.com/sponsors/sgolemon) - core PHP contributor & v8 release manager
- [Sebastian Bergmann](https://github.com/sponsors/sebastianbergmann) - creator of PHPUnit
- [Marco Pivetta](https://github.com/sponsors/Ocramius) - prolific userland developer who helps push Psalm forward

Lastly, if you work at a large company that uses Psalm regularly, consider encouraging your colleagues to contribute to its development!

gha_language: JavaScript


text:
# Library Management System
A library management system in .Net Framework using Repository Pattern and UnitOfWork.

## Getting Started

- Download the project
- Open project with VS
- Change the connection string to DB in configuration file in DAL project
- You are ready!

## Default Admin User:
	Login: Admin
	Password: test

## System Implementation

UI is implemented with WPF and Caliburn Micro Framework (MVVM). The Data Access Layer is implemented with Entity Framework 6.

The System supports Password Security. Using this system you can store all records about Books, Readers and their rents.

repository: diPhantxm/LibraryManagementSystem

repo_name: diPhantxm/LibraryManagementSystem


text:
# Topic

> 你是什麼星座？讓我們一起破解星座迷思吧！ (Horoscopes: Hate it or like it?)

> Those are horoscopes, right? They're purposely written vague enough so anyone can really fit and identify with them.

> 那些是星座，沒錯吧？他們故意寫得非常模糊，所以任何人都可以認同並對號入座。

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

Host: Ingrid

Today issue: Yes, I'm a Scorpio. I'm not that scary.

[Host record](https://cdn.voicetube.com/tmp/everyday_records/ingrid.wang_vt_50297/3043.mp3)

## learning points
1. _
	* horoscope   [ˋhɔrə͵skop] (n .) 星相；占星術
		- David's horoscope said that it's not a good day for him to leave his house he ignore the advice and went out for donut he got hit by a bus.
			+ David的星座表示，現在離開他的房子並不是一個好日子，他忽略了這個建議，然後出去吃了一輛他被公共汽車擊中的甜甜圈。
		- scope => 觀察儀器, telescope

2. _
	* purposely [ˋpɝpəslɪ] (adv.) 故意地；刻意地
		- Brooklyn dropped her handkerchief purposely(on purpose) to get the handsome man behind him to pick it up for her to her surprise the men stepped on it and walk away.
			+ Brooklyn故意放棄她的手帕，讓那個身後的英俊男子為她檢，讓她驚訝的是，男人踩到它並走開了。

3. _
	* vague [veg] (adj .) 含糊的；不明確的
		- vogue => 時尚(相似)
		- That is a new Vogue for taking pictures and dancing everybody is doing it.
			+ 這是一個新的時尚，用於拍照和跳舞，每個人都在這樣做。

4. _
	* identify  [aɪˋdɛntə͵faɪ] (v.) 認出；識別
		- The man cried uncontrollably after identifying her daughter who had been lost for seventeen years.
			+ 在確認失去了十七年的女兒後，這名男子無法控制地哭了起來。
		- Hannah Montana hid her identity as a pop star from her classmates having two different identities allows her to have the best of both worlds.
			+ Hannah Montana隱藏了她作為流行歌星的身份，她擁有兩種不同的身份，這使她能夠擁有兩全其美的完美世界。


text:
## Oyster Card Problem

### Problem

Model the following fare card system which is a limited version of London’s Oyster card system.

A user should be able to load a card with £30, and taking the following trips, and then viewing the balance.
- Tube Holborn to Earl’s Court
- 328 bus from Earl’s Court to Chelsea
- Tube Earl’s court to Hammersmith

Operation:

  When the user passes through the inward barrier at the station, their oyster card is charged
  the maximum fare. When they pass out of the barrier at the exit station, the fare is calculated and the maximum
  fare transaction removed and replaced with the real transaction (in this way, if the user doesn’t swipe out,
  they are charged the maximum fare).

  All bus journeys are charged at the same price.
  The system should favour the customer where more than one fare is possible for a given
  journey. E.g. Holburn to Earl’s Court is charged at £2.50.

For the purposes of this problem use the following data:

  #### Stations and zones:

  **Station Zone(s):**
  * Holborn 1
  * Earl’s Court 1, 2
  * Wimbledon 3
  * Hammersmith 2

  Fares:

  **Journey Fares:**

  * Anywhere in Zone 1 £2.50
  * Any one zone outside zone 1 £2.00
  * Any two zones including zone 1 £3.00
  * Any two zones excluding zone 1 £2.25
  * Any three zones £3.20
  * Any bus journey £1.80
  * The maximum possible fare is therefore £3.20.

### Solution

- #### Logical flow for card application
  Following is the logical flow
  - Prepare an instance of RuleContext. This ruleContext contains all the rules which are used to
  compute the fares between any two stations.
  - Set a maximum fare between any two stations.
  - Start writing the rules.
    - There is a fare amount associated with a rule.
    - A rule involves supplying all the combinations which qualify for rule execution
      - Provide a start-zone and end-zone in Combination's constructor and add this combination to the rule.
      - While a rule would be evaluated all possible combinations of this rule would be tested against the given journey
        and if any of them apply the rule would be deemed applicable
  - Load the rule (after adding any combinations to it) to the ruleContext
  - RuleContext is in turn used by FareCalculator to calculate the fare for a Journey.
  - A Journey is travel between two stations using a mode (Tube or Bus)
  - A card is used to keep track of the journey.
  - When swiped, it is checked whether a journey is in progress or not
    - In case, a journey is not in progress. We prepare an instance of journey and associate it with this card.
        - Here card is charged for the maximum fare.
  - When swiped again, and a journey is in progress.
    - Current station is set as end station of the journey.
    - Card is credited back with the maximum amount charged.
    - For this journey a fareAmount is calculated on the basis of applied rules.
    - Card is charged for this fareAmount

### Example
Complete example is available in AppTest.java class. Please refer to it.

### Build
./gradlew build

### Running test suite
./gradlew test


text:
# ProjectMeiva
Just a fun little personal day tracking application in Python, Flask, GoLang, Jinja, and PowerShell

I believe in the right tool for the right job.

This is fully functional for me, not for others at this time. That is my long term goal, but hours in the day prevent it.
For now it is more a professional demonstration of code in github.

# Purpose
To demonstrate I am capable of cross language performance in code.
I want to write a Unity app in C#, a golang gui interface, a powershell subset.. this is meant to demonstrate many things
I want to leverage docker to stand up instances on the fly

# Currently Demonstrates
Python
Flask
Jinja
ElasticSearch

repository: pixelrebirth/ProjectMeiva

repo_name: pixelrebirth/ProjectMeiva


text:
<img src="https://ondrolexa.github.io/apsg/apsg_banner.svg" alt="APSG logo" width="300px"/>

[![GitHub version](https://badge.fury.io/gh/ondrolexa%2Fapsg.svg)](https://badge.fury.io/gh/ondrolexa%2Fapsg)
[![Python testing](https://github.com/ondrolexa/apsg/actions/workflows/pythontest.yml/badge.svg)](https://github.com/ondrolexa/apsg/actions/workflows/pythontest.yml)
[![Upload Python Package](https://github.com/ondrolexa/apsg/actions/workflows/release.yml/badge.svg)](https://github.com/ondrolexa/apsg/actions/workflows/release.yml)
[![Documentation Status](https://readthedocs.org/projects/apsg/badge/?version=stable)](https://apsg.readthedocs.io/en/stable/?badge=stable)
[![DOI](https://zenodo.org/badge/24879346.svg)](https://zenodo.org/badge/latestdoi/24879346)

## What is APSG?

APSG is the package for structural geologists. It defines several new python classes to easily manage, analyze and visualize orientational structural geology data.

## Major changes in class names and API from version 1.0.0

APSG has been significantly refactored from version 1.0 and several changes are
breaking backward compatibility. The main APSG namespace provides often-used
classes in lowercase names as aliases to `PascalCase` convention used in
modules to provide a simplified interface for users. The `PascalCase` names of
classes use longer and plain English names instead acronyms for better
readability.

Check [documentation](https://apsg.readthedocs.org) for more details.

## Requirements

You need Python 3.8 or later to run APSG. The package requires [NumPy](https://numpy.org/) and [SciPy](https://www.scipy.org/), and [Matplotlib](https://matplotlib.org/).

## Quick start

APSG can be installed using pip:
```
pip install apsg
```
If you want to run the latest version of the code, you can install it from git:
```
pip install git+https://github.com/ondrolexa/apsg.git
```
Alternatively, you can download the package manually from the GitHub repository [https://github.com/ondrolexa/apsg](https://github.com/ondrolexa/apsg), unzip it, navigate into the package, and use the command:
```
python setup.py install
```
or
```
pip install .
```

#### Upgrading via pip

To upgrade an existing version of APSG from PyPI, execute
```
pip install apsg --upgrade --no-deps
```
Please note that the dependencies (Matplotlib, NumPy and SciPy) will also be upgraded if you omit the `--no-deps` flag; use the `--no-deps` ("no dependencies") flag if you don't want this.

### Conda

The APSG package is also available on `conda-forge` channel.

#### Current release info

| Name | Downloads | Version | Platforms |
| --- | --- | --- | --- |
| [![Conda Recipe](https://img.shields.io/badge/recipe-apsg-green.svg)](https://anaconda.org/conda-forge/apsg) | [![Conda Downloads](https://img.shields.io/conda/dn/conda-forge/apsg.svg)](https://anaconda.org/conda-forge/apsg) | [![Conda Version](https://img.shields.io/conda/vn/conda-forge/apsg.svg)](https://anaconda.org/conda-forge/apsg) | [![Conda Platforms](https://img.shields.io/conda/pn/conda-forge/apsg.svg)](https://anaconda.org/conda-forge/apsg) |

#### Installing apsg

Installing `apsg` from the `conda-forge` channel can be achieved by adding `conda-forge` to your channels with:

```
conda config --add channels conda-forge
```

Once the `conda-forge` channel has been enabled, `apsg` can be installed with:

```
conda install apsg
```

It is possible to list all of the versions of `apsg` available on your platform with:

```
conda search apsg --channel conda-forge
```

## Documentation

Explore the full features of APSG. You can find detailed documentation [here](https://apsg.readthedocs.org).

## Contributing

Most discussion happens on [Github](https://github.com/ondrolexa/apsg). Feel free to open [an issue](https://github.com/ondrolexa/apsg/issues/new) or comment on any open issue or pull request. Check ``CONTRIBUTING.md`` for more details.

## Donate

APSG is an open-source project, available for you for free. It took a lot of time and resources to build this software. If you find this software useful and want to support its future development please consider donating me.

[![Donate via PayPal](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=QTYZWVUNDUAH8&item_name=APSG+development+donation&currency_code=EUR&source=url)

## License

APSG is free software: you can redistribute it and/or modify it under the terms of the MIT License. A copy of this license is provided in ``LICENSE`` file.

repository: ondrolexa/apsg

repo_name: ondrolexa/apsg


text:
# W-FOPO
[![Build Status](https://travis-ci.com/ibegleris/w-fopo.svg?token=UafEdqSJuFtM7z2nYK1k&branch=master)](https://travis-ci.com/ibegleris/w-fopo)

The repository holds the model of a unidirectional single mode FOPO based upon the system shown in:

It is extended to two degenerate modes and includes a variation of diameter. Pulse propagation is conducted using the GNLSE

There is now a build script that downloads and installs miniconda with all the equilavent packadges needed. Beware to have sudo now for MPICH if not already installed.

repository: ibegleris/w-fopo

repo_name: ibegleris/w-fopo


text:
---
title: Other things to do
description: 'Other things to do at Alumni Reunion Weekend 2023'
layout: page

category: aw-2023

og-image: "https://alumniweekend.ucsc.edu/assets/images/2023/og-image.jpg"

published: true

---

{: .underline}
# {{ page.title }}

## [UC Santa Cruz Arboretum](https://arboretum.ucsc.edu/)

**Free admission Friday, April 14-April 16**

Enjoy fresh air and a relaxing stroll through the [UCSC Arboretum and Botanic Garden](https://arboretum.ucsc.edu/index.html), home to an extensive collection of plants from Mediterranean climates including South Africa, Australia and the central coast of California. While perusing the gardens, enjoy watching the native wildlife in their natural habitat. Alumni will receive free admission for the weekend including complimentary parking in our Visitor Parking lot. During your visit, please check-in at [Norrie’s Gift and Garden Shop](https://arboretum.ucsc.edu/shop/index.html) where you can also purchase one of a kind gifts and Arboretum-cultivated plants for your home garden. All proceeds support the ongoing maintenance of the Arboretum & Botanic Garden. Arboretum is open from 9 am-5 pm and Norrie’s Gift Shop is open from 10 am-4 pm.

---

## [UC Santa Cruz Bookstore](https://slugstore.ucsc.edu/)

**15% discount on apparel and gift items**

Peruse through the bookstore and check out a large selection of UC Santa Cruz merchandise. Pick-up new UCSC gear to bring the spirit of your alma mater with you as your return home from your weekend in the redwoods. The Bookstore will offer a 15% discount on apparel and gift items on Saturday, April 15. They will be open from 10 am-3 pm.

---

## [Banana Slug Day](https://admissions.ucsc.edu/banana-slug-day)

**Saturday, Apr 15 at 9:00 a.m. - 5:00 p.m.**

This is a one day event on Saturday, April 15, 2023 hosted by Undergraduate Admissions. Campus will be buzzing with admitted students and their families. A student resource fair will take place including student performances.

---

## [Porter Sesnon Galley Exhibit - Remove by X: UC Santa Cruz Arts Ephemera from the 20th Century](https://art.ucsc.edu/sesnon/removebyx)

**Saturday, Apr 15 at 12:00 a.m. - 5:00 p.m.**

Appearing overnight and often disappearing the next, posters advertising senior recitals, art exhibitions, and performances form the dynamic visual backdrop to life on the UC Santa Cruz campus. Remove by X brings together a selection of this ephemera from the 20th century to provide a rich overview of the UCSC Division of the Arts and its creative past. This exhibit is truly one of a kind as alumni peruse the gallery and walk down memory lane from their time on campus. The Porter Sesnon Gallery will be open from 12 pm-5 pm on Saturday, April 15.

repository: ucsc/site-alumniweekend

repo_name: ucsc/site-alumniweekend


text:
# LGBTQIA+ Ally program

At IBM we have an initiative in play that allows staff members to learn more about the LGBTQIA+ community and learn how to support said members in the work place by becoming a person who can be approachable and support your fellow members of staff regardless of race, gender, orientation, age, disability or belief. The core idea of the program is to provide a wholesome inclusive environment where people can be themselves without fear of being ostracized.

The core ideas of the program are as follows:

- Learn about diversity in the work place.
- Talk to others about diversity.
- Learn about the various orientations and pronouns in play in the LGBTQIA+ community.
- Respect your fellow colleagues.


text:
# Caption Script Format

Many dedicated FlipFlip users like to flash big words on top of their slideshows. This feature is driven by
_caption scripts_ that say what to display, when, and how it looks.

**All times are in milliseconds unless otherwise specified.**

Here's a small example showing the basics:

```
setBlinkDuration 300
setBlinkDelay 100
setBlinkGroupDelay 1200
setCaptionDuration 2000
setCaptionDelay 1200

bigcap YOU LOVE FLUFFY KITTENS
blink KITTENS / ARE / YOUR / LIFE
cap Cuddle all the kittens forever because you love them.
```

Upload your script to [Pastebin](https://pastebin.com) or [Hastebin](https://hastebin.com) to share it with others, or keep it as a text file on your computer.

## Basic commands

?> You can insert a newline by adding `\n` to your script text

#### `cap <TEXT>`

Show medium-sized text for `captionDuration` ms, then wait `captionDelay` ms.

#### `bigcap <TEXT>`

Show big text for `captionDuration` ms, then wait `captionDelay` ms.

#### `blink <TEXT> / <TEXT> / <TEXT>`

For each bit of text between the slashes, show that text for `blinkDuration` ms, then wait `blinkDelay` ms.
When they are all done, wait `blinkGroupDelay` ms.

#### `count <START> <END>`

Count from START to END (START and END are whole numbers). Display each number for `countDuration` ms, then wait
`countDelay` ms. When they are all done, wait `countGroupDelay` ms.

You can also show a circular progress bar around the count by using these commands:
```
# Enables progress bar (default false)
setShowCountProgress true

# Sets progress bar scale (default 500)
setCountProgressScale 1000

# Sets the color of progress bar at the designated number
setCountProgressColor 2 #f44336
setCountProgressColor 5 #ffeb3b
setCountProgressColor 10 #4caf50

# Setting this as true will offset the total, so that --in this example-- 1 is the end (0)
setCountProgressOffset true

# Setting this to true will make the count color match the progress color (this works even without the progress enabled)
setCountColorMatch true

count 10 1
```

#### `wait <MILLISECONDS>`

Wait `<MILLISECONDS>` ms.

#### `advance`

Advances the scene 1 image forward.

## Changing how things are shown

?> See [examples](#examples) for ideas.

#### Timing Functions

Each command (besides `wait`) has its own "timing functions" for Duration, Delay, and GroupDelay values. These are the
same [timing functions](options.md#timing) as everywhere else in FlipFlip:

* `constant` - Lasts for exactly `MIN_MS`
* `random` - Lasts for random time between `MIN_MS` and `MAX_MS`
* `wave` - Gradually shifts back and forth between `MIN_MS` and `MAX_MS`
* `bpm` - Timing is based on current audio's BPM
* `scene` - Changes with current scene

You can set timing functions by using these commands (default is `constant`):
```
setBlinkTF <TF>
setBlinkDelayTF <TF>
setBlinkGroupDelayTF <TF>

setCaptionTF <TF>
setCaptionDelayTF <TF>

setCountTF <TF>
setCountDelayTF <TF>
setCountGroupDelayTF <TF>
```

#### Duration/Delay

These commands can be used to set the `MIN_MS` and `MAX_MS` for action's duration (how long text is shown) and delay (how
long to wait after showing text):

```
setBlinkDuration <MIN_MS> <MAX_MS>
setBlinkDelay <MIN_MS> <MAX_MS>
setBlinkGroupDelay <MIN_MS> <MAX_MS>

setCaptionDuration <MIN_MS> <MAX_MS>
setCaptionDelay <MIN_MS> <MAX_MS>

setCountDuration <MIN_MS> <MAX_MS>
setCountDelay <MIN_MS> <MAX_MS>
setCountGroupDelay <MIN_MS> <MAX_MS>
```

?> If only the first number is provided, only the `MIN_MS` (constant) value will be updated

#### Timing Function Modifiers

You can control the **wave rate** of `wave` timings and **bpm multiplier** of `bpm` timings using the following commands:

```
# WAVE_RATE is an integer between 0 and 100

setBlinkWaveRate <WAVE_RATE>
setBlinkDelayWaveRate <WAVE_RATE>
setBlinkGroupDelayWaveRate <WAVE_RATE>

setCaptionWaveRate <WAVE_RATE>
setCaptionDelayWaveRate <WAVE_RATE>

setCountWaveRate <WAVE_RATE>
setCountDelayWaveRate <WAVE_RATE>
setCountGroupDelayWaveRate <WAVE_RATE>
```
```
# BPM_MULTI is a decimal number between 0 and 5

setBlinkBPMMulti <BPM_MULTI>
setBlinkDelayBPMMulti <BPM_MULTI>
setBlinkGroupDelayBPMMulti <BPM_MULTI>

setCaptionBPMMulti <BPM_MULTI>
setCaptionDelayBPMMulti <BPM_MULTI>

setCountBPMMulti <BPM_MULTI>
setCountDelayBPMMulti <BPM_MULTI>
setCountGroupDelayBPMMulti <BPM_MULTI>
```

#### Position

The position of each action command can also be changed by using these commands:

```
# POS is a postive or negative integer

setBlinkX <POS>
setBlinkY <POS>

setCaptionX <POS>
setCaptionY <POS>

setBigCaptionX <POS>
setBigCaptionY <POS>

setCountX <POS>
setCountY <POS>
```

?> This value is relative to each command's default position.

#### Opacity

In addition to the global opacity slider, you can also set the opacity within a script on a per-command basis:

```
# OPACITY is a number between 0 and 100 (default is 100)

setBlinkOpacity <OPACITY>
setCaptionOpacity <OPACITY>
setCountOpacity <OPACITY>
setBlinkOpacity <OPACITY>
```

## Advance Commands

### Timestamps

Rather than use Delay values to time your script, you use timestamps to ensure your commands execute _exactly_ when you
want them to. This can be particularly useful when writing a script with a related audio file:

```
<TIMESTAMP> <COMMAND>
```

Where `TIMESTAMP` is in one of these format:
* `HH:MM:SS.mmm`
* `HH:MM:SS`
* `MM:SS.mmm`
* `MM:SS`
* `SS.mmm`
* `SS`

```
0 setBlinkDuration 300
0 setBlinkDelay 100
0 setCaptionDuration 2000

00:00 bigcap YOU LOVE FLUFFY KITTENS
00:03.2 blink KITTENS / ARE / YOUR / LIFE
00:06 cap Cuddle all the kittens forever because you love them.
00:09.2 bigcap YOU LOVE FLUFFY KITTENS
00:12.4 blink KITTENS / ARE / YOUR / LIFE
00:15.2 cap Cuddle all the kittens forever because you love them.
```

?> Timestamp scripts **do not loop**

?> **Setters need timestamps** as well to be used in the script. For this reason, we recommend you **separate
timestamp and non-timestamp scripts**, as using both in the same file can have unexpected effects.

### Audio

You can make audio tracks play during your script by first storing them, and then calling `playAudio <ALIAS> <VOLUME>`.
The audio track will start at the beginning and play until the end.

```
# storeAudio <FILE> <ALIAS>
storeAudio "C:\audio\finger_snap.wav" snap

<other caption syntax>
# playAudio <ALIAS> <VOLUME: Default 100>
playAudio snap 25
```

### Random phrases

If you store some phrases like this:

```
storePhrase kittens are fluffy
storePhrase doggos are floofy
```

then you can use a random one in place of any text like this:

```
cap $RANDOM_PHRASE
blink $RANDOM_PHRASE / $RANDOM_PHRASE
```

#### Phrase Groups

You can store and use phrases in specific groups like this:

```
# GROUP is an integer between 1 and 9

storePhrase $<GROUP> <PHRASE>
cap $<GROUP>
blink $<GROUP> / $<GROUP>

# e.g.
storePhrase $1 Banana Cream Pie
storePhrase $1 Oreo Cheesecake
storePhrase $2 Vanilla Cake
storePhrase $2 Chocolate Cake

blink $1 / IS SO MUCH BETTER THAN / $2
```

### Tag phrases

Similar to Random phrases, "Tag phrases" are associated with the tag(s) of the currently visible source.

Visit the [Tag Manager](tagging.md#manage-tags) to edit each tag's phrases. Then you can use a random one in
place of any text like this:

```
cap $TAG_PHRASE
blink $TAG_PHRASE / $TAG_PHRASE
```

## Examples

Random timing:
```
setBlinkDelayTF random
setBlinkGroupDelayTF random

setBlinkDelay 100 1000
setBlinkGroupDelay 1000 3000

blink KITTENS / ARE / YOUR / LIFE
```

Wave timing:
```
setBlinkDelayTF wave
setBlinkWaveRate 75

setBlinkDelay 100 1000
setBlinkGroupDelay 0

blink KITTENS / ARE / YOUR / LIFE
```

BPM timing:
```
setBlinkGroupDelayTF bpm
setBlinkGroupDelayBPMMulti 2

setBlinkDuration 100
setBlinkDelay 100

blink KITTENS / ARE / YOUR / LIFE
```

Scene timing:
```
setBlinkDelayTF scene

setBlinkDuration 700
setBlinkGroupDelay 0

blink KITTENS / ARE / YOUR / LIFE
```

Position text:
```
# Blink in each corner
setCaptionDuration 500
setCaptionDelay 100

setBigCaptionX -80
setBigCaptionY 80
bigcap TOP LEFT

setBigCaptionX 80
setBigCaptionY 80
bigcap TOP RIGHT

setBigCaptionX 80
setBigCaptionY -80
bigcap BOTTOM RIGHT

setBigCaptionX -80
setBigCaptionY -80
bigcap BOTTOM LEFT
```

repository: ififfy/flipflip

gha_language: TypeScript

repo_name: ififfy/flipflip


text:
---
title: "Grow Africa, Grow Cardano"
linkTitle: "Grow Africa, Grow Cardano"
type: docs
hide_feedback: true
---

How do we seed and grow Cardano in Africa?

Fund Size: **$200,000 USD paid in Ada**

[Campaign page](https://cardano.ideascale.com/a/campaign-home/26108) and [browse ideas](https://cardano.ideascale.com/a/ideas/top/campaign-filter/byids/campaigns/26108/stage/unspecified).

## Campaign Brief

### Africa is fertile ground for the adoption of Cardano.

Having a funding round that focuses on Africa is a win, win, win scenario. Africa wins by getting some backing. Commercial projects that are already building up in Africa win, because they get the signal of support from our community. Cardano holders win when there is an encouraging environment for mass adoption anywhere.

Focussing on Africa is a strategy that has often been promoted and is openly pursued by IOG and Charles Hoskinson

The ROI is likely to be high because community sponsored projects are better run in young and developing economies.

## What this is:

A call to activate the Cardano community's ability to recognise, risk and reward this opportunity to make the world a better place.

## What this is not:

This is not a proposal that needs active work by the proposers, it is a vision that needs votes to become an achievement. If it succeeds the beneficiary is the whole Cardano community. It is a call to close our prejudices and open our eyes, hearts and minds to good people who lack the environmental benefits many of us were born with. Giving them an opportunity to show that circumstances are not something they need charity to rise above and succeed. All that is required is the equal opportunity to succeed or fail that many of the rest of us enjoy, but with their hinderances and hurdles lessened and their choices remaining in their own hands.

## Regardless of whether it succeeds or fails:

I have had my eyes opened and my mind changed about the potential of Africa. From Africa's bankers in the west, ex-pats with vision and heart, youth with passions, documentaries that challenged my assumptions and Cardano community members with so much to give.

## Why is it important?

Cardano shines when adoption is global. Africa currently has young entrepreneurs, great growth potential and a government contract imminent.

## How does success look like?

- Cardano is considered the best public block-chain operating in Africa
- Cardano projects in Africa are not isolated but networked and growing

## Key Metrics to measure

- Number of purely African participants
- Number of Outside African participants with a significant partnership with African residents
- Feedback on progress from successful proposals regardless of failure or success
- Novelty and appropriateness of solutions (hard to quantify, easy to see)
- Number of African Fund5 proposals that do not need further funding to keep operating

## Prior Challenges

1. [Fund 5: Grow Africa, Grow Cardano](https://cardano.ideascale.com/a/campaign-home/25947)

## References

1. [Original challenge setting proposal](https://cardano.ideascale.com/a/dtd/Grow-Africa-Grow-Cardano/333079-48088)


text:
# Procedures and code reuse

## Learning objectives

1. Understand the concept of a function
2. Extracting common code from duplicated sequences
3. Knowing the syntax for function declaration in Python
3. (Optional) API/ABI concepts, consistency in conventions between calls

## Motivation

Start the practical as the beginning of the lesson. Ask the pupils to know design the minutes and hours hand of the clock. Ideally, the pupils will notice the tediousness an error prone process of code duplication. Otherwise, once returned to their seats, ask them what they would do if they needed to get the turtle to draw out 100 clock hands. This should, motivate the idea of code reuse. Talk about time savings complexity and error reduction associated with code reuse.

## Simple procedures

Introduce the python syntax for defining a function, that is:
```python
def func(arg0, arg1, ...):
    body...
    return expr # optional component

# Associated call
func(2, "Hello")
```

Expect some resistance when it comes to arguments and their value? Make the analogy with a chef de cuisine and labelled
boxes of ingredients.

This is a good time to introduce the importance of naming functions, their arguments and variables if the pupils know
about them.

## Practical sample code

The first practical element is to provide a function to draw a filled equilateral triangle. The students need to extract
their old code for the triangle and call it at the call site. Now is a good time to introduce the `fillcolor()`,
`begin_fill()` and `end_fill()` primitives to the class. The second step consists in abstracting away the clock hand
drawing routine. This is more involved as it requires multiple nested function calls, but it shows the benefits of
compositional thinking. A sample solution is:

```python
def draw_filled_triangle(color, length):
    fillcolor(color)
    begin_fill()
    right(90)
    forward(length / 2)
    left(120)
    forward(length)
    left(120)
    forward(length)
    left(120)
    forward(length / 2)
    end_fill()

def draw_hand_shape(head_color, length, head_length):
    pensize(3)
    forward(length)
    draw_filled_triangle(head_color, head_length)
```

repository: daniel-grumberg/turtle-graphics

repo_name: daniel-grumberg/turtle-graphics