---
layout: resume
---
Robert Clark
Whitby, Ontario, Canada
905 259 4492
<EMAIL_ADDRESS>Education
Trent University
2014 - Present
-
Major: Anthropology
-
Major: Business
-
Related coursework: Archaeological Field School (Ontario Historic Field School)
Work Experience
Home Depot - Tool Rental Sales Associate
July 2008 - Present
- Responsible for communication with vendors, and arranging delivery of required parts.
- Organizing and filing paperwork.
- Collating rental statistics into useful documents.
- Small engine and tool repair.
A&P - Shop Clerk
2001 - 2008
- Basic customer service.
- Restocking shelves, cashier functions and other functions as required.
Achievements & Certifications
- WHIMIS
- Smart Serve
- First Aid
- Dean's Honour Roll
Skills
- Effective writer. Able to analyze data quickly, and to effectively communicate that data as needed.
- Familiar with the Office Suite of products. Quite adept with Word, Outlook and PowerPoint. Also able to use Excel and Access.
- Excellent at problem solving, where it relates to computer issues. Also quick at picking up new applications and programs.
Interests and Projects
Writing
- Have been writing in a shared fictional universe for nearly a decade.
- Enjoy creating histories of fictional worlds, including their cultures, languages, geographies and major figures.
- The development of characters, and creating stories involving them.
Printer and PDF version


Located in /testcase.php (line 144)
Documentation generated on Sun, 19 Dec 2010 22:42:56 +0100 by phpDocumentor 1.4.3


The years, sometimes by accident, sometimes on purpose (injected humour and the like).
The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.
Ipsum used since the 1500s is reproduced below for those interested.
The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.
Hampden-Sydney College in Virginia, looked up one.
All the Lorem Ipsum generators on the Internet .
Standard chunk is reproduced below for those.


DBC Fiddler Crabs 2016 Blog
December 21, 2015
What are the differences between relative, absolute, fixed, and static positioning?
Relative positioning is what happens when you use the Cascading Style Sheets language to enhance a Hyper Text Markup Language element in a web page so that the element's emplacement on the page is based off the initial html tag on the page. Absolute positioning is when an element is placed based on it's nearest parent element with absolute positioning, unless it does not have a parent element with absolute positioning, in which case it's position is relative. Fixed positioning is when an element is "glued" to the screen, that is, it doesnt move when you scroll.  Static positioning is when an element is just plopped on a page. You can find an additional resource here.


Carmilla is a web series co-created by Jordan Hall, Steph Ouaknine, and Jay Bennet, loosely based on the novella written by Sheridan Le Fanu in 1872. The series premiered on the YouTube channel Vervegirl (since rebranded as KindaTV as of January 2016) on August 19, 2014. The series was sponsored by U by Kotex and were additionally the executive producer of the web series. The web series was produced by Smokebomb Entertainment, which is the digital media division of Shaftesbury.
The series is set in Styria, Austria at the fictional Silas University. The story is centered around Laura Hollis (Elise Bauman) and Carmilla Karnstein (Natasha Negovanlis) and is told from the perspective of Laura’s vlogs. Season one starts with Laura as she begins to investigate the strange disappearance of Silas students, including that of her own roommate, until she is assigned Carmilla as her new roommate. The season then follows Laura's investigation along with her relationship with Carmilla, which begins with hostility, but slowly turns romantic over the course of Season One.
The series contains 4 seasons in total, including a “Season Zero” which is a twelve-episode prequel. Each season contains 36 episodes ranging from three to seven minutes in length. It was then announced in 2016 that there would be a feature film made of the series that would be set five years after the end of season three. The film, The Carmilla Movie, received half of its funding from its fans (“Creampuffs”) and was released on October 26, 2017. A primetime series has been in development by Shaftesbury TV since the middle of 2018. An adaptation of Season 1 was written by Kim Turrisi as a young adult novel, released May 7, 2019.
There are numerous pieces of additional content that were released in conjunction with Seasons 0-3. Post Season one there was a Christmas special filmed and released detailing the group’s travels after the conclusion of the season, along with the creation of canon twitter accounts under Laura, Carmilla, and Lafontaine’s names which are used in conjunction with the release of various episodes throughout the series. During Season three, thirteen podcasts created by Mel were released detailing the daily life and various events that happen while Silas students are trapped in the pit.
The web series has generated over 91 million views on Youtube and has been viewed in over 193 countries around the world. In 2015, the series was nominated for both a Streamy and Shorty Award for best drama and favorite webshow respectively. In 2016, the series won a Canadian Screen Award for Digital Media Program/Series - Fiction and a Rockie Award for Branded Content at the Banff World Media Festival. In 2018, the series once again won an award for Branded Content of the Year at the MIPTV Media Market.


Here’s a little test that makes sure you have really learned the essentials.
1. What is the emergency telephone number?
2. You need a prepaid sim-card for your mobile phone. Where to buy it?
3. You are thirsty, is it safe to drink tap water?
4. Finn drink a lot of:
5.  How do you greet her/him?


