Goploader
Because file sharing is meant to be easy
{{ else }}{{ end }}
Introduction
Presentation
This is a page about the
goploader
project. The philosophy of goploader is that it should be easy to share files from your terminal. If you want to share a file with a few of your friends for example.
This project is composed of a client and a server.  If you want people to use your service with the official client, they will have to modify
the ~/.config/goploader.conf.yml
file that is created on the first run.
Features
- HTTPS only using Let's Encrypt and Caddy Server Note : This applies to https://up.depado.eu, you're free to serve the content using another webserver and without https if you decide to host it on your own machine.
- Upload directly from
stdin
. - Upload a file by giving it as an argument to the client.
- All files are encrypted upon reception and decrypted when served.
- The key to decrypt files is not saved on the server.
- Curl compliant.
Motivation
First of all, I created goploader as a fun exercise to improve my Golang skills. I wanted to create something useful. Goploader was inspired by the way 0bin works, but I knew I couldn't encrypt files in the browser mainly because I didn't want to use the browser to use my service. Basically I merged omploader (which is a dead service now) and 0bin, and the idea was to have a client that would allow painless file upload while keeping the fact that the server quite never knows what's being uploaded. Also the curl compatibility is a plus, and allows people to use the service without any additional package.
How it works
The server and client aren't using a peculiar API, instead they just use multipart forms. This way, a curl command is simple to understand, and simple to use. This ensures that anyone needing to upload files to the server can do it even without a graphic interface or without advanced knowledge in networking.
When the server receives an upload request, it does multiple steps.
- Create a unique identifier for the resource (1)*
- Create a unique key to encrypt the received data (2)*
- Create an AES cipher that uses the key generated in the second step*
- Pipe the file reception to that AES cipher*
- Pipe the output of the AES cipher to a file on disk*
- Process the whole file through that pipe
- Store the unique identifier (1) along with the name of the file and delete date in database
- Return the URL of the resource to the client in the form [scheme][name server]/v/(1)/(2)
All the steps with a * at the end are executed before receiving the file.
Some notes about the file processing
- The file is never read fully in memory. It is buffered, and immediatly piped to the AES cipher. This ensures that the file is never fully stored in RAM unencrypted.
- The length of encryption/decryption key can be customised in the configuration file of the server. It defaults to
10
. - The server never stores the encryption/decryption key. It is generated once to process the file and is immediatly forgotten once given back to the user.
Technologies
The server and client try to keep things minimal.
-
Client
- Network part is pure Go
- github.com/atotto/clipboard : Clipboard capabilities.
- github.com/cheggaaa/pb : Progress bar capabilities.
- github.com/ogier/pflag : Posix flags.
- github.com/mitchellh/go-homedir : Home directory detection.
-
Server
- github.com/GeertJohan/go.rice : Resource embedding.
- github.com/gin-gonic/gin : HTTP framework.
- github.com/boltdb/bolt : Embedded key/value datastore.
- github.com/ogier/pflag : Posix flags.
- github.com/dchest/uniuri : Unique URI generator.
Disclaimer and License
As specified multiple times to people interested in the project, I don't provide any kind of warranty. People might tamper with the code on their own server, the only thing I can tell is that the version that runs on my machine is the exact version that is hosted on the Github repository. As a side note, I do store the IP of people uploading files to https://up.depado.eu for debugging purposes, although I never store the decryption key.
The MIT License (MIT) Copyright (c) 2015 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Client
Binary Downloads
Here are the download links for the client. For a more up to date version, consider installing
Go
on your computer and compile the client from the Github source code.
Archlinux
If you're running Archlinux, there is a goploader-client-git
package in AUR.
yaourt -S goploader-client-git
Thanks to krion for setting up the AUR package
Documentation
On the first run, goploader will try to read from ~/.config/goploader.conf.yml
. A default configuration will be written in this file if it can't be found. Also, if the ~/.config/
directory doesn't exist, it will be
created. This will be executed only once, you'll get a single line of log the first time you'll use the client.
Note : If you want to use another server than mine (a friend of yours installed the server or your own server), you'll have to edit this file to point to your service.
Here is a list of the accepted arguments of the client :
| Short | Long | Default | Description |
|---|---|---|---|
-c
|
--clipboard
|
false | Copies the returned URL directly to the clipboard (needs
xclip or
xsel ) |
-d
|
--delay
|
0 | Defines a delay before the program executes. In the form of
10s /
2m /etc… |
-n
|
--name
|
""
|
Specify the filename you want. This will be the filename of the file when downloading it or viewing it. When uploading a file, defaults to the name of the file. When uploading from stdin, defaults to
stdin . |
-p
|
--progress
|
false | Displays a progress bar while uploading the file. Shows ETA, current network speed, percentage and size uploaded. |
-s
|
--screenshot
|
false | Takes a screenshot and directly uploads it. Works nicely with the
delay option. Note : The import command must be available. |
-t
|
--tee
|
false | Displays the content on
stdout whever you read from
stdin or a file. |
-v
|
--verbose
|
false | Activates the debug logs. Useful for troubleshooting. |
-w
|
--window
|
false | When using the
screenshot , this option allows you to select a window or a zone to screenshot before uploading it. |
-l
|
--lifetime
|
1d | Define the lifetime of your file on the server. Basically you need to choose between 30m, 1h, 6h, 1d, 1w which are the equivalent for 30 minutes, 1 or 6 hours, 1 day, and 1 week. |
-o
|
--once
|
false | Your upload will be visible only once and then deleted from the server |
These options can be activated separately. For example
goploader --progress --delay="5s" myfile.txt
can be written
goploader -pd 5s myfile.txt
. All the short arguments can be concatenated on the condition that they are all boolean except the last one that can be a boolean or take a value.
Examples
Take a screenshot of the whole screen after 5 seconds, upload it with a progress bar and copy the returned URL to the clipboard :
$ goploader --progress --screenshot --delay="5s" --clipboard
Long Options
$ goploader -pscd 5s
Short Options
Select a windows or zone, screenshot that and upload it :
$ goploader --screenshot --window
Long Options
$ goploader -sw
Short Options
Upload a file with a progress bar :
$ goploader -p myfile
Argument
$ goploader -p
< myfile
Stdin
$ cat myfile | goploader -p
Stdin
Note : When the datasource is stdin, the total size of the file (or the total amount of text a command yields) can't be calculated
that's why the progress bar will only display the upload speed.
File Manager Integration
If you want, you can add an entry to the contextual menu of your file manager to upload a file. The trick is to use the .desktop
files and to copy the returned URL to your clipboard once the file is uploaded. Here is an example
goploader.desktop
that you can put in your ~/.local/share/file-manager/actions/
directory :
[Desktop Entry]
Type = Action
Tooltip = Upload file on Goploader
Name = Upload on Goploader...
Profiles = goploader_onfile;
[X-Action-Profile goploader_onfile]
MimeTypes = all/allfiles;
SelectionCount = =1
Exec = goploader -c %d/%b
Curl
Usage
One of the main goal of goploader is the ease of use. That's also why the goploader server doesn't use a JSON API, to guarantee that any user can upload files painlessly.
You can use this service without a client, simply by issuing curl commands.
$ curl -F<EMAIL_ADDRESS>https://up.depado.eu/
Your file will be named myfile.txt
$ curl -F name="myamazingfile!" -F<EMAIL_ADDRESS>https://up.depado.eu/
Your file will be named myamazingfile!
$ cat myfile.txt | curl -F name="stdin" -F file=@- https://up.depado.eu/
Reads data from stdin
$ curl -F file=@- https://up.depado.eu/ < myfile.txt
Another way of uploading a file
$ curl -F file=@- -F duration=1w https://up.depado.eu/ < myfile.txt
Specify the lifetime of your file (one week in that example, see the client's documentation for all the avaiable options)
$ curl -F file=@- -F once="true" https://up.depado.eu/ < myfile.txt
Specify that the file should only be visible once and then deleted from the server.
File Manager Integration
If you want, you can add an entry to the contextual menu of your file manager to upload a file. The trick is to use the .desktop
files and to copy the returned URL to your clipboard once the file is uploaded. Here is an example
goploader.desktop
that you can put in your ~/.local/share/file-manager/actions/
directory :
[Desktop Entry]
Type = Action
Tooltip = Upload file on Goploader
Name = Upload on Goploader...
Profiles = goploader_onfile;
[X-Action-Profile goploader_onfile]
MimeTypes = all/allfiles;
SelectionCount = =1
Exec = curl -F file=@%d/%b https://up.depado.eu/ | xclip
You will need xclip to copy the returned URL to your clipboard.
Server
Downloads
If you wish, you can install the
goploader
server. You can either compile it from the source code if you have a specific architecture or download the Linux 64-Bit or ARMv7 version with the link below.
Types of Downloads
- The “Standalone” distribution contains only a binary. All assets and templates (html files) are included directly in the binary. If you don't intend to modify those assets, this distribution is for you.
- The other distributions contains a binary for the server and the folders containing the assets so that you can freely modify them to your preferences. Please don't touch the footer though, giving credit to the author of the software helps a lot.
- “All Cross-Compiled Clients” can be used if you want to serve this very page and distribute the clients. Simply extract this archive so that the binaries are in the
goploader-server/releases/clients/
directory. - “All Servers Releases” can be used if you want to serve this very page and distribute the server. Simply extract this archive so that the included archives are placed in the
goploader-server/releases/servers/
directory.
You don't need to create a
conf.yml
file. If you run the server and the said file is absent or have missing fields, the server will enter setup mode in which you will be able to configure your server on a web page. It will then marshal the configuration
to the said
conf.yml
file and you will be able to run the server once again which will work as expected.
This very page is served by the goploader server itself. You can disable it by setting the fulldoc
option to false (while doing your setup or directly in the configuration file). After that you're free to modify the templates/welcome.html
to whatever you want.
If people want to use your service, they'll have to modify the configuration file that is created in their configuration directory : ~/.config/goploader.conf.yml
.
Setup
Web Setup
There are currently two ways of configuring a goploader server. You can either run the binary a first time and follow the setup instructions in your browser (it will first run on the 8008 port, so make sure this port is available).
./server --initial
Please go to http://<IP_ADDRESS>:8008 to setup goploader.
This step will generate a conf.yml
file next to your binary file. This is the configuration file of your service. You can freely modify it, keep in mind that you'll need to restart the service each you modify it so the changes
are applied.
The conf.yml
File
The other solution is to directly create a conf.yml
file next to the binary (or wherever you want, you can actually specify a configuration file with the -c (--conf)
flag.)
| Key | Description | Example Value |
|---|---|---|
name_server
|
The server name to use. This is used to return correct URLs to the clients. | up.depado.eu |
upload_dir
|
The local or absolute path where the files should be uploaded to. | up/ |
db
|
The local or absolute path of the database, along with its name. | goploader.db |
port
|
Port on which the server should listen. | 8003 |
uniuri_length
|
Length of the unique identifier for each uploaded file. | 10 |
size_limit
|
The maximum upload size the server should accept in Mo. | 20 |
disk_quota
|
The maximum size of the total uploaded (and currently served) by the server in GB. 0 to disable. | 0 |
fulldoc
|
Whether or not to display the full documentation of goploader (what you're reading right now). | true |
loglevel
|
Defines a level for the logs. Choices are "debug", "info", "error", "disabled". The names are pretty explicit. "info" is the most useful one. | info |
stats
|
Display or not the statistics on the main page. Note that even when setting this to false, statistics will still be gathered. | true |
sensitive_mode
|
If web interface is activated, hide all information and only display the file upload form. | false |
Sensitive Mode
This is actually a really important setting. If you know the server will be used to host sensitive information, please set this to true
. This will disable any information if the web interface is activated. For example, there
won't be any footer, the project's name won't be displayed, only the file upload form will. This is a simple way of not affiliating me to your project/company/organization. This setting will obviously override the fulldoc
and stats
settings as there won't be anything displayed on the page.
Running
Run with Supervisor
I enjoy supervisor for its ease of use and the control it offers on the process. You can run the goploader server using a configuration file that could look like that :
[program:goploader]
directory=/home/youruser/goploader/
command=/home/youruser/goploader/server
user=youruser
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/goploader_stdout.log
stderr_logfile=/var/log/supervisor/goploader_stderr.log
Of course you need to replace youruser
with the user you installed goploader with.


--- layout: default title: Bitcoin.com Developer Platform | About banner: hero.jpeg H1: About subtitle: Bitcoin.com’s developer platform secondSubtitle: Developer Tooling, Cloud, and Market --- {{> about-header}}
Bitcoin.com’s new developer plaform is based on the popular BITBOX javascript framework which has been downlaoded 36,000+ times from 100+ countries. Offering utility methods for Mnemonics, HDNodes, ECPairs, Crypto, Address conversion, Transactions and much more.
36,000+ downloads
100+ countries
The BCH JSON RPC over HTTP including a fully documented and interactive GUI which developers can use to test their ideas and confirm their code is making proper API calls.
Blockchain-as-a-Service. Infrastructure to deploy and scale your apps. An ecosystem of add-ons for data, monitoring, logging, metrics, testing and more all built w/ BITBOX.
Paid downloads, streaming media, in-app purchases, tokens and more ways for you to monetize.


We take pride in our work, and it shows. Our priority is that you walk out of our doors with a smile on your face. And the best way to do that is to have you smile when you look in the mirror. Your one-stop-shop for all of your beauty needs, we offer cuts, colors, waxings, manicures, pedicures, and permanent eyebrows. We are excited to have you be a part of our family.
 If you are looking for sharp, you've found it here at Jeff's Barbershop. We like to build solid relationships with our clients, so we know what you like and you know the quality to expect. Men's Haircuts - $12 -- Military Members - $10
Offering manicure and pedicure essentials, we want to truly make you feel beautiful. We provide acrylic nails and gel polish and general maintenance. Please visit us in person for more details.
As women, we know the constant struggle of achieving those perfect eyebrows, and the immense amount of time we spend maintaining that look. At our salon, we can fix your troubles. We will work together with you to find the perfect frame to accentuate your eyes, and can eliminate the work for you, so you wake up with the perfect brows.


{% extends '_layouts/layout.html' %} {% block page_title %} {% if practiceName %} Register with {{ practiceName }} {% else %} {{serviceName}} {% endif %} {% endblock %} {% block content %}
This application is made up of two parts.
An NHS number is 10 digits, for example<PHONE_NUMBER>
You can find your NHS number:
This is to help {{ practiceName }} find your medical records.
You’ll be asked questions about any allergies, medication and your general health.
This is to help {{ practiceName }} understand your needs.


A form constraint.
Defines a set of built-in constraints.
Validation was a failure.
A validation error.
A validation result.
This object provides helpers for creating Constraint
values.
Defines a set of built-in constraints.
This object provides helper methods to construct Invalid
values.
Validation was a success.
Contains the validation API used by
Form
.For example, to define a custom constraint:


Aron Tseggai lives near cows in Amsterdam and builds websites.
He has worked as a freelancer for clients such as Le Wagon Amsterdam and The Pokot Resource Centre.
Made by Aron Tseggai.
Built in just two hours. This very simple landing page uses minimal code, but catches the eye through motion.
Design by Stefanie Tseggai and Aron Tseggai.


The foolscap was so large that it created a handicap for the man trying to fit it into the hubcap of his car, and so he decided to find something else he could use instead. [G|D]
The icy icecap on his head gave him the look of a madcap, but his kneecaps were warm enough to protect him from the freezing temperatures. [G|D]
After a long day, he put on his nightcap, gave a quick recap of his accomplishments, and then found the redcap attendant to help him with his luggage. [G|D]
On his way to the airport, he saw a man wearing a bright whitecap and a skullcap to protect him from the sun reflecting off the skycap of clouds. [G|D]


Volunteer Activities
- Staff of NAIST GSK Recycling Club
-
Provided assistance for graduated students to donate used items
-
Hold a Recycling Market for new students to pick up desired items
- February 2021 - April 2021
- Organizer of BarCamp Bangkhen 2015
-
Managed sponsorship plans and communicated with companies/organization
-
Reserved venues (e.g., event hall, parking lot, etc) for the event day
- June 2015 - November 2015
- Organizer of BarCamp Bangkok 2014
-
Prepared the event hall before the actual day
-
Managed the registration booth and give away souvenirs


Error!
Oops. We have encounter an error! Please try again! Calm Down and dont get stressed over it!!


|
G24Lib
A set of convenient classes, functions and other utilities mainly for quickly writing numerical code. Provides relatively easy integration with CUDA, general Runge-Kutta methods, linear equation solvers and more.
|
Defines g24_lib::point
, a (mostly deprecated) dynamic version of g24_lib::fspoint
.
More...
Go to the source code of this file.
Classes | |
| class | g24_lib::point< Type, indexer > |
A dynamically sized array of type Type . Mainly to be used as an N-dimensional vector in mathematical or physical contexts. More... | |
Namespaces | |
| g24_lib | |
| The namespace where all the library resides. | |
Functions | |
| template<class Type , class indexer > | |
| g24_lib::point< Type, indexer > | ceil (const g24_lib::point< Type, indexer > &p) |
Returns a point whose elements are the ceil of those of the input point . More... | |
| template<class Type , class indexer > | |
| g24_lib::point< Type, indexer > | ceilf (const g24_lib::point< Type, indexer > &p) |
Returns a point whose elements are the ceilf of those of the input point . More... | |
| template<class Type , class indexer = g24_lib::Definitions::default_unsigned_indexer> | |
| double | fabs (const g24_lib::point< Type, indexer > &p, const double num=2.0) |
Calculates the norm of a vector using fabs for its elements. More... | |
| template<class Type , class indexer = g24_lib::Definitions::default_unsigned_indexer> | |
| float | fabsf (const g24_lib::point< Type, indexer > &p, const float num=2.0) |
Calculates the norm of a vector using fabsf for its elements. More... | |
| template<class Type , class indexer > | |
| g24_lib::point< Type, indexer > | floor (const g24_lib::point< Type, indexer > &p) |
Returns a point whose elements are the floor of those of the input point . More... | |
| template<class Type , class indexer > | |
| g24_lib::point< Type, indexer > | floorf (const g24_lib::point< Type, indexer > &p) |
Returns a point whose elements are the floorf of those of the input point . More... | |
| template<class Type , class indexer = g24_lib::Definitions::default_unsigned_indexer> | |
| point< Type, indexer > | g24_lib::raw_read_point (std::istream &s) |
| template<class Type , class indexer = g24_lib::Definitions::default_unsigned_indexer> | |
| point< Type, indexer > | g24_lib::raw_read_point (std::istream &s, const indexer num) |
| template<class Type , class indexer > | |
| g24_lib::point< Type, indexer > | round (const g24_lib::point< Type, indexer > &p) |
Returns a point whose elements are the round of those of the input point . More... | |
| template<class Type , class indexer > | |
| g24_lib::point< Type, indexer > | roundf (const g24_lib::point< Type, indexer > &p) |
Returns a point whose elements are the roundf of those of the input point . More... | |
| template<class Type , class indexer > | |
| g24_lib::point< Type, indexer > | trunc (const g24_lib::point< Type, indexer > &p) |
Returns a point whose elements are the trunc of those of the input point . More... | |
| template<class Type , class indexer > | |
| g24_lib::point< Type, indexer > | truncf (const g24_lib::point< Type, indexer > &p) |
Returns a point whose elements are the trunc of those of the input point . More... | |
Defines g24_lib::point
, a (mostly deprecated) dynamic version of g24_lib::fspoint
.
Definition in file point.h.
| g24_lib::point<Type, indexer> ceil | ( | const g24_lib::point< Type, indexer > & | p | ) |
Returns a point
whose elements are the ceil
of those of the input point
.
g24_lib::point
is more or less deprecated since its usefulness is limited. In most practical problems, the dimensions are fixed, dynamic allocations are slower and CUDA
interoperatability is quite limited. However, compatibility with past projects requires it to remain here for the time being, at least. | g24_lib::point<Type, indexer> ceilf | ( | const g24_lib::point< Type, indexer > & | p | ) |
Returns a point
whose elements are the ceilf
of those of the input point
.
g24_lib::point
is more or less deprecated since its usefulness is limited. In most practical problems, the dimensions are fixed, dynamic allocations are slower and CUDA
interoperatability is quite limited. However, compatibility with past projects requires it to remain here for the time being, at least. | double fabs | ( | const g24_lib::point< Type, indexer > & | p, |
| const double | num = 2.0 |
||
| ) |
Calculates the norm of a vector using fabs
for its elements.
| num | The kind of norm we want to calculate. Usual norm has , but it is mathematically valid as long as num >= 1 . |
g24_lib::point
is more or less deprecated since its usefulness is limited. In most practical problems, the dimensions are fixed, dynamic allocations are slower and CUDA
interoperatability is quite limited. However, compatibility with past projects requires it to remain here for the time being, at least.| float fabsf | ( | const g24_lib::point< Type, indexer > & | p, |
| const float | num = 2.0 |
||
| ) |
Calculates the norm of a vector using fabsf
for its elements.
| num | The kind of norm we want to calculate. Usual norm has , but it is mathematically valid as long as num >= 1 . |
g24_lib::point
is more or less deprecated since its usefulness is limited. In most practical problems, the dimensions are fixed, dynamic allocations are slower and CUDA
interoperatability is quite limited. However, compatibility with past projects requires it to remain here for the time being, at least.| g24_lib::point<Type, indexer> floor | ( | const g24_lib::point< Type, indexer > & | p | ) |
Returns a point
whose elements are the floor
of those of the input point
.
g24_lib::point
is more or less deprecated since its usefulness is limited. In most practical problems, the dimensions are fixed, dynamic allocations are slower and CUDA
interoperatability is quite limited. However, compatibility with past projects requires it to remain here for the time being, at least. | g24_lib::point<Type, indexer> floorf | ( | const g24_lib::point< Type, indexer > & | p | ) |
Returns a point
whose elements are the floorf
of those of the input point
.
g24_lib::point
is more or less deprecated since its usefulness is limited. In most practical problems, the dimensions are fixed, dynamic allocations are slower and CUDA
interoperatability is quite limited. However, compatibility with past projects requires it to remain here for the time being, at least. | g24_lib::point<Type, indexer> round | ( | const g24_lib::point< Type, indexer > & | p | ) |
Returns a point
whose elements are the round
of those of the input point
.
g24_lib::point
is more or less deprecated since its usefulness is limited. In most practical problems, the dimensions are fixed, dynamic allocations are slower and CUDA
interoperatability is quite limited. However, compatibility with past projects requires it to remain here for the time being, at least. | g24_lib::point<Type, indexer> roundf | ( | const g24_lib::point< Type, indexer > & | p | ) |
Returns a point
whose elements are the roundf
of those of the input point
.
g24_lib::point
is more or less deprecated since its usefulness is limited. In most practical problems, the dimensions are fixed, dynamic allocations are slower and CUDA
interoperatability is quite limited. However, compatibility with past projects requires it to remain here for the time being, at least. | g24_lib::point<Type, indexer> trunc | ( | const g24_lib::point< Type, indexer > & | p | ) |
Returns a point
whose elements are the trunc
of those of the input point
.
g24_lib::point
is more or less deprecated since its usefulness is limited. In most practical problems, the dimensions are fixed, dynamic allocations are slower and CUDA
interoperatability is quite limited. However, compatibility with past projects requires it to remain here for the time being, at least. | g24_lib::point<Type, indexer> truncf | ( | const g24_lib::point< Type, indexer > & | p | ) |
Returns a point
whose elements are the trunc
of those of the input point
.
g24_lib::point
is more or less deprecated since its usefulness is limited. In most practical problems, the dimensions are fixed, dynamic allocations are slower and CUDA
interoperatability is quite limited. However, compatibility with past projects requires it to remain here for the time being, at least.


Hello, this is Raspberry Pi! Raspberry Pi hosting OliWeb 1.0.0 [Powered by IvySox 1.0.0] Parameter1 This checkbox... ...and this one too Parameter1 This checkbox... ...and this one too Parameter1 This checkbox... ...and this one too


Name
Email
Created
Updated
{% for player in player_list %}
Name: {{ player.name }}
Email: {{ player.email}}
Created: {{ player.created}}
Updated: {{ player.updated}}
{% endfor %}


The motivation of this blog, developped by my friend Corentin CARTEAU and myself, is to build intuition about the behaviour of state of the art optimization algorithms in the face of particular loss shapes. Our interactive simulator includes first order (Gradient Descent-like methods) and second order (Newton-like) methods on a wide range of test functions (Scale inhomogeneity, Local Minima, Non-Stationary functions...). Click on the Figure to initiate an optimization procedure according to the specified parameters.
13 Apr 2020
The motivation of this blog post is to focus on the main rationale behind the use of nonparametric models in machine learning, and to specifically study one example of such model, the Dirichlet Process.
09 Sep 2019
In this post, we deal with datasets consisting of a social graph where each individual gives its top preferred other individuals in the network. The problematic is then to probabilistically model such a network in order to predict the behaviour of unknown individuals or infer network structures such as latent overlapping communities. We also discussed more refined situations where one can add covariates on individuals.
08 Sep 2019
This post present the report of my mini project of the course "Networks" at the university of Oxford. It deals with the apparent lack of performance of community detection of classical spectral methods and present the operators introduced in the litterature to overcome this problem.
07 Sep 2019


TheoQuotesAPI:
An API for quoes by theologians.
`/quotes`
Returns all quotes
`/authors`
Returns a list of all authors
`/quotes_from/<author name>`
Returns all quotes from the given author
`/random_quote`
Returns a random quote
`/random_word`
Returns a random word
source code


pyGM: File Input/Output¶
pyGM/filetypes.py
Read / write methods for graphical model file types (UAI, WCSP, etc.)
readUai / writeUai : read/write UAI competition file format readEvidence10, readEvidence14 : read/write UAI, Ergo evidence formats (14: single evidence) readErgo : read Ergo Bayes Net format readWCSP / writeWCSP : read/write WCSP weighted CSP format
Version 0.0.1 (2015-09-28) (c) 2015 Alexander Ihler under the FreeBSD license; see license.txt for details.
-
pyGM.filetypes.
Limid2MMAP
(C, D, U)[source]¶ Convert LIMID factors into MMAP factors & query variable list
Example:
>>> C,D,U = readLimid(filename) >>> factors,query = Limid2MMAP(C,D,U)
See also readLimid().
-
pyGM.filetypes.
LimidCRA2MMAP
(C, D, U)[source]¶ Convert CRA LIMID factors into MMAP factors & query variable list (Not Implemented)
Example:
>>> factors,query = LimidCRA2MMAP(C,D,U)
See also readLimidCRA().
-
pyGM.filetypes.
readErgo
(filename)[source]¶ Read in a Bayesian network (list of conditional probabilities) specified in ERGO format
Example:
>>> factor_list,names,labels = readErgo( 'path/filename.erg' )
See e.g. http://graphmod.ics.uci.edu/group/Ergo_file_format for details
-
pyGM.filetypes.
readEvidence10
(evidence_file)[source]¶ Read UAI-2010 evidence file
The 2010 specification allowed multiple evidence configurations in the same file:
>>> evList = readEvidence10('path/file.uai.evid')
Returns a list of evidence configurations; evList[i] is a dictionary, { Xi : xi , … } indicating that variable Xi = value xi.
-
pyGM.filetypes.
readEvidence14
(evidence_file)[source]¶ Read a UAI-2014 format evidence file
The 2014 specification allowed only one evidence configuration per file:
>>> ev = readEvidence14('path/file.uai.evid')
Returns an evidence configuration as a dictionary, { Xi : xi , … }, indicating that variable Xi = value xi.
-
pyGM.filetypes.
readFileByTokens
(path, specials=[])[source]¶ Helper function for parsing pyGM file formats
-
pyGM.filetypes.
readFileByTokensNEW
(path, specials=[])[source]¶ Helper function for parsing pyGM file formats
-
pyGM.filetypes.
readLimid
(filename)[source]¶ Read in a LIMID file (Maua format)
Example: get CPTs for chance nodes C, uniform policies D, and utilities U:
>>> C,D,U = readLimid(filename)
See e.g. https://github.com/denismaua/kpu-pp TODO: may have an error in variable orderings? Hard to tell from Denis’ page. TODO: seems to expect multiplicative utility functions?
-
pyGM.filetypes.
readLimidCRA
(filename)[source]¶ Read in a LIMID file specified by our format with Charles River.
Example:
>>> fChance,fDecision,fUtil = readLimidCRA( 'path/filename.uai' )
-
pyGM.filetypes.
readOrder
(filename)[source]¶ Read an elimination order from a file
Elimination orders are stored as unknown length vectors, format “[nvar] [v0] [v1] … [vn]”
Note: the same file format may also be useful for MPE configurations, etc.
-
pyGM.filetypes.
readTEST
(filename)[source]¶ Read in a collection (list) of factors specified in UAI (2006-?) format
Example:
>>> factor_list = readUai( 'path/filename.uai' )
-
pyGM.filetypes.
readUai
(filename)[source]¶ Read in a collection (list) of factors specified in UAI (2006-?) format
Example:
>>> factor_list = readUai( 'path/filename.uai' )
-
pyGM.filetypes.
readWCSP
(filename)[source]¶ Read in a weighted CSP (list of neg-log factors) specified in WCSP format
Example:
>>> factor_list,name,upperbound = readWCSP( 'path/filename.wcsp' )
-
pyGM.filetypes.
writeOrder
(filename, order)[source]¶ Write an elimination order (or other vector) to a file
-
pyGM.filetypes.
writeUai
(filename, factors)[source]¶ Write a list of factors to <filename> in the UAI competition format


Broken screen? Low battery? Moisture damage?
Broken screen? Spilled the water on your mobile - moisture damage? No need to be stressed!
Does the phone turn off by itself or does it not charge it? We can help you!
Bad battery, microphone that doesn't work, touch that isn't working like it should etc. - we fix everything! You just need to get in touch!
We offer low prices, high quality and one year warranty.
We are always available for you.
Contact us on +381 64 455 2001 or fill out the contact form under the Contact us tab.


{% comment %} pages: A set of pages to include. Needs to have title and content id: an identifier for this tabcontrol {% endcomment %}


Demo Scenario
These links are provided for the walk through demo. Please login as
user50
and password as
openshift
if prompt.
Links
Demo Scenario
Openshift Console
All
Order Page
All
Jenkins
B
Service Mesh Traffic Monitoring
C
Kafka Monitoring
C and D


BY FROMA HARROP
Actions related to the COVID-19 crisis, climate change and racial equality are to be among the first taken as he begins his tenure.
Notable people pardoned by Trump today include former White House chief strategist Steve Bannon and rapper Lil Wayne.
Trump chose not to issue pardons for himself of his personal attorney, former New York Mayor Rudy Giuliani.
Newsweek Expert Forum creates cohort of thought leaders, pioneering thinkers to share insights, expertise from range of professions, industries.
The president did not issue pardons for himself, his children or for former New York Mayor Rudy Giuliani.
The Biden Administration will issue an order stopping construction of the border wall on its first day.
Featuring a unique history, uninhibited wildness and at times otherworldly natural spectacles, Hokkaido offers an experience that is completely different from the rest of Japan.
 See why so many parents are turning to International Schools.
We partnered with Statista to rank the country's Most Responsible Companies. They share the values that we all prioritize, and that's worth recognizing in 2021
The Biden Administration will issue an order stopping construction of the border wall on its first day.
Actions related to the COVID-19 crisis, climate change and racial equality are to be among the first taken as he begins his tenure.
The Secrets to Happiness Around the World
Where We Are Dreaming of Traveling in 2021
These Are the Top 100 Songs of 2020
The incoming president has not said what he plans to do with the tens of thousands of asylum-seekers living in limbo in crowded shelters and makeshift camps along the border.
Religious conservatives and law-enforcement officers who were uncomfortable with family separations may be open to immigration reform.
The president's flurry of pardons include former Israeli air force colonel Aviem Sella, who recruited the infamous spy Jonathan Pollard.
Joe Biden will be sworn in as the 46th president of the United States at noon on Wednesday. Kamala Harris will become the 49th vice president.
The Russian embassy in Washington, DC has sent a diplomatic note to the State Department after the phones at its New York consulate stopped working.
Rep. Dan Eubanks also introduced a bill to ban employers from mandating COVID-19 vaccines for their staff.
New York Rep. John Katko said classified briefings he had received about the January 6 unrest were "deeply troubling."
The two victories give Democrats majority control of the Senate, since Kamala Harris can break a tie vote.
President Donald Trump has repeatedly touted the anti-malaria drug as a COVID-19 treatment, despite a lack of evidence.
The Colorado congresswoman said that the claims made on CNN by Rep. Steve Cohen had enreded her family and her staff.
There is speculation about the president making final use of his clemency powers as his time in the White House draws to a close.
From California to Michigan, dozens of states will be bolstering security, including some declaring states of emergency and summoning the National Guard.
"Cobra Kai" Season 4 has been confirmed by Netflix, and production has been reported to be...
Gen. Hyten, who is the vice chairman of the Joint Chiefs of Staff and the country's second...
MyPillow CEO Mike Lindell claimed several retailers were succumbing to pressure from campaigners...
Trump granted clemency to dozens of people in the final hours of his presidency.
"NCIS" Season 18, Episode 5 on CBS finally came back to the opening of the season, which saw Gibbs...
The rapper is serving a four-year sentence in federal prison after pleading guilty to possession of...
Trump Ally Gaetz Wants More GOP Leaders With Outgoing President's 'Spirit'
New York City, the country's most populous city, was reported to have enough vaccines to administer...
The Duchess of Sussex's aide opened doors for the authors of a biography that accused Prince...
Featuring a unique history, uninhibited wildness and at times otherworldly natural spectacles, Hokkaido offers an experience that is completely different from the rest of Japan.
 See why so many parents are turning to International Schools.
We partnered with Statista to rank the country's Most Responsible Companies. They share the values that we all prioritize, and that's worth recognizing in 2021
Featuring a unique history, uninhibited wildness and at times otherworldly natural spectacles, Hokkaido offers an experience that is completely different from the rest of Japan.
BY FROMA HARROP
BY RACHEL BOVARD
BY FRANK CILLUFFO AND STEWART BAKER
BY FRANK CILLUFFO AND STEWART BAKER
BY FRANK CILLUFFO AND STEWART BAKER
BY FRANK CILLUFFO AND STEWART BAKER
BY FRANK CILLUFFO AND STEWART BAKER
BY FRANK CILLUFFO AND STEWART BAKER
BY FRANK CILLUFFO AND STEWART BAKER
The Biden Administration will issue an order stopping construction of the border wall on its first day.
 See why so many parents are turning to International Schools.
We partnered with Statista to rank the country's Most Responsible Companies. They share the values that we all prioritize, and that's worth recognizing in 2021
The Biden Administration will issue an order stopping construction of the border wall on its first day.
Newsweek spoke exclusively with four Israeli security officials charged with frontiers facing Syria, Lebanon, Gaza and the southern borders with Egypt and Jordan, revealing their primary security concerns for 2021.
Trump released a list of pardons on Tuesday, as last-minute presidential pardons have been a long-standing custom for outgoing presidents.
The coronavirus crisis continues to cause economic hardship across the nation, with continued calls for further direct payments to assist those struggling.
Slightly more than 1.3 million people in California had received a COVID-19 vaccine by Saturday.
The incoming Biden administrate plans to the the U.S. up to the according on inauguration day.
The president—who will exit the White House on Wednesday following the inauguration of Joe Biden—was effectively exiled from mainstream social media platforms this month after the violence.
Polling has shown growing dissatisfaction in how action has been communicated, as cases continue to rise and the number of deaths linked to COVID-19 in the U.S. nears 400,000.
The president-elect plans to reverse the so-called "Muslim ban" and the exit from the Paris Climate Accords.
All Access + Weekly Delivery. Choose A Membership That's Perfect for You!
See why nearly a quarter of a million subscribers begin their day with the Starting 5.


Opposition leader Thanathorn says ruling stripping him of MP status ‘politically motivated’
by Coconuts BangkokThai opposition leader Thanathorn Juangroongruangkit this afternoon said the Constitutional Court’s verdict disqualifying him from parliament was politically motivated.
Eight months after Thanathorn and his progressive Future Forward Party rode a wave of public support to third place in national elections, the court Wednesday found him guilty of breaching election rules by owning shares in a media company.
Speaking after the verdict was delivered surrounded by a large crowd of supporters chanting “fight on,” he said the party’s work would continue.
“There’s still lots of work to be done, I still have to campaign for the amendment of the constitution and campaign for the end of military conscription bill,” he said. “So as a leader of this political party, there is loads of work to do.”
Asked directly whether he thought the verdict was politically motivated, Thanathorn said he thought it was.
Thanathorn had argued that the company, V-Luck Media, was a printing company hired to print in-flight magazines for Nok Air and never handled any political content. More so, the company was disbanded and shut down one year ago in November. The judges rejected his team’s arguments and evidence, saying he violated Section 98(3) of the election code by hanging onto the shares while registering as an MP candidate.
Thanathorn has said that he unloaded his V-Luck shares in January, before candidate registration in February for the March vote.
Prior to the verdict, Thanathorn seemed to be expecting the outcome when he spoke to supporters, saying their cause would go on whatever the outcome.
Thanathorn’s popularity and widespread youth appeal has alarmed the military-dominated status quo and he was blocked from ever sitting in Parliament when it convened in May.
On Monday, he filed a lawsuit against seven members of the Election Commission for malfeasance by violating its own process by rushing to file the case with the Constitutional Court before its own review was completed.
Criticizing any court decisions is a dangerous prospect. The judiciary shields itself from critique by aggressively pursuing contempt cases against those it accuses of “defamation.” Several cases have been filed of late, including one against writer Sarinee Achavanuntakul, who was only let off the hook after she apologized publicly.
Related:
Thai opposition leader Thanathorn to learn fate in court
Bangkok park designer, Lisa Blackpink represent Thailand in Time’s ‘100 Next’
Future Forward Party leader Thanathorn in court over alleged share holdings
Tomorrow’s endgame in Thai parliament now officially Thanathorn vs. Prayuth
Does this tweet mean we’ve hit peak Thanathorn, Thailand?
Blocked from parliament, defiant Thanathorn says Thai junta is ‘desperate’


Tinker is a blank layout with a flexbox grid system and useful styles included.
Tinker is responsive with modifiers for different devices.
Tinker comes with a full width or 3/4 layout to choose from.
Add an element without a set size. Tinker will figure it out.
Offsets allows you to position elements in columns of your choice.
Set an element to the start, center or end of an row.
Set the distribution of an element to around or between with special classes.


lexical_cast
bad_lexical_cast
int
represented as a string
, or vice-versa, when a string
is interpreted as an int
. Such examples are common when converting
between data types internal to a program and representation external to a
program, such as windows and configuration files.
The standard C and C++ libraries offer a number of facilities for performing such conversions. However, they vary with their ease of use, extensibility, and safety.
For instance, there are a number of limitations with the family of standard C
functions typified by atoi
:
sprintf
function, or the loss of
portability associated with non-standard functions such as itoa
.
int
, long
, and double
.
complex
or rational
.
strtol
have the same basic
limitations, but offer finer control over the conversion process. However, for
the common case such control is often either not required or not used. The scanf
family of functions offer even greater control, but also lack safety and ease
of use.
The standard C++ library offers stringstream
for the kind of
in-core formatting being discussed. It offers a great deal of control over the
formatting and conversion of I/O to and from arbitrary types through text.
However, for simple conversions direct use of stringstream
can be
either clumsy (with the introduction of extra local variables and the loss of
infix-expression convenience) or obscure (where stringstream
objects are created as temporary objects in an expression). Facets provide a
comprehensive concept and facility for controlling textual representation, but
their perceived complexity and high entry level requires an extreme degree of
involvement for simple conversions, and excludes all but a few programmers.
The lexical_cast
function template offers a convenient and
consistent form for supporting common conversions to and from arbitrary types
when they are represented as text. The simplification it offers is in
expression-level convenience for such conversions. For more involved
conversions, such as where precision or formatting need tighter control than is
offered by the default behavior of lexical_cast
, the conventional
stringstream
approach is recommended. Where the conversions are
numeric to numeric, numeric_cast
may offer more reasonable behavior than lexical_cast
.
For a good discussion of the options and issues involved in string-based
formatting, including comparison of stringstream
, lexical_cast
,
and others, see Herb Sutter's article,
The String Formatters of Manor Farm. Also, take a look at the Performance section.
The following example uses numeric data in a string expression:int main(int argc, char * argv[]) { using boost::lexical_cast; using boost::bad_lexical_cast; std::vector<short> args; while(*++argv) { try { args.push_back(lexical_cast<short>(*argv)); } catch(bad_lexical_cast &) { args.push_back(0); } } ... }
void log_message(const std::string &); void log_errno(int yoko) { log_message("Error " + boost::lexical_cast<std::string>(yoko) + ": " + strerror(yoko)); }
"boost/lexical_cast.hpp"
:
Unit test defined innamespace boost { class bad_lexical_cast; template<typename Target, typename Source> Target lexical_cast(const Source& arg); }
"lexical_cast_test.cpp"
.
lexical_cast
Returns the result of streamingtemplate<typename Target, typename Source> Target lexical_cast(const Source& arg);
arg
into a
standard library string-based stream and then out as a Target
object.
Where Target
is either std::string
or std::wstring
, stream extraction takes the whole content
of the string, including spaces, rather than relying on the default
operator>>
behavior.
If the conversion is unsuccessful, a
bad_lexical_cast
exception is thrown.
The requirements on the argument and result types are:
Source
is OutputStreamable, meaning that an operator<<
is defined that takes a std::ostream
or std::wostream
object on the
left hand side and an instance of the argument type on the right.
Target
is InputStreamable, meaning that an operator>>
is defined that takes a std::istream
or std::wistream
object on the left hand side
and an instance of the result type on the right.
Target
is CopyConstructible [20.1.3].
Target
is DefaultConstructible, meaning that it is possible
to default-initialize an object of that type [8.5, 20.1.4].
char
unless
either the Source
or the Target
requires wide-character
streaming, in which case the underlying stream uses wchar_t
.
Source
types that require wide-character streaming are wchar_t
,
wchar_t *
, and std::wstring
. Target
types that
require wide-character streaming are wchar_t
and std::wstring
.
Where a higher degree of control is required over conversions, std::stringstream
and std::wstringstream
offer a more appropriate path. Where non-stream-based conversions are
required, lexical_cast
is the wrong tool for the job and is not special-cased for such scenarios.
bad_lexical_cast
Exception used to indicate runtimeclass bad_lexical_cast : public std::bad_cast { public: ... // same member function interface as std::exception };
lexical_cast
failure.
| Question: | Why does lexical_cast<int8_t>("127") throw bad_lexical_cast ? |
| Answer: | The type int8_t is a typedef to char or signed char .
Lexical conversion to these types is simply reading a byte from source but since the source has
more than one byte, the exception is thrown.
Please use other integer types such as int or short int . If bounds checking
is important, you can also call numeric_cast:
numeric_cast<int8_t>(lexical_cast<int>("127")); |
| Question: | What does lexical_cast<std::string> of an int8_t or uint8_t not do what I expect? |
| Answer: | As above, note that int8_t and uint8_t are actually chars and are formatted as such. To avoid this, cast to an integer type first:
lexical_cast<std::string>(static_cast<int>(n)); |
| Question: | The implementation always resets the ios_base::skipws flag of an underlying stream object. It breaks my operator>> that works only in presence of this flag. Can you remove code that resets the flag? |
| Answer: | May be in a future version. There is no requirement in [N1973] to reset the flag but remember that [N1973] is not yet accepted by the committee. By the way, it's a great opportunity to make your operator>> conform to the standard. Read a good C++ book, study std::sentry and ios_state_saver.
|
| Question: | Why std::cout << boost::lexical_cast<unsigned int>("-1"); does not throw, but outputs<PHONE_NUMBER>? |
| Answer: | boost::lexical_cast has the behavior of stringstream , which uses num_get functions of std::locale to convert numbers. If we look at the [<IP_ADDRESS>.2] of Programming languages — C++, we'll see, that num_get uses the rules of scanf for conversions. And in the C99 standard for unsigned input value minus sign is optional, so if a negative number is read, no errors will arise and the result will be the two's complement.
|
Target
from Source
on some conversions (like conversions from string to string, from char array to string, from char to char and others).Source
and Target
types. Refer to [Tuning] for more details.
lexical_cast
used the default stream
precision for reading and writing floating-point numbers. For numerics that
have a corresponding specialization of std::numeric_limits
, the
current version now chooses a precision to match. lexical_cast
did not support conversion
to or from any wide-character-based types. For compilers with full language
and library support for wide characters, lexical_cast
now supports
conversions from wchar_t
, wchar_t *
, and std::wstring
and to wchar_t
and std::wstring
. lexical_cast
assumed that the conventional
stream extractor operators were sufficient for reading values. However, string
I/O is asymmetric, with the result that spaces play the role of I/O separators
rather than string content. The current version fixes this error for std::string
and, where supported, std::wstring
: lexical_cast<std::string>("Hello,
World")
succeeds instead of failing with a bad_lexical_cast
exception. lexical_cast
allowed unsafe and meaningless
conversions to pointers. The current version now throws a bad_lexical_cast
for conversions to pointers: lexical_cast<char *>("Goodbye, World")
now throws an exception instead of causing undefined behavior.
| From->To | lexical_cast | std::stringstream with construction | std::stringstream without construction | sscanf /sprintf |
| string->char | <1 | 91 | 7 | 10 |
| string->int | 7 | 115 | 23 | 18 |
| string->unsigned int | 7 | 117 | 22 | 17 |
| string->bool | <1 | 104 | 19 | 10 |
| string->float | 85 | 172 | 60 | 33 |
| char->string | 7 | 105 | 16 | 12 |
| int->string | 15 | 131 | 21 | 17 |
| unsigned int->string | 14 | 125 | 21 | 17 |
| bool->string | 7 | 122 | 24 | 12 |
| float->string | 124 | 223 | 115 | 48 |
| char*->string | 9 | 123 | 20 | --- |
| int->int | <1 | 120 | 26 | --- |
| float->float | <1 | 262 | 142 | --- |


This tool provides a human-friendly interface for searching the Norwegian authority file Felles autoritetsregister (formerly known as Bibsys authorities, BARE) through the API provided by Unit (formerly Bibsys).
It can be used to locate or validate P1015 values on Wikidata.
The query is right-truncated by default.
| Name | Type | ID |
|---|---|---|
| {{ record.name }} ({{ record.birth }}-{{ record.death }}) | {{ record.corporation_type || record.class }} | {{ record.id }} |
No records found for «{{ query }}»


5.0.1
(Matrix)
(Matrix)
Computes the inverse of a Matrix
Matrix
:
(Matrix)
Real matrix
Extends superCtor
(number?)
Number of columns of the new matrix
Returns a view of a submatrix giving the index boundaries
(number)
first row index of the submatrix
(number)
last row index of the submatrix
(number)
first column index of the submatrix
(number)
last column index of the submatrix
MatrixSubView
:
Returns a view of the matrix flipped in the column axis
MatrixFlipColumnView
:
Returns a view of the matrix flipped in the row axis
MatrixFlipRowView
:
Return a new matrix based on a selection of rows and columns
Matrix
:
The new matrix
Returns a view of the transposition of the matrix
MatrixTransposeView
:
Returns a view of the column indices
MatrixColumnSelectionView
:
// resulting vector is [[2, 2], [5, 5]]
var matrix = new Matrix([[1,2,3], [4,5,6]]).columnSelectionView([1, 1])
Returns a view of the row indices
MatrixRowSelectionView
:
// resulting vector is [[1,2,3], [1,2,3]]
var matrix = new Matrix([[1,2,3], [4,5,6]]).rowSelectionView([0, 0])
Returns a view of the cross of the row indices and the column indices
MatrixSelectionView
:
// resulting vector is [[2], [2]]
var matrix = new Matrix([[1,2,3], [4,5,6]]).selectionView([0, 0], [1])
Returns the Kronecker product (also known as tensor product) between this and other See https://en.wikipedia.org/wiki/Kronecker_product
(Matrix)
Matrix
:
Creates a new matrix that is a repetition of the current matrix. New matrix has rowRep times the number of rows of the matrix, and colRep times the number of columns of the matrix
(number)
Number of times the rows should be repeated
(number)
Number of times the columns should be re
Matrix
:
var matrix = new Matrix([[1,2]]);
matrix.repeat(2); // [[1,2],[1,2]]
Returns a new column-by-column scaled matrix
Matrix
:
The new scaled matrix
var matrix = new Matrix([[1,2],[-1,0]]);
var scaledMatrix = matrix.scaleColumns(); // [[1,1],[0,0]]
(Matrix)
Solve a problem of least square (Ax=b) by using the QR decomposition. Useful when A is rectangular, but not working when A is singular. Example : We search to approximate x, with A matrix shape m*n, x vector size n, b vector size m (m > n). We will use : var qr = QrDecomposition(A); var x = qr.solve(b);
(Matrix)
Matrix 1D which is the vector b (in the equation Ax = b)
Matrix
:
The vector x
(Matrix)
Solve a problem of least square (Ax=b) by using the SVD. Useful when A is singular. When A is not singular, it would be better to use qr.solve(value). Example : We search to approximate x, with A matrix shape m*n, x vector size n, b vector size m (m > n). We will use : var svd = SingularValueDecomposition(A); var x = svd.solve(b);
(Matrix)
Matrix 1D which is the vector b (in the equation Ax = b)
Matrix
:
The vector x
Matrix
:
(WrapperMatrix1D | WrapperMatrix2D)
:


Secondary tiles can send tile and badge notifications just like app tiles.
Pin tile
Send Tile Notification
Send Badge Notification
Above, the NotificationsExtensions library is used to create notifications. You can also create notifications with strings:
Send Tile Notification
Send Badge Notification


bespoke-fxSlide 2
Use defaults
bespoke.horizontal.from('article', {
fx: true
});
bespoke-fxSlide 3
Custom global options
bespoke.horizontal.from('article', {
fx: {
direction: "horizontal",
transition: "move",
reverse: false
}
});
bespoke-fxSlide 4
Set per slide options

Slide 4

bespoke-fxSlide 5
Direction: horizontal or vertical

Slide 5

bespoke-fxSlide 6
Run transition in reverse

Slide 6

bespoke-fxSlide 7
Different transitions: move [default]

Slide 7

bespoke-fxSlide 8
Different transitions: move-fade

Slide 8

bespoke-fxSlide 9
Different transitions: move-both-fade

Slide 9

bespoke-fxSlide 10
Different transitions: move-different-easing

Slide 10

bespoke-fxSlide 11
Different transitions: scale-down-out-move-in

Slide 11

bespoke-fxSlide 12
Different transitions: move-out-scale-up

Slide 12

bespoke-fxSlide 13
Different transitions: scale-up-up

Slide 13

bespoke-fxSlide 14
Different transitions: scale-down-up

Slide 14

bespoke-fxSlide 15
Different transitions: glue

Slide 15

bespoke-fxSlide 16
Different transitions: flip

Slide 16

bespoke-fxSlide 17
Different transitions: fall

Slide 17

bespoke-fxSlide 18
Different transitions: newspaper

Slide 18

bespoke-fxSlide 19
Different transitions: push

Slide 19

bespoke-fxSlide 20
Different transitions: pull

Slide 20

bespoke-fxSlide 21
Different transitions: fold

Slide 21

bespoke-fxSlide 22
Different transitions: unfold

Slide 22

bespoke-fxSlide 23
Different transitions: room

Slide 23

bespoke-fxSlide 24
Different transitions: cube

Slide 24

bespoke-fxSlide 25
Different transitions: carousel

Slide 25

bespoke-fxSlide 26
Different transitions: sides

Slide 26

bespoke-fxSlide 27
Different transitions: slide

Slide 27


Packed circles
It is a demo of drawing packed circles.
- The script is based on native JavaScript;
- The D3 package is used to draw the circles into the svg;
-
The method is to maintain the outline of the current circle
package;
-
When new circle is added, it will be placed on the outer side of
the outline;
- The colors' hue values are continues by the order.


Free Speech as in Open Source.
This Page Is Static... Please visit our dynamic Index. Maybe something went wrong? Welcome to the K666 Open Source Generic Discussion Forum, Feel Free to Fork Anytime: Git Hub Repository: https://github.com/orionblaster/K666
Accounts Login: Login to FreeK666
Donations: bitcoin:1Dy5rLHwt8wk79C6jfH6uRf2bpcVnJtNyQ


AWS Toolkit is an extension for AWS Cloud9 that enables you to interact with Amazon Web Services (AWS). See the AWS Toolkit for Visual Studio Code user guide for complete documentation.
See Setup for installation requirements, or Get help for support.
AWS:
CommandsThe AWS Explorer provides access to the AWS services that you can work with when using the Toolkit. To see the AWS Explorer, choose the AWS icon in the Activity bar.
TODO: screenshot
{ Return to Top }
The AWS Toolkit enables you to develop AWS serverless applications locally. It also provides CodeLenses in Cloud9 to do the following:
To start debugging with a SAM template, click the Add Debug Configuration
CodeLens in the template file.
TODO: screenshot
Alternatively, you can run and debug just the AWS Lambda function and exclude other resources defined by the SAM template. Again, use a CodeLens indicator for an AWS Lambda-function handler. (A handler is a function that Lambda calls to start execution of a Lambda function.)
TODO: screenshot
When you run a debug session, the status and results are shown in the OUTPUT panel when the AWS Toolkit output channel is selected.
TODO: screenshot
When you're satisfied with performance, you can deploy your serverless application. The SAM template is converted to a CloudFormation template, which is then used to deploy all the application's assets to the AWS Cloud.
The Add Debug Configuration
CodeLens creates launch configs of type
aws-sam
in the VS Code launch.json
file. You can also create these entries
by hand.
When editing launch.json
configs, AWS Toolkit provides auto-completion and
contextual documentation, as shown below.
TODO: screenshot
The Toolkit local SAM debugging feature supports these runtimes:
For more information see Working with AWS Serverless Applications in the user guide.
{ Return to Top }
AWS:
CommandsThe Toolkit provides commands (prefixed with AWS:
) to the VS Code command
palette, available by selecting View > Command Palette or by typing
CTRL-SHIFT-p
(macOS: CMD-SHIFT-p
).
TODO: screenshot
| AWS Command | Description |
|---|---|
AWS: About AWS Toolkit |
Displays information about the AWS Toolkit. |
AWS: Connect to AWS |
Connects the Toolkit to an AWS account. For more information, see Connecting to AWS in the user guide. |
AWS: Create a new Issue on Github |
Opens the AWS Toolkit's New Issue page on Github. |
AWS: Create Credentials Profile |
Creates an AWS credentials profile. For more information, see Setting Up Your AWS Credentials in the user guide. |
AWS: Create new SAM Application |
Generates a set of code files for a new AWS serverless application. For more information, see Creating a Serverless Application in the user guide. |
AWS: Deploy SAM Application |
Deploys a local serverless application to an AWS account. For more information, see Deploying a Serverless Application in the user guide. |
AWS: Detect SAM CLI |
Checks whether the Toolkit can communicate correctly with the AWS SAM CLI that is installed. |
AWS: Hide region from the Explorer |
Hides an AWS Region from the AWS Explorer. |
AWS: Show region in the Explorer |
Displays an AWS Region in the AWS Explorer. |
AWS: Sign out |
Disconnects the Toolkit from the currently-connected AWS account. |
AWS: Submit Quick Feedback... |
Submit a private, one-way message and sentiment to the AWS Toolkit dev team. For larger issues that warrant conversations or bugfixes, please submit an issue in Github with the AWS: Create a New Issue on Github command. |
AWS: View AWS Toolkit Logs |
Displays log files that contain general Toolkit diagnostic information. |
AWS: View Quick Start |
Open this quick-start guide. |
AWS: View Toolkit Documentation |
Opens the user guide for the Toolkit. |
AWS: View Source on GitHub |
Opens the GitHub repository for the Toolkit. |
{ Return to Top }
To access most features of the AWS Toolkit, complete the Setting Up steps from the user guide.
To develop serverless applications with the Toolkit, you must set up your toolchain and do the following on the local machine where the Toolkit is installed:
{ Return to Top }
For additional details on how to use the AWS Toolkit, see the user guide.
To report issues with the Toolkit or to propose Toolkit code changes, see the aws/aws-toolkit-vscode repository on GitHub.
You can also contact AWS directly.
{ Return to Top }


Recycling facilities use robotic sorting stations and object-recognition technology to identify and put garbage in its proper place.
Filled with intricate mazes of high-speed conveyor belts carrying yesterday’s garbage, high-tech recycling centers use sophisticated sensors to sort plastic from paper from aluminum. While this technology may streamline sorting, it’s not smart or nimble enough to finish the job.
Behind the scenes, recycling workers continue to sort the materials, making sure cereal boxes don’t mix with soda cans. And because this isn’t just a dirty job, but a mind-numbingly tedious one, there’s particularly high turnover at modern recycling centers, according to the Bureau of Labor Statistics.
But the future of smart recycling is looking brighter. Spider-like robotic arms, guided by cameras and artificial intelligence (AI) — think of it as facial-recognition technology for garbage — are helping to make municipal recycling facilities (MRFs) run more efficiently.
“I think the way we move waste recovery forward is by creating new, innovative ways to process material,” said Thomas Brooks, director of technology for Bulk Handling Systems (BHS), which produces the Max-AI robotic sorter. “That is how we’ll get others involved, and how we’ll get more material recycled.”


Back to the Routes
Back to the Routes Forum
Game
Idea Submission Form
Log Out
Community Guidelines
New Posts
Your Posts
Guidelines here
Wow guidelines.
New Posts
look at these new posts
Make a new post here
your posts


Twitoff Model for Lambda School
Content for my Twitoff Model for my project for Lambda School
{% for user in users %}
{{user.twit_handle}}
{% endfor %}


---
layout: post
title: My first blog post
date: 2006-11-17 09:06:00.000000000 +11:00
comments: true
categories:
- personal
---
I've seen many times different bloggers but never was ready to start blogging at any.
It seems for me that
blogger.com is most easy-to-use and feature full.
I like a lot that it integrates with my
Google account.
I really want to find some time for blogging...
Let's see if I'll keep my blog up to date...


ScaleOut Time Windowing Library for JavaScript
Introduction
The ScaleOut Time Windowing Library for JavaScript provides a set of windowing functions for time-ordered arrays of events.
Installation
npm install time-windowing
Example
'use strict';
const tw = require('time-windowing');
const ONE_DAY = 24 * 60 * 60 * 1000; // milliseconds
const ONE_MINUTE = 60 * 1000; // milliseconds
// State object to be stored and analyzed
class HeartRateReading {
constructor(timestamp) {
this.beatsPerMinute = HeartRateReading.createRandomHeartRate();
this.timestamp = timestamp;
}
static createRandomHeartRate() {
return Math.floor(Math.random() * (90 - 60 + 1)) + 60;
}
}
// Generate (simulated) time-ordered array of HeartRate readings, one per minute:
const readings = [];
for (let timestamp = Date.now() - ONE_DAY; timestamp < Date.now(); timestamp += ONE_MINUTE) {
tw.addToOrdered(readings, r => r.timestamp, new HeartRateReading(timestamp));
}
// Given heart-rate readings every minute, calculate the 5-minute
// moving average of a person's heart rate for the past 24 hours.
const slidingWindows = tw.toSlidingWindows(
readings, // array to transform
reading => reading.timestamp, // how to pull the time out of a HeartRateReading object
5 * ONE_MINUTE, // size (duration) of window: 5 minutes (in millis)
ONE_MINUTE, // frequency of windows: 1 minute (in millis)
Date.now() - ONE_DAY, // start time of first sliding window.
Date.now() // end time of last window
);
// Print each window's boundaries and its heartbeat average:
for (const win of slidingWindows) {
const sum = win.reduce((total, reading) => total + reading.beatsPerMinute, 0);
const avg = sum / win.length;
console.log(`${win.startDate.toLocaleTimeString()} - ${win.endDate.toLocaleTimeString()}: ${avg}`);
}
// Output:
// 4:54:56 PM - 4:59:56 PM: 76.2
// 4:55:56 PM - 5:00:56 PM: 71.6
// 4:56:56 PM - 5:01:56 PM: 72.4
// ...
The library also provides functions to manage arrays of time-ordered elements, such as the addToOrdered function used in the example above. These array management functions offer automatic eviction and ordering of elements. See the Managing Time-ordered Arrays section for details.
Windowing Functions
Three functions are provided to perform various time-windowing transformations on an ordered array:
- toSlidingWindows: Transforms an array of events into an array of overlapped (sliding) windows.
- toTumblingWindows: Transforms an array of events into an array of fixed-duration, non-overlapping windows.
- toSessionWindows: Transforms an array of events into an array of session windows.
Each windowing function returns an array of TimeWindow objects. A TimeWindow instance is itself an iterable collection of the elements in the source array whose timestamps fall within the window's time span.
The windowing functions accept a user-defined timestampSelector callback that, given and element in the source array, returns its timestamp. This timestamp is used to determine which window (or windows, in the case of the sliding windows) an element belongs to. The array must be sorted chronologically with respect to the returned timestamp.
Sliding Windows
Sliding window functions are often used to calculate the moving average of time series data. The duration of sliding windows is larger than the period between the windows, so the period of time covered by each window overlaps with its neighbors:
If no elements fall in a sliding time window, that window will be empty.
To use the library's toSlidingWindows function, the source array must be sorted chronologically. (See the Managing Time-ordered Arrays section for details about convenience functions that keep your source array sorted.)
Tumbling Windows
Tumbling windows, (or "fixed" windows), divide time series data into periodic, non-overlapping windows. Unlike sliding time windows, an element in a collection of tumbling windows may only appear in a single window.
Tumbling windows are implemented in this library as a special case of sliding window, whose window duration and frequency are the same amount of time.
If no elements fall in a tumbling time window, that window will be empty.
To use the library's toTumblingWindows function, the source collection must be sorted chronologically. (See the Managing Time-ordered Arrays section for details about convenience functions that keep your source array sorted.)
Session Windows
The duration of a session window is not fixed; rather, it is determined by the time interval between elements: if a period of idle time elapses between elements then a new session window is created.
Session windowing is often used when processing click data or other types of user activity--if a user is inactive for too long then the session window closed. A new session window is created once user activity resumes.
Unlike sliding and tumbling window functions, a session window is never empty.
Like the other windowing functions, the toSessionWindows function requires the source array collection to be sorted chronologically. (See the Managing Time-ordered Arrays section for details about convenience functions that keep your source array sorted.)
The addToOrderedAndEvictSessions function, in particular, is useful for managing an array of events that is often transformed to a set of session windows. It is able to maintain a fixed number of sessions in the array, trimming the oldest sessions if a new event triggers the creation of a new session window.
TimeWindow Objects
Instead of using an array to represent the elements in a time window, the three functions described above return their results in TimeWindow objects. A TimeWindow instance does not contain a copy of the elements it contains--rather, it is an efficient iterator over the slice of the source array whose elements fall within the window's time range. This approach avoids excessive memory allocation and array copies, reducing GC overhead.
The TimeWindow class provides a toArray() method if the elements need to be represented as an array. Use of this method may be required when working with libraries that only accept arrays, such as Math.js.
To reduce allocations when array usage is unavoidable, the TimeWindow class also provides a number of functional methods such as filter, map, and reduce. These methods work directly on the TimeWindow iterator and behave identically to their corollaries on a standard JavaScript Array object.
For example, if the Math.js library was used to calculate the average of the heart rate readings in the example above, the map method on the TimeWindow object could be used to extract values from each element more efficiently:
'use strict';
const tw = require('time-windowing');
const math = require('mathjs');
// [Setup from HeartRateReading example above elided.]
for (const win of slidingWindows) {
// Extract heart rate from readings from window and calculate average.
// BAD: Two array allocations:
const winAsArray1 = win.toArray(); // 1st array allocation
const hbArray1 = winAsArray.map(r => r.beatsPerMinute); // 2nd array allocation
const avg1 = math.mean(hbArray1);
// GOOD: One array allocation:
const hbArray2 = win.map(r => r.beatsPerMinute); // 1st array allocation
const avg2 = math.mean(hbArray2);
}
In short, consider using the methods on a TimeWindow object when processing its elements. The functional style these methods promote can result in more efficient code.
Managing Time-ordered Arrays
In addition to the three windowing functions detailed above, the library provides three convenience functions to aid in the management and processing of time-ordered events. These wrappers perform the following work on your behalf:
- addToOrdered: Adds one or more elements to a time-ordered array of items, inserting them in chronological order.
- addToOrderedAndEvictOldest: Adds one or more elements and then removes the oldest element(s) if the resulting size of the destination array exceeds the supplied maxArraySize argument.
- addToOrderedAndEvictBefore: Adds one or more elements and then evicts any elements in the array whose timestamp is prior to the supplied startTime argument.
- addToOrderedAndEvictSessions: Adds one or more elements, and, if the number of sessions in the destination array exceeds the supplied maxSessionCount argument, evicts elements in the oldest session(s) in the destination array will be evicted.


Most advanced database with a graph backend.
Managed by us. Deployed in your cloud.
Fully managed GraphQL backend in one click.
Pricing breakdown
Badger DB & Ristretto
For Dgraph and Slash GraphQL
From GraphQL Basics to Building an App
Updates from Dgraph Labs
Dgraph Database in a Nutshell
An Interactive Dgraph Demo
Dgraph vs Other Graph Databases
Managed by us.Deployed in your cloud.
Docs for Dgraph and Slash GraphQL
Meet our amazing team.
Join us to build smarter apps.
A welcoming community.
We are here to help.


Request Details
Description:
Type: "select a type"
Stream
History
Keywords:
Add them separated by commas example "exp1,exp2"
Languages:
All Languages
Afrikanns
Albanian
Arabic
Armenian
Basque
Bengali
Bulgarian
Catalan
Cambodian
Chinese (Mandarin)
Croation
Czech
Danish
Dutch
English
Estonian
Fiji
Finnish
French
Georgian
German
Greek
Gujarati
Hebrew
Hindi
Hungarian
Icelandic
Indonesian
Irish
Italian
Japanese
Javanese
Korean
Latin
Latvian
Lithuanian
Macedonian
Malay
Malayalam
Maltese
Maori
Marathi
Mongolian
Nepali
Norwegian
Persian
Polish
Portuguese
Punjabi
Quechua
Romanian
Russian
Samoan
Serbian
Slovak
Slovenian
Spanish
Swahili
Swedish
Tamil
Tatar
Telugu
Thai
Tibetan
Tonga
Turkish
Ukranian
Urdu
Uzbek
Vietnamese
Welsh
Xhosa
Submit


Work Day Scheduler
A simple calendar app for scheduling your work day
Preference
Time
9:00am
10:00am
11:00am
12:00pm
1:00pm
2:00pm
3:00pm
4:00pm
5:00pm
task
Submit


etcetera.string
String module.
License
MIT. See LICENSE for full details.
Functions:
unquote
Remove single double or back quotes from around a passed
string
.


A deposit transfer fee of %depositfee% satoshis will be deducted from the deposit.
When the transaction is confirmed, this page to complete the deposit.
Any help button () elsewhere in the interface will display related help information.
Use the selection box on the left to choose an account for game play,
cash outs, or transfers.
Click on the clipboard button on the right to copy the account address to the
system clipboard. You can use the copied address to check on the status of a
deposit or transfer using a third-party service.
The address displayed is the currently selected and logged-in account.
Click on the clipboard button on the right to copy the account address to the
system clipboard.
This area displays your current account balance.
If a deposit has been made but not yet confirmed, the balance will display 0.
Refresh the page to see the new balance once the deposit is confirmed.
If there's a problem retrieving the account balance it will be "unavailable".
Use this field to enter the password associated with the selected account.
If saving of account passwords is enabled (default), the password for an account
is automatically entered here when the account is selected.
Click on the "USE ACCOUNT" button to use the selected account with the
specified "Password" to create or join a table.
Click on the "CREATE NEW ACCOUNT" to create a new cryptocurrency account
(you will be taken to a new form).
Use this feature to send some or all of the selected account's balance to another address.
Enter the amount to send in the "Amount" field, in satoshis.
Enter the recipient address in the "Address" field.
The final input field (Miner Fee), will be automatically filled with the recommended
optimal miner fee, in satoshis, for the transaction. You can change this value but be aware
that it may affect the time required for the transaction to be included in a block.
When the required information has been entered, click the "CASH OUT / WITHDRAW" button on the left.
Use this feature to transfer some or all of the selected account's balance to another account.
Enter the amount to transfer in the "Amount" field, in satoshis.
Enter the recipient account address in the "Account" field. The account address must be one created by this account system.
When the required information has been entered, click the "TRANSFER" button on the left.
This form is used to create a new table (game).
As the table's creator you will automatically join it and begin advertising
it to other players.
Enter your desired player alias (name) in this field.
Enter a descriptive name for the table (game) in this field.
Enter the required number of players, including yourself, that must join the table
in order for the game to begin.
Enter the required buy-in, in satoshis, for each player joining this table (game).
Once all required players have joined, this amount is subtracted from their accounts
and transferred to in-game balances managed by an associated game contract
until either the hand is completed or a player times out.
When a hand (game) is restarted, this process is repeated.
Enter the amount, in satoshis, to be posted by the big blind for this table.
This amount must be less than or equal to the buy-in.
Enter the amount, in satoshis, to be posted by the small blind for this table.
This amount must be less than or equal to the big blind amount.
Enter the inactivity timeout amount, in seconds, to use for this table.
When a player fails to perform an action before the timeout elapses the game ends and the player is penalized.
Click on this button when all of the above fields have been correctly completed in order
to create the new table and automatically start advertising it to other players.
Once the required number of players has joined the table, the buy-in amount is automatically
subtracted from their accounts and transfered to their in-game balance where it's managed
by the associated game contract.
The contract handles the in-game balances until either a winner(s) is determined or
a player times out.
Enter the desired player alias (name) for the game you wish to join in this field.
Any tables created and advertised by other players will appear below the Join Table header.
Once you've reviewed the information, click on the desired table to join it.
When the required number of players have joined the table, the game will automatically begin.
The advertised buy-in amount will be subtracted from your selected account and
transferred to an in-game balance where it'll be handled by an associated game contract until
the hand (game) has either completed or a player has timed out.
Use the number field on the left to enter an amount to bet or raise, in satoshis, then
click the "BET" button. A bet/raise/call amount is automatically entered for you based
on the current state of the game.
You may fold by clicking on the "FOLD" button when it's your turn.
A new hand may be dealt by clicking on the "NEW HAND" button when the previous
hand has completed and you're the next dealer. The same table parameters as the previous hand
are used to start the new hand.
This area displays a history of completed hands (games).
Winning hand(s) and associated player(s) are displayed in order
from oldest to newest.


Loading all these plots may take a little while. Please be patient.
Showing data from . Evolutions start versions back.


I found some old game prototypes I worked on, which were really projects I created while developing a hobby game engine.
Reaper Squadron
I had high hopes for this one, I wanted a game where I could fly Spitfires in space (Like in that Dr Who episode). It was really hard getting the plane to feel right while flying, eventually I found a balance and it started feeling right, but I abandoned it for reasons I can’t remember now.
Vortex
I’ve made a few Tempest style games, one for the PS2 in university. I quite enjoyed this one demo, but really tempest 2000 is near perfection anyway. The big thing of this game was how good and bad my engine was. It was really fast for me to get something up and running, but engine modifications were proving to be a pain in the arse.
Framework Hell
These prototypes were fun, but ultimately made me fall out with a full object orientated style.  It was painfully hard to make changes in the core. It also made it abundently clear that scripting languages are such a pain to embed and a joy to use. My next project will certainly build on these lessons. I’ve put up the code on Github here and here for the curious.


---
layout: archive
title: Lean Prover Zulip Chat Archive
permalink: 113489newmembers/19690Recursivelyprove.html
---
The archive URL format has changed. Please find this page at:
https://leanprover-community.github.io/archive/stream/113489-new-members/topic/Recursively.20prove.html


These slides will walk you through the changes from the v0 (LA) version of the Analytics API to the v1 (GA) version
The base URL for the API has changed:
Old URL:
https://data.brightcove.com/analytics-api/videocloud
New URL:
https://analytics.api.brightcove.com/v1
Authentication via the v0 (Limited Availabilty) is no longer supported. You must get access tokens for the Analytics API via the Brightcove OAuth Service. See Managing API Credentials for information on obtaining client credentials for the Analytics API.
Note: you can also use the OAuth service to authenticate calls to the v0 API. You may want to test this with working apps before migrating to v1, to make sure you have the authentication implemented correctly.
Also note: for v1, you need permissions for the following operation:
Account rollup calls are no longer supported. If you were using rollups to get detailed engagement information on recent video views, you will now be able to obtain these through the new engagement endpoints.
Reports are now accessed through the data
resource rather than report
:
Old report endpoint
https://data.brightcove.com/analytics-api/videocloud/accounts/{accountId}/report
New report endpoint
https://analytics.api.brightcove.com/v1/data
accounts
is now a parameter rather than a resource in the URL path - this allows generation of reports on multiple accounts:
Old way:
.../accounts/{accountId}/report...
New way:
.../data?accounts={account_id1},{account_id2}...
Note: the new engagement endpoints and the video information endpoint still have /accounts/{account_id}/ in the URL path, and accept requests for a single account only.
The day
dimension for reports is replaced by the date
dimension. The date
dimension works in the same way and returns the same data as the old day
dimension. See the guide to the date
dimension for more information.
The date_hour
dimension is used like the date
dimension, but allows you to get hourly data for periods within the previous 32 days. If the range for the date_hour
requests extends outside the previous 32 days, an error will be returned. To specify hours of the day for request, set the from
and to
parameters to millisecond value of epoch time rather than using MM-DD-YYYY dates. For example:
.../data?accounts={account_id}&dimensions=date_hour&from=1425938965193&to=1425946165193
See the guide to the date_hour
dimension for more information.
Reports will always have these three top-level fields (only):
summary
item_count
items
Fields returned for reports on multiple dimensions will be a union of the fields for each dimension included in the request. See the Analytics API Overview for information on what dimensions can be combined in reports.
fields
and sort
parametersfields
and sort
parameters are strictly validated. If you include a field that is not supported for the call you are making, an error will be returned.If you include video.reference_id
in fields
for reports on the video
dimension, the reference id will be returned in the response (or null
if there is no reference id). Reference id data is cached for 24 hours, and so will not reflect changes made in the past 24 hours.
Note: video.reference_id
must be explicitly included in fields
in order to return it. fields=all
will not include this field.
If you include video.tags
in fields
for reports on the video
dimension, the video tags will be returned in the response (or null
if there are no tags). Tags data is cached for 24 hours, and so will not reflect changes made in the past 24 hours.
Note: video.tags
must be explicitly included in fields
in order to return it. fields=all
will not include this field.
The where
filter syntax for tags and reference ids is as follows:
Filter by tags
where=video.q==tags:foo,bar
Filter by reference ids
where=video.q==reference_id:refid1,refid2
Three new engagement endpoints allow you to get granular engagement information for each 100th part of videos:
Account averages
.../engagement/accounts/{account_id}
Averages for a player
.../engagement/accounts/{account_id}/players/{player_id}
Engagement for a video
.../engagement/accounts/{account_id}/videos/{video_id}
The only parameters supported for engagement endpoints are from
and to
.
Only periods within the previous 32 days are supported for engagement endpoints.
Draft documentation for the Analytics API v1 is located at:
http://docs.brightcove.com/en/video-cloud/analytics-api-v1/index.html
API Overview
http://docs.brightcove.com/en/video-cloud/analytics-api-v1/getting-started/api-overview.html
Migration Guide
http://docs.brightcove.com/en/video-cloud/analytics-api-v1/getting-started/migration-guide.html
Post-release documentation for the Analytics API v1 will be located at:
http://docs.brightcove.com/en/video-cloud/analytics-api/index.html
API Overview
http://docs.brightcove.com/en/video-cloud/analytics-api/getting-started/api-overview.html
Migration Guide
http://docs.brightcove.com/en/video-cloud/analytics-api/getting-started/migration-guide.html
Learning Services has created a shell script that you can you use to test API requests for any of our new APIs. Download the script from http//docs.brightcove.com/en/video-cloud/oauth-api/assets/api-tester.sh.zip
Unzip the script to any folder. To run the script, open a command line in the same folder and type:
bash api-tester.sh
The script will prompt you for:
Windows users: you will need to install cygwin to run shell scripts. See instructions at http://docs.brightcove.com/en/video-cloud/concepts/curl/curl.html
Note: Because the v1 version of the API is not yet in production, this demo will use a special version of the api-tester script for our QA environment.
/


--- title: A/B Testing with Cookie Cats author: Lucia Darrow date: '2020-10-20' slug: a-b-testing-with-cookie-cats image: images/mobilegame.jpg categories: - R tags: [] ---
Cookie Cats is a colorful mobile game, where the user’s goal is to collect cookies (connect-4-style) and feed hungry cats. In this analysis, I use A/B testing to help decide at which level to place gates in the game. Gates are pauses in the game where the user must make an in-app purchase or wait a certain amount of time before progressing to the next level. Beyond providing additional revenue, these gates serve as rest time for the user, which in turn, increases and prolongs enjoyment. In this analysis, we’ll answer the questions: Shere should gates be placed in the Cookie Cats app? Should the gate be moved from level 30 to level 40?
The supporting mobile game data for this analysis was sourced from DataCamp Projects. I recommend checking out DataCamp courses and projects as an interactive way to learn Data Science.
I was curious about the look and feel of the game, so I installed Cookie Cats and played a few rounds. I noticed there were long load times between levels and the game is definitely geared towards children. Personally, I could not imagine playing 30-40 consecutive rounds in one sitting!
After familiarizing myself with the game, I turned to the data to explore some high level features. DataCamp provides these definitions for the data fields:
userid
- a unique number that identifies each player.version
- whether the player was put in the control group (gate_30
- a gate at level 30) or the group with the moved gate (gate_40
- a gate at level 40).sum_gamerounds
- the number of game rounds played by the player during the first 14 days after install.retention_1
- did the player come back and play 1 day after installing?retention_7
- did the player come back and play 7 days after installing?With these definitions in mind, let’s take a look at the number of players that encountered a gate at level 30 vs those that encountered a gate at level 40:
## # A tibble: 2 x 2
## version n
## <chr> <int>
## 1 gate_30 44700
## 2 gate_40 45489
Next, let’s explore the average retention statistics by gate version:
## # A tibble: 2 x 3
## version avg_retention_1 avg_retention_7
## <chr> <dbl> <dbl>
## 1 gate_30 0.448 0.190
## 2 gate_40 0.442 0.182
From this high level summary, it looks as if both 1- and 7-day retention are slightly higher for the game version with gates at level 30. What does the distribution of game rounds look like for the level 30 and level 40 version of the game? There are a few high-round players, but we’ll limit to 100 rounds for this overview graphic:
From this graphic, we can see the overall distributions are quite similiar, although it looks like the lines diverage around the rounds we are testing. Let’s look into each retention metric in detail to see if there is a significant difference between the two.
There appears to be a slight difference between the 1-day average retention with the gate at level 30 (44.8%), in comparison to the gate at level 40 (44.2%). We’ll use bootstrapping to explore this difference and to better understand uncertainty in the retention values.
The percent difference graphic shows that the most likely percent difference is around 1-2%, indicating better performance with the gate at level 30. Let’s calculate the probability that the difference is above 0%:
## # A tibble: 1 x 1
## gate_30_hgr
## <dbl>
## 1 0.95
Having played a few rounds of the game, I recognize that both level 30 and level 40 would take a fairly long time to reach. With that in mind, 7-day retention may be a better metric for this particular question. Let’s explore the difference using 7-days time.
Overall, 7-day retention is lower for both versions of the game. This makes sense as fewer players will continue playing for a longer duration of time. As we saw with 1-day retention, there appears to be a slight difference between the 7-day average retention with the gate at level 30 (19.0%), in comparison to the gate at level 40 (18.2%). We’ll use bootstrapping to explore this difference and to better understand uncertainty in the retention values.
Here the percent difference graphic shows that the most likely percent difference is around 3-5%, again indicating better performance with the gate at level 30. Let’s calculate the probability that the difference is above 0%:
## # A tibble: 1 x 1
## gate_30_hgr
## <dbl>
## 1 1
The bootstrap result tells us that there is strong evidence that 7-day retention is higher when the gate is at level 30 than when it is at level 40. If we want to keep retention high — both 1-day and 7-day retention — we should not move the gate from level 30 to level 40. There are, of course, other metrics we could look at, like the number of game rounds played or how much in-game purchases are made by the two AB-groups, but retention is one of the most important metrics. If we don’t retain our player base, it doesn’t matter how much money they spend in-game.
While it is a bit counterintuitive that placing the gate earlier would increase retention, this result aligns with theory surrounding game play: players are more satisfied when they take breaks from a mobile game.


--- ---
|
Event Title: |
"Two applications of Topology to Impossibility results in Computer Science" |
|
Speaker: |
Dr. Amit Chakrabarti |
|
Affiliation: |
Dartmouth College |
|
Abstract/Brief Description: |
Impossibility results have fascinated mathematicians since ancient times, when the Greeks puzzled about trisecting angles and squaring the circle. Today, impossibility results are at the core of theoretical computer science, where they help us understand the fundamental capabilities and inabilities of computation. As with trisection, or squaring the circle, a proof of impossibility typically draws upon mathematics far more advanced than that the required to state the problem. The situation is no different in computer science and in this talk I shall illustrate how two topological results have unexpected applications in the seemingly unrelated field of computer algorithms. The first application is a now-classic result of Ben-or on the element distinctness problem and will introduce decision trees. These in turn play a role in the second application, on testing graph properties, and features some recent work of mine. |
|
Subject Area: |
Mathematics |
|
Date: |
|
|
Time: |
|
|
Venue: |
Lecture Hall - I, Dept. of Mathematics, IISc. |


|
To get started right away, just tap any placeholder text (such as this) and start typing to replace it with your own. View and edit this document in Word on your computer, tablet, or phone. You can edit text; easily insert content such as pictures, shapes, and tables; and seamlessly save the document to the cloud from Word on your Windows, Mac, Android, or iOS device. Think a document that looks this good has to be difficult to format? Think again! Some of the sample text in this document indicates the name of the style applied, so that you can easily apply the same formatting again. Heading 1Heading 3 |
|
|
|
|
Heading 1To apply any text formatting you see on this page with just a tap, on the Home tab of the ribbon, check out Styles. |
|
Heading 2You can use styles to easily format your Word documents in no time. For example, this text uses the Normal Indent style. |
|
|
|
|
Heading 1Want to insert a picture from your files or add a shape, text box, or table? You got it! On the Insert tab of the ribbon, just tap the option you need. |
|
Heading 2Find even more easy-to-use tools on the Insert tab, such as to add a hyperlink or insert a comment. |
|


|
LIGHTNING TALKS
Lightning talk speakers & talk titles
Thomas Caswell - Cycler
Andreus Muelk - wordcloud
Christine Doig - Conda for Data Science
Kyle Kastner - Deep learning, sklearn-theano
Rachel Rakov - Can we synthesize sarcastic speech using Twitter?
Nick Coghlan - Async IO at the REPL
Vipin - PyGridtools
Adam Kelleher - large scale graph vis
Tom Ballinger - rlundo: undo in any interpreter
Ryan Anguiano - Monolith to Microservices
|


Ezana Bahta
Web Developer
A little about me...
My name is Ezana Bahta a Developer from the Washington DC area. I graduated from General Assembly Bootcamp (GAB) November of 2018. Currently, I am applying what I learned through GAB's curriculum and building projects such as Visual Board applications to help keep your eyes on the prize. I am continuing to build on my experience and skills by gettings certified through the FreeCodeCamp Curriculum.
Prior to becoming a developer, I spent a lot of time in the Sales industry. Most recently, I was a manager at a Sprint Retail Store. There, I led my team to be one of the top performing stores in the Northern Virginia District. I also performed residential Heating, Ventilation and Air conditioning (HVAC) sales for one of the largest HVAC Companies In the US. In addition, I also worked with numbers while serving as a tax preparer in the Philadelphia Market.
When I am not coding, I am usually working on maintaining and detailing cars. I also enjoy spending time with friends and tackling a nifty project, such as those from instructables. I really enjoy do it your own (DIY) projects. Seeing challenging projects through gives me a sense of fulfillment. I have curiosity that motivates investigating and study and these projects allow me to do that. In conjunction. I have also picked up a hobby with drones. I build them, fly them and race them. I am very hands-on and hope the skills I have acquired through my study and hobbies are able to assist you!
Tribute Page
This is a project from FreeCodeCamp Responsive Design. Made a timeline tribute page on Haile Selassie using HTML5 and CSS3.
Vision Board
This is a project that I used Express, Mongoose, Handlebars to render page to users. I applied full CRUD (Create, Read, Update, Delete).
Hangman
This is a project where I applied JavaScript to render to the DOM of the HTML with CSS styling.