Structs
The following structs are available globally.
-
Undocumented
See more
-
Undocumented
See more -
Each bank account has a list of transactions associated with it. The length of this list depends on the bank and time this account has been setup. In general the information provided for each transaction should be roughly similar to the contents of the printed or online transaction statement available from the respective bank. Please note that not all banks provide the same level of detail.
ADDITIONAL TRANSACTION INFO
For PayPal we provide the gross amount and fees of a transaction in an additional_info object. In the future we will add more properties to this object which are depending on the account type.
TRANSACTION TYPE
In order to simplify your analysis of the users transaction, they are pre-categorized into one of the following types: Transfer, Standing order, Direct debit, Salary or rent, * Electronic cash*, GeldKarte, ATM, Charges or interest or Unknown.
PENDING TRANSACTIONS
Some banks provide information on transaction, which have not yet been executed. These transactions are called pending. Figo marks them with the booked flag being false. As soon as the bank reports the execution of these transactions, this flag changes to true. If such a pending transaction fails to execute, it is automatically removed from the transaction list.
See moreNote
Amounts in cents: YESDeclaration
Swift
public struct Transaction: Unboxable
-
Undocumented
See more -
Each depot account has a list of securities associated with it. In general the information provided for each security should be roughly similar to the contents of the printed or online depot listings available from the respective bank. Please note that not all banks provide the same level of detail.
See moreNote
Amounts in cents: YESDeclaration
Swift
public struct Security: Unboxable
-
Undocumented
See more
-
Parameters for RETRIEVE TRANSACTIONS endpoints
Note
The default number for the limit parameter is 1000
Parameter
Parameter accounts: optional If retrieving the transactions for all accounts, filter the transactions to be only from these accounts
Parameter
Parameter since: optional This parameter can either be a transaction ID or an ISO date.
transaction ID
the transactions which are newer than the referenced transaction will be returned in the response. The exact meaning of newer depends on the value of since_type
ISO date
the transactions which were booked on or after this date will be returned in the response
Parameter
Parameter sinceType: optional This parameter defines how the parameter since will be interpreted.
booked (default)
the value of the parameter since will be compared to the booking date of the transaction.
created
the value of the parameter since will be compared to the creation time of the transaction on the figo Connect server
modified
the value of the parameter since will be compared to the last modification time of the transaction on the figo Connect server. The response parameter transactions will contain not only newly created transactions but also modified transactions. The response parameter deleted will contain a list of removed transactions.
Parameter
Parameter until: optional Return only transactions which were booked on or before this date. Please provide as ISO date
Parameter
Parameter filter: optional Filter expression to narrow down the returned transactions
Parameter
Parameter count: optional Limit the number of returned transactions. In combination with the offset parameter this can be used to paginate the result list. (default: 1000)
Parameter
Parameter offset: optional Offset into the implicit list of transactions used as starting point for the returned transactions. In combination with the count parameter this can be used to paginate the result list.
Parameter
Parameter includePending: optional This flag indicates whether pending transactions should be included in the response. Pending transactions are always included as a complete set, regardless of the since parameter. Before caching a copy of the pending transactions, all existing pending transactions for the same account must be removed from the local cache. (default: false)
Parameter
Parameter includeStatistics: optional This flag indicates whether statistics over the filtered transaction list should returned alongside the actual transactions. These statistics are always computed on the complete filtered transaction list, i.e. without count and offset. (default: false)
See moreParameter
Parameter type: optional A list of transactions types which the transactions are filtered by.
Declaration
Swift
public struct RetrieveTransactionsParameters: JSONObjectConvertible
Parameters
accounts
If retrieving the transactions for all accounts, filter the transactions to be only from these accounts
since
This parameter can either be a transaction ID or an ISO date.
the transactions which are newer than the referenced transaction will be returned in the response. The exact meaning of newer depends on the value of since_type
the transactions which were booked on or after this date will be returned in the response
sinceType
This parameter defines how the parameter since will be interpreted.
the value of the parameter since will be compared to the booking date of the transaction.
the value of the parameter since will be compared to the creation time of the transaction on the figo Connect server
the value of the parameter since will be compared to the last modification time of the transaction on the figo Connect server. The response parameter transactions will contain not only newly created transactions but also modified transactions. The response parameter deleted will contain a list of removed transactions.
until
Return only transactions which were booked on or before this date. Please provide as ISO date
filter
Filter expression to narrow down the returned transactions
count
Limit the number of returned transactions. In combination with the offset parameter this can be used to paginate the result list. (default: 1000)
offset
Offset into the implicit list of transactions used as starting point for the returned transactions. In combination with the count parameter this can be used to paginate the result list.
includePending
This flag indicates whether pending transactions should be included in the response. Pending transactions are always included as a complete set, regardless of the since parameter. Before caching a copy of the pending transactions, all existing pending transactions for the same account must be removed from the local cache. (default: false)
includeStatistics
This flag indicates whether statistics over the filtered transaction list should returned alongside the actual transactions. These statistics are always computed on the complete filtered transaction list, i.e. without count and offset. (default: false)
type
A list of transactions types which the transactions are filtered by.
-
Bank accounts can have standing orders associated with it if supported by the respective bank. In general the information provided for each standing order should be roughly similar to the content of the printed or online standing order statement available from the respective bank. Please note that not all banks provide the same level of detail.
EXECUTION DAY AND INTERVAL
When working with standing orders you have to take some characteristics into account. If a last_execution_date is set, the standing order has a limited term and will not run indefinitely.
If you want to identify the next execution date you have to use the interval and execution_day parameters to calculate the next execution date. Interval defines the regular cycle the standing order gets executed. Possible values are: weekly, monthly, two monthly, quarterly, half yearly or yearly.
On top of it the execution_day states the day of execution within the interval. This value depends on the interval chosen.
- If the interval is set to weekly, possible values for execution_day are: 00 (daily), 01 (monday), 02 (tuesday) … 07 (sunday).
- If the interval is set to one of the other possible values, execution_day could be: 01 - 30 (1st day of the month to 30th day of the month), 97 (closing of the month - 2), 98(closing of the month - 1) or 99 (closing of the month)
REQUEST STANDING ORDERS
Standing orders aren’t requested by default when a new bank account is setup. Make sure to add the value “standingOrder” to the sync_tasks list
Declaration
Swift
public struct StandingOrder: Unboxable
-
Undocumented
See more
-
Undocumented
See more
-
Contains the parameters for setting up a new bank account
See moreNote
At least one of eitherbankCode
oriban
has to be setDeclaration
Swift
public struct CreateAccountParameters
-
Undocumented
See more
-
See more
Note
Amounts in cents: NO (server problem)Declaration
Swift
public struct Payment: Unboxable
-
Parameters for RETRIEVE SECURITIES endpoints
Note
The default number for the limit parameter is 1000
Parameter
Parameter accounts: optional If retrieving the securities for all accounts, filter the securities to be only from these accounts
Parameter
Parameter since: optional ISO date filtering the returned securities by their creation or last modification date (depending on sync_type) being the same or a later date
Parameter
Parameter sinceType: optional This parameter defines how the parameter since will be interpreted.
traded
The value of the parameter since will be compared to the time of the latest trade of the security
created
The value of the parameter since will be compared to the creation time of the security on the figo Connect server (default)
modified
The value of the parameter since will be compared to the last modification time of the security on the figo Connect server.
Parameter
Parameter count: optional Limit the number of returned transactions. In combination with the offset parameter this can be used to paginate the result list. (default: 1000)
See moreParameter
Parameter offset: optional Offset into the implicit list of transactions used as starting point for the returned transactions. In combination with the count parameter this can be used to paginate the result list.
Declaration
Swift
public struct RetrieveSecuritiesParameters: JSONObjectConvertible
Parameters
accounts
If retrieving the securities for all accounts, filter the securities to be only from these accounts
since
ISO date filtering the returned securities by their creation or last modification date (depending on sync_type) being the same or a later date
sinceType
This parameter defines how the parameter since will be interpreted.
The value of the parameter since will be compared to the time of the latest trade of the security
The value of the parameter since will be compared to the creation time of the security on the figo Connect server (default)
The value of the parameter since will be compared to the last modification time of the security on the figo Connect server.
count
Limit the number of returned transactions. In combination with the offset parameter this can be used to paginate the result list. (default: 1000)
offset
Offset into the implicit list of transactions used as starting point for the returned transactions. In combination with the count parameter this can be used to paginate the result list.
-
Bank accounts are the central domain object of this API and the main anchor point for many of the other resources. This API does not only consider classical bank accounts as account, but also alternative banking services, e.g. credit cards or Paypal. The API does not distinguish between these two in most points.
See moreDeclaration
Swift
public struct Account: Unboxable
-
Undocumented
See more
-
Parameters for the CREATE NEW SYNCHRONIZATION TASK endpoint
See moreDeclaration
Swift
public struct CreateSyncTaskParameters: JSONObjectConvertible
-
Provides a Foundation.Date representation for the server’s timestamps
See moreDeclaration
Swift
public struct FigoDate: UnboxableByTransform, CustomStringConvertible
-
Parameters for creating a payment
Parameters:
- accountID: required Internal figo connect ID of the account
- type: required Payment type (valid values: Transfer, Direct debit, SEPA transfer, SEPA direct debit, SEPA standing order, Modify SEPA standing order)
- name: required Name of creditor or debtor
- amount: required Order amount
- purpose: required Purpose text
- accountNumber: optional Account number of creditor or debtor
- bankCode: optional Bank code of creditor or debtor
- iban: optional IBAN of creditor or debtor. Will overwrite bank_code and account_number if both are set
- currency: optional Three-character currency code (default: EUR)
- textKey: optional DTA text key (default: 51)
- textKeyExtension: optional DTA text key extension
- notificationRecipient: optional Recipient of the payment notification, should be an email address
See moreNote
Either bankCode & accountNumber or iban has to be set
Declaration
Swift
public struct CreatePaymentParameters: JSONObjectConvertible
Parameters
accountID
Internal figo connect ID of the account
type
Payment type (valid values: Transfer, Direct debit, SEPA transfer, SEPA direct debit, SEPA standing order, Modify SEPA standing order)
name
Name of creditor or debtor
amount
Order amount
purpose
Purpose text
accountNumber
Account number of creditor or debtor
bankCode
Bank code of creditor or debtor
iban
IBAN of creditor or debtor. Will overwrite bank_code and account_number if both are set
currency
Three-character currency code (default: EUR)
textKey
DTA text key (default: 51)
textKeyExtension
DTA text key extension
notificationRecipient
Recipient of the payment notification, should be an email address
-
If an error occurs, the API returns an error object with a couple of fields providing further details.
See moreDeclaration
Swift
public struct FigoError: Error, CustomStringConvertible, Unboxable
-
Undocumented
See more
-
Undocumented
See more
-
Parameters for the endpoint CREATE NEW FIGO USER
Parameter
Parameter name: required First and last nameParameter
Parameter email: required Email address; It must obey the figo username & password policyParameter
Parameter password: required New figo Account password; It must obey the figo username & password policyParameter
Parameter sendNewsletter: optional This flag indicates whether the user has agreed to be contacted by email (optional)See moreParameter
Parameter language: optional Two-letter code of preferred language (default: de)Declaration
Swift
public struct CreateUserParameters: JSONObjectConvertible
Parameters
name
First and last name
email
Email address; It must obey the figo username & password policy
password
New figo Account password; It must obey the figo username & password policy
sendNewsletter
This flag indicates whether the user has agreed to be contacted by email (optional)
language
Two-letter code of preferred language (default: de)


| pluginsAttribute {Rcpp} | R Documentation |
The Rcpp::plugins
attribute is added to a C++ source file to specify the
inline plugins that should be used in the compilation.
// [[Rcpp::plugins(plugin1, plugin2)]]
... |
Plugins to add to the compilation. |
Plugins must be registered using the registerPlugin
function.
When included within a sourceCpp
translation unit,
the configuration-related fields of the plugin (e.g. env
and
LinkingTo
) are utilized, however the code-generation fields
(e.g. includes
and body
) are not.
Rcpp includes a built-in cpp11
plugin that
adds the flags required to enable C++11
features in the compiler.
## Not run: // [[Rcpp::plugins(cpp11)]] // [[Rcpp::export]] int useCpp11() { auto x = 10; return x; } ## End(Not run)


Class Control
This interface implements new manditory additions which aren't present in Instance
Inheritance
System.Object
Control
Inherited Members
System.Object.ToString()
System.Object.Equals(System.Object)
System.Object.Equals(System.Object, System.Object)
System.Object.ReferenceEquals(System.Object, System.Object)
System.Object.GetHashCode()
System.Object.GetType()
System.Object.MemberwiseClone()
Assembly: Inferno.Desktop.dll
Syntax
public abstract class Control
Constructors
|
Improve this Doc
View Source
Control(Nullable<Vector2>, String, Font, Nullable<Color>, Nullable<Color>, Nullable<Color>, Int32, Sprite, Int32, Int32, Boolean)
Declaration
protected Control(Vector2? position = default(Vector2? ), string text = "", Font textFont = null, Color? foreColor = default(Color? ), Color? backColor = default(Color? ), Color? borderColor = default(Color? ), int borderWidth = 1, Sprite background = null, int width = 0, int height = 0, bool highlightOnHover = false)
Parameters
| Type |
Name |
Description |
| System.Nullable<Vector2> |
position |
|
| System.String |
text |
|
| Font |
textFont |
|
| System.Nullable<Color> |
foreColor |
|
| System.Nullable<Color> |
backColor |
|
| System.Nullable<Color> |
borderColor |
|
| System.Int32 |
borderWidth |
|
| Sprite |
background |
|
| System.Int32 |
width |
|
| System.Int32 |
height |
|
| System.Boolean |
highlightOnHover |
|
Fields
|
Improve this Doc
View Source
BackColor
Declaration
Field Value
|
Improve this Doc
View Source
Background
The background applied to the control
Declaration
Field Value
|
Improve this Doc
View Source
BorderColor
Declaration
Field Value
|
Improve this Doc
View Source
BorderWidth
Declaration
Field Value
| Type |
Description |
| System.Int32 |
|
|
Improve this Doc
View Source
ForeColor
Declaration
Field Value
|
Improve this Doc
View Source
Height
Declaration
Field Value
| Type |
Description |
| System.Int32 |
|
|
Improve this Doc
View Source
HighlightOnHover
Declaration
public bool HighlightOnHover
Field Value
| Type |
Description |
| System.Boolean |
|
|
Improve this Doc
View Source
OnTextChanged
Declaration
public EventHandler<Control.TextChangedEventArgs> OnTextChanged
Field Value
|
Improve this Doc
View Source
Position
Declaration
Field Value
|
Improve this Doc
View Source
State
Declaration
public ControlState State
Field Value
|
Improve this Doc
View Source
TabIndex
The tab index (-1 = not indexed)
Declaration
Field Value
| Type |
Description |
| System.Int32 |
|
|
Improve this Doc
View Source
TextFont
Declaration
Field Value
|
Improve this Doc
View Source
UIOffset
The coordinate offset for mouse input
Declaration
Field Value
|
Improve this Doc
View Source
Width
Declaration
Field Value
| Type |
Description |
| System.Int32 |
|
Properties
|
Improve this Doc
View Source
Bounds
Declaration
public Rectangle Bounds { get; }
Property Value
|
Improve this Doc
View Source
Text
The text to be drawn at the center of the Control
Declaration
public string Text { get; set; }
Property Value
| Type |
Description |
| System.String |
|
Methods
|
Improve this Doc
View Source
Draw(Renderer)
Declaration
public virtual void Draw(Renderer renderer)
Parameters
|
Improve this Doc
View Source
Update()
Declaration
public virtual void Update()
Events
|
Improve this Doc
View Source
ControlClicked
Declaration
public event Control.ControlClickedEvent ControlClicked
Event Type
|
Improve this Doc
View Source
ControlHovered
Declaration
public event Control.ControlHoveredEvent ControlHovered
Event Type


{% include head.html %}
{% include nav.html %} {% include header.html %} {% include photo-grid.html %} {% include events.html %} {% include travel.html %} {% include things-to-do.html %} {% include registry.html %} {% include footer.html %} {% include js.html %}


Types of edge bevels for Subdivision Surface Modeling.
Types of edge bevels for Subdivision Surface Modeling.
Another short tutorial. Not sure what to call this shape, but I’ve seen it on lots of objects.
3 types of rounded cylinder caps.
Five types of cylinder caps. Bottom row is with Level one Sub-Surf.
Adding holes to a flat surface


Know your AI
Where to use AI?
Dirty
Dull
Dangerous
Difficult
What is AI ?
Build your AI
Build your AI
Ethical problems in AI
Will AI take over the world?
Next
Previous


Webapp
The Webapp service is a simple gunicorn/Flask based frontend that provides a web UI to:
Visualise the latest anomalies that have been triggered.
Visualise historic anomalies that have been recorded by Panorama.
An api to query Redis for a metric time series which returns the time series in json e.g.
/api?metric=skyline.analyzer.hostname.total_metrics
An api to query Graphite for a metric time series which returns the time series in json that takes the following parameters:
graphite_metric
- metric namefrom_timestamp
- unix timestampuntil_timestamp
- unix timestampe.g.
/api?graphite_metric=skyline.analyzer.hostname.total_metrics&from_timestamp=1370975198&until_timestamp=1403204156
Publish the Skyline docs.
Browse the Redis DB with a port of Marian Steinbach’s excellent rebrow https://github.com/marians/rebrow
A basic overview of the Webapp
Deploying the Webapp
Originally the Webapp was deployed behind the simple Flask development server, however for numerous reasons, this is less than ideal. Although the Webapp can still be run with Flask only, the recommended way to run the Webapp is via gunicorn, which is HTTP proxied by nginx. The gunicorn Webapp can be exposed just like the Flask Webapp, but it is recommended to run it HTTP proxied.
Using a production grade HTTP application
It must be noted and stated that you should consider running the Skyline Webapp behind a production grade HTTP application, regardless of the implemented basic security measures with nginx serving the Webapp via gunicorn.
This may seem like overkill, however there are a number of valid reasons for this.
Production infrastructure
It is highly probable that Skyline will often be run on cloud based infrastructure which is public and should therefore really be considered production.
Flask has a Deploying Options sections that covers running Flask apps in production environments. See http://flask.pocoo.org/docs/0.11/deploying/
In addition to that, considering that the Webapp has MySQL in the mix, this element adds further reason to properly secure the environment.
There might be possible potential for XSS and SQL injection via the Webapp, therefore ensure TRUSTED access only.
nginx and gunicorn
Although there are a number of options to run a production grade wsgi frontend, the example here will document serving gunicorn via nginx reverse proxy with authentication.
nginx is a common webserver and gunicorn is handled within the Skyline package and requirements.txt
See etc/skyline.nginx.conf.d.example
for an example of the nginx conf.d
configuration file to serve the Webapp via gunicorn and reverse proxy on port
443 with basic HTTP authentication and restricted IP access. The config is set
to read the htpasswd file from /etc/nginx/conf.d/.skyline.htpasswd. Note that
your username and password must match in both the Apache htpasswd and the
settings.WEBAPP_AUTH_USER
/settings.WEBAPP_AUTH_USER_PASSWORD
contexts as nginx will authenticate the user and forward on the authentication
details to gunicorn for the Webapp to also authenticate the user.
Authentication is enabled by default in settings.py
.
Securing the Webapp
Firewall rules
The Webapp should be secured with proper firewall rules that restrict access
to the settings.WEBAPP_IP
and settings.WEBAPP_PORT
(and/or just
the reverse proxy port for gunicorn if being used) from trusted IP
addresses only. It is best to keep the settings.WEBAPP_IP
set to
<IP_ADDRESS> and access it via the reverse proxy. Note that the webapp will bind
to the settings.WEBAPP_PORT
and settings.WEBAPP_PORT
+ 1. This is
because the main webapp runs gunicorn with a gevent worker_class and there are
some problems running some multiprocessing functions with gevent in the webapp
layout, therefore the webapp also starts another gunicorn process that has the
sync worker_class for handling functions that require multiprocessing. So if
your settings.WEBAPP_PORT
is set to 1500, webapp will bind to
<IP_ADDRESS>:1500 and <IP_ADDRESS>:1501.
Basic security
There are some simple and basic security measures implemented with the Webapp.
IP restricted access
The default settings.WEBAPP_ALLOWED_IPS
only allows from <IP_ADDRESS>, add
your desired allowed IPs.
psuedo basic HTTP auth
There is single user that can access the web UI all access must be authenticated.
Restricted by default
These simple measures are an attempt to ensure that the Skyline web UI is not totally open by default, but rather totally restricted by default. This adds a bit of defence in depth and hopefully will mitigate against unauthorized access in the event that some day, someone may have their firewall misconfigured in some way, either through error or accident.
These basic restrictions DO NOT replace the need for proper firewall rules or a production grade HTTP application.
Logging
Flask’s development server is based on werkzeug, whose WSGIRequestHandler is, in turn, based in the BaseHTTPServer from the standard lib. This means that WSGIRequestHandler overrides the logging methods, log_request, log_error and log_message, to use it’s own logging.Logger. So there is no access logging in Skyline Webapp log. It is possible to hack this around a bit, but this means application error logging would get shifted from the Webapp log to the access log, which is not ideal.
Panorama web UI
Basic function
The Panorama web UI allows you to search the anomalies recorded by Panorama in
the database. It currently allows you to search through the anomaly records by
various filters, which are converted into MySQL SELECT
queries which
return the details regarding the anomalies found from the search criteria. The
Webapp then returns these to the browser and the client side javascript then
passes the relevant metric details to the Webapp api endpoint to surface the
metric time series from Graphite and the api returns the time series json to the
browser to graph the time series.
Closest approximations
The Panorama anomaly records only hold the details regarding the anomaly, not the data. The Panorama UI takes the returned anomalies from a search and retrieves the time series for the time period relevant to the anomaly from Graphite on demand. The UI graphs the time series to visualise the context of the anomaly, as best possible. Due to the fact that Panorama is storing anomaly details in real time and the Panorama web UI is surfacing time series historically, any Graphite aggregations in time series can result in the specific anomalous data point not being present in the related time series. In these instances the Panorama graphs will indicate this and visually present a closest approximation of where the anomalous line would be, using a thicker, orange vertical line as the indicator, rather than the thinner, normal red horizontal line.
Time zones
It must be noted that the Panorama view graphs can be rendered differently
depending on the browser and server time zone. The original dygraph renders
used the javascript Date
function to generate the datetime ticker, etc. If
your Graphite server happens to be in a different time zone to user browser,
this would display clock skews where the Panorama reported anomaly details do
not match the graph times displayed. Webapp in the Panorama view allows you to
either use the browser time zone or use a fixed time zone so that all rendered
graphs are the same no matter where is the world they are viewed from.
By default, the browser time zone setting is used, as per the original Skyline
UI, you can use settings.WEBAPP_USER_TIMEZONE
and
settings.WEBAPP_FIXED_TIMEZONE
to modify this behaviour if required.
rebrow
Skyline uses a modified port of Marian Steinbach’s excellent rebrow Flask Redis browser - rebrow. A modified port was used for a number of reasons:
rebrow does not handle msg-pack encoded keys.
The pubsub functionality was unneeded.
Serving it in an iframe was bothersome.
Having an additional dependency, app and service for another Flask app seemed to be a bit of overkill.
Having it native in the Skyline Webapp UI was neater and prettier.
Please do clone https://github.com/marians/rebrow, just so Marian gets some clones.
With the addition of a number of Panorama and other app related keys,
rebrow adds a window into Redis, to allow for the verification of
key creation and providing a view of *last_alert.*
and
panorama.mysql_ids.*
keys.


{% extends "base_with_margins.html" %} {% block title %}About{% endblock %} {% block content %}
Chicago Councilmatic tracks all things related to Chicago City Council: the legislation introduced and passed, its various committees and the meetings they hold, and the alders themselves.
You can search and browse legislation from 2011 onwards. Some interesting searches include:
Chicago Councilmatic is a free and easy way to access official Chicago City Council information.
Note that while the official term for a City Council member is “alderman,” Councilmatic uses “alder” for both brevity and gender neutrality.
Chicago City Council is the legislative body of the City of Chicago. It consists of 50 elected alder, each representing one of Chicago's wards. City Council meets monthly and is presided over by Brandon Johnson, the Mayor of Chicago. The secretary is Anna Valencia, City Clerk of Chicago.
Generally, Chicago City Council deals with the following topics:
For the nitty-gritty on how Chicago City Council works, read about its structure and rules from the City Clerk.
Below are the categories of legislation in Chicago:
{% include 'partials/component_bill_type_table.html' %}One of the more unusual aspects of Chicago City Council is the volume of ordinances that are introduced and passed every month. Most of these are routine items like sign permits, damaged vehicle claims, sidewalk cafe approvals and honorifics.
To help sort through all of this, we classify all legislation and tag it appropriately. If something doesn’t look like a routine piece of legislation, we tag it as Non-Routine to make it easier to discover.
This website is open source and on GitHub - meaning that anyone can re-use or adapt the code.
If you'd like to explore the data for Chicago Councilmatic yourself, we make a SQLite database using Datasette available here: https://puddle.bunkum.us/chicago_council. This data is updated nightly.
The data on this website comes from the Chicago City Council legislation site, a system built by Granicus using their Legistar Legislative Management Suite. The Office of the City Clerkmanages the data, and on Councilmatic, each piece of legislation provides a link to its source for reference.
Daily, DataMade collects data from Legistar and the Legistar Web API, which we store using the Open Civic Data standard and platform. Built in collaboration with The Sunlight Foundation, Google, Granicus, and Open North, Open Civic Data standardizes information about people, organizations, events, and bills at any level of government.
The site was built by DataMade, a civic technology company. They build open source technology using open data to empower journalists, researchers, governments and advocacy organizations.
Have a question about information you were seeking to find, or explanations of how Chicago City Council works? Send us an email<EMAIL_ADDRESS>Developers: if you notice a bug, file an issue on our issue tracker!
Councilmatic was originally created by Mjumbe Poe for Philadelphia, during his time as a 2011 Code For America Fellow. It was the first fully-developed open data site for municipal legislation in the United States.
Chicago Councilmatic was first rolled out in June 2013 by Derek Eder and Forest Gregg under Open City.


energy: E-Statistics: Multivariate Inference via the Energy of Data
E-statistics (energy) tests and statistics for multivariate and univariate inference,
including distance correlation, one-sample, two-sample, and multi-sample tests for
comparing multivariate distributions, are implemented. Measuring and testing
multivariate independence based on distance correlation, partial distance correlation,
multivariate goodness-of-fit tests, k-groups and hierarchical clustering based on energy
distance, testing for multivariate normality, distance components (disco) for non-parametric
analysis of structured data, and other energy statistics/methods are implemented.
Downloads:
Reverse dependencies:
| Reverse depends: |
compositions, dCovTS, EnergyOnlineCPM, fastHICA, HellCor, MBC |
| Reverse imports: |
aSPC, EDMeasure, fAssets, kpcalg, linkspotter, MVN, MXM, pgraph, VariableScreening |
| Reverse suggests: |
cdcsis, dimRed, shotGroups, steadyICA |
Linking:
Please use the canonical form
https://CRAN.R-project.org/package=energy
to link to this page.


Functional Specification:
RedBrick Registration System
Cillian Sharkey, CASE3, 50716197
- Introduction
- Scope and purpose of this document
- Overview of project
- Background
- Users
- Objectives
- Constraints
- Functional and data description
- System architecture
- User data
- Software and Hardware Boundaries
- Projected schedule
- References
Introduction
Scope and purpose of this document
This document is a functional specification for my 3rd year
project: a user registration and administration system for use by the DCU
Networking Society (RedBrick). It
will attempt to describe the functional aspects of the project: its
objectives, constraints, system architecture, and functional data description
so that there is enough information for the actual implementation of the
project.
Overview of project
Background
There are just over 1,800 accounts on the RedBrick UNIX system and so the
administration of user accounts forms a large part of the system
administrators' workload. As one of the system administrators for RedBrick
myself, I have first hand experience of the amount of work required in
administrating user accounts and dealing with account requests on an often
daily basis. In addition to this, each year at the clubs & societies day
the registration of new and renewal of existing users takes place. Hundreds
of users are processed on a small isolated network of computers. The goal of
this project is to reduce the workload of system administrators and ease the
administration and registration of users both on a daily basis and for the annual
clubs and societies day.
Users
The users of the system will be restricted to the system administrators
for day to day user administration as it requires root (superuser) access, however
for registration on clubs & societies day it is usual for other members of the
society committee to help out.
Objectives
Provide an automated and consistent (UNIX command line) interface
for performing both common day-to-day and occassional "batch" user
administration operations on the actual accounts (home directories,
mail spools, disk quotas etc.), the UNIX /etc/passwd
"database" and the user database ensuring that all are kept in sync.
Single user account operations would include:
- adding new accounts,
- deleting existing accounts,
- renaming existing accounts,
- converting existing accounts "usertype",
- renewing existing accounts,
- reseting accounts with new random password (and emailing password
to user)
- retrieving account information for display,
- checking the availability of usernames for new accounts,
Batch account operations would include:
- emailing renewal reminders to non-renewed accounts
- expiring non-renewed accounts (i.e. disabling login shell)
- deleting non-renewed accounts after a grace period
- checking for inconsistencies between the user database and the
UNIX
/etc/passwd
database
- interactive update of the user database from the latest copy of
the public DCU student database
- Provide a web interface to offer a similar set of single user
administration operations for use on the clubs & societies day. The
setup is generally that of a small number of networked computers that are
isolated from the RedBrick servers so changes would be made to a local
(seperate) copy of the user database and at the end of the day all of
these changes (i.e. new, renewed, renamed, converted, etc. accounts) must
be detected and synchronised with the actual accounts and UNIX
/etc/passwd
database on the system. This needs to be done
in batch as hundreds of accounts are processed on clubs &
societies day. This would be implemented as one of the command line
interface's batch operations.
- Prevent username conflicts with other namespaces on the system
e.g. email aliases, mailing lists.
Constraints
- All accounts must have a name (or description) and an alternate
email address for contact purposes (and as such all UNIX accounts must
have a corresponding entry in the user database).
- Users may only have one account on the system (i.e. one student ID
per account).
- Member, staff and associate accounts must have a valid DCU
student/staff ID associated with them.
- Usernames will be limited to what the underlying UNIX OS supports
in terms of acceptable characters, length etc.
Functional and data description
System architecture
The system will be 3 tier in nature:
Front end
There will be two client applications: a CGI web interface (primarily for
use on the annual clubs & societies day to register new members and renew
existing members) and a UNIX command line interface for day-to-day user
administration.
Middle end
There will be two modules which the two client applications (and any
potential future applications) will use. One will be for performing database
operations (RBUserDB) and the other for UNIX account operations (RBAccount).
The web interface will not make use of the UNIX account module however, as it
operates on the database only.
Back end
Database (likely to be PostgreSQL) which will contain tables for the actual
user database and associated information, e.g. local copy of the public DCU
student database, table of valid usertypes, additional reserved usernames,
etc. Will also contain copies of user database from previous years for
reference/archival purposes.
User data
The traditional UNIX /etc/passwd
database doesn't contain
enough information for user accounts for RedBrick's needs (nor does it support
complex queries that a database can) hence the need for a user database. The
following additional information will be kept for all UNIX accounts:
Username
Unique UNIX username.
Name/Description
User's full name or a description for non-user accounts (e.g.
project/system accounts).
Usertype
Corresponds to both UNIX group and type of user. The following usertypes
will be used: member, staff, associate, project, club, society, committee,
project, guest, system, reserved.
Email
Alternate contact address (typically DCU email address).
Student ID
DCU student (or staff) ID number, compulsory for member, staff and
associates.
Years paid
Number of years paid. (Non-renewed accounts will be zero).
Updated by
Username of the administrator who last updated the database entry.
Updated at
Date & time of when the database entry was last updated.
Created by
Username of the administrator who first created the account.
Created at
Date & time of when the database entry was first created.
Software and Hardware Boundaries
The project will use the OS native command line tools for performing all
UNIX /etc/passwd
operations and the majority of account
operations. The 3rd party utility setquota
will be used for
the modification of disk quotas. DCU student information will be retrieved
from the publically accessible LDAP service on atlas.dcu.ie
.
Projected schedule
Week 1
Design database (SQL schema & populating with sample data). Code
middle end database module (addition, retrieval and updation of user
information, user data checking functions).
Week 2
Code middle end account module (interaction with UNIX account utilities
& filesystem manipulation of user accounts).
Week 3
Code command line interface (single user operations) in parallel with
'unit testing' of the various database and account module functions.
Week 4
Code web interface.
Week 5
Work on batch operations.
Week 6
Final testing. Write up documentation: Technical manual, User manual,
Installation manual.
References
UNIX (Solaris) user administration tool manpages
$Id: func-spec.html,v 1.1 2003/03/28 16:33:07 cns Exp $