Work Experience
Resume (PDF)
June 2014 - June 2016
Senior UX Researcher (Coupang, South Korea)
- Conducted qualitative user research and usability tests and delivered insights to internal designers/developers.
- Delivered strategic UX guidelines and user analysis reports and implemented insights to prototypes and products.
- Created and revised A/B tests based on user research and worked closely with agile teams to improve UX.
Jan 2014 - Apr 2014
UX Consultant (Nonghyup Red Ginseng Co. Ltd., South Korea)
- Led a new product development project and built UX strategies.
- Delivered IA and UX strategies for a new brand website based on market research and qualitative user research.
Jan 2013 - Nov 2013
UX Designer (LG Electronics Inc., South Korea)
- Created and improved mobile UX for North American markets.
- Designed and customized UI for wireless communications service providers in the USA and Canada.
- Designed exclusive UI for new products: G Flex (T-Mobile USA), Optimus F6 (T-Mobile USA, MetroPCS USA) and F4 (Rogers, Canada).
May 2011 - Dec 2012
UX Researcher (LG Electronics Inc., South Korea)
- Improved mobile UX with global user research and usability tests.
- Conducted user studies and usability tests in the USA and Korea and delivered insights and UX guidelines.
- Created design concepts and evaluated Optimus UI 3.0 & UI 4.0, launched worldwide in 2012 and 2013.
-
Managed research projects collaborated with experts in the USA, Germany and Korea.
Jan 2010 - May 2011
UX Designer (LG Electronics Inc., South Korea)
- Created and improved mobile UX for global markets.
- Designed and localized apps & widgets UI for content providers in the USA (Yahoo!, Google, AccuWeather,Twitter and Facebook)
and launched successfully on LG’s mobile devices distributed worldwide.
Education
Fall 2016 - Spring 2018
University of Michigan School of Information
- Master of Science in Information
- Specialization: Human-Computer Interaction
- Recipient of the merit-based UMSI scholarship, full tuitions for two years
Spring 2005 - Fall 2009
KAIST (Korea Advanced Institute of Science and Technology), Daejeon, South Korea
- Bachelor of Science in Industrial Design, Cum Laude
- Concentration: User Centered Design
- Recipient of the merit-based Korea National Science & Engineering Scholarship, full tuitions and living expenses for four years
Fall 2007 - Spring 2008
Delft University of Technology, Delft, the Netherlands
- Master of Design for Interaction (Student Exchange Program)


Pablo Hernandez signs Leeds extension
by BeSoccerLeeds United will have the services of Pablo Hernandez until at least 2022 after he renewed his contract.
Pablo Hernandez has signed a two-year contract extension with Championship promotion challengers Leeds United.
The winger is now tied to the Leeds until the end of the 2021-22 season. Hernandez initially arrived at Elland Road on loan from Al-Arabi in August 2016 before signing permanently the following January. Named Leeds' Player of the Year in each of his two full seasons as a permanent member of the squad, Hernandez scored 12 goals and laid on the same number of assists last term.
His outstanding campaign was not enough to prevent Leeds from suffering agony in the play-offs, though, as they missed out on promotion. Hernandez has scored two league goals and assisted as many this term, with Leeds again challenging for a return to the Premier League.
Featured links
- Madrid now waits for Neymar
- The latest football transfers news and rumours
- Who has the most free-kicks goals: Messi or Cristiano?
- Luis Enrique returns to Spain national team
Marcelo Bielsa's men are third in the Championship, two points behind leaders West Brom.


Microservices Reading List
Given the huge amount of buzz around Microservices right now, as well as the huge amount of content being generated, I thought I’d begin curating a “Microservices Reading List.” With that said, the main reason for the creation of this page is the continual question: “Great talk/article/etc. Where can I learn more?”
Below you’ll find articles, blogs, videos, slide decks, etc. I’m going to try to categorize them a bit as well. This is by no means a complete catalog. Continue to check back for updates!
Start Here
-
Microservices: overview by James Shore and Martin Fowler
-
Microservices: Decomposing Applications for Deployability and Scalability: overview by Chris Richardson
It’s Not All Roses…
Here you’ll find posts acknowledging the challenges associated with Microservices:
-
Microservices and the Failure of Encapsulation - interesting opinion piece
Field Reports
Enough with the theory. Who’s doing this?
-
Building Products at SoundCloud —Part I: Dealing with the Monolith
-
Building Products at SoundCloud—Part II: Breaking the Monolith
-
Building Products at SoundCloud—Part III: Microservices in Scala and Finagle
-
How we build microservices at Karma: “Forget the hype, we’re using microservices in production.”
-
Microservices – the blind leading the blind - Field Report from Loadzen
It’s Not About Size
Don’t get caught up in the micro of Microservices:
-
Micro services: It’s not (only) the size that matters; it’s (also) how you use them – part 1
-
Micro services: It’s not (only) the size that matters; it’s (also) how you use them – part 2
-
Microservices: It’s not (only) the size that matters; it’s (also) how you use them – part 3
-
Microservices: It’s not (only) the size that matters; it’s (also) how you use them – part 4
Organization/Process/Governance
Microservices is far from being only a technical architecture pattern. There are huge issues associated with culture, team organization, process, data ownership, governance, etc. Here are some relevant pieces:
Antifragile
My new friend Russ Miles is deep into Microservices. He’s primarily focused on the meme of antifragility in software. Here’s some of his stuff:
-
Antifragile Software: Building Adaptable Software with Microservices - eBook in progress
-
Russ Miles on Antifragility and Microservices - InfoQ Interview
Useful Architectural Patterns
A lot of patterns are cropping up in the microservices space, many of which are described very well on Martin Fowler’s site:
Netflix!
Netflix is well known for employing microservices and talking about it. Here are several technical blogs that touch the subject in various ways:
General Good Reads
Things that didn’t really fit into a category of their own, but still tasty:
Conference Presentations
-
Micro Services: Java the Unix Way - James Lewis
-
Cloud Foundry and Microservices: A Mutualistic Symbiotic Relationship - Matt Stine (slides only, video coming soon)
-
Migrating to Microservices - Adrian Cockcroft (slides only)
-
Microservices: Adaptive Systems for Innovative Organizations - James Lewis
-
Microservices Architecture - Fred George
-
Now Playing on Netflix: Adeventurs in a Cloudy Future - Adrian Cockcroft (slides only)
Other Microservices Landing Sites
-
Microservice Architecture site by Chris Richardson


KZN tornado: Eskom fixing network after fatal storm leaves 15 000 without power
by Jenna EtheridgeEskom said on Wednesday it was fixing the infrastructure that had been damaged by a severe storm and tornado that "wreaked havoc" in New Hanover, Pietermaritzburg, a day earlier.
Technicians found that 15 networks in the Mpolweni, Dalton, Wartburg, Albert Falls and Swayimani areas had been affected, leaving around 15 000 people without power.
"Supply to about 5 000 customers was restored overnight and work is currently going on to restore power to the rest of the affected customers," said Eskom's Kwazulu-Natal spokesperson Joyce Zingoni.
READ | KZN tornado claims at least 2 lives, 20 reported injured
She said restoration would take longer than usual, as some structures and lines were down.
"Customers are urged to stay away from low hanging conductors and fallen structures."
People should treat all installations as live for safety reasons.
While the extent of the severe storms and tornado that hit parts of the province is yet to be determined, at least two people have been confirmed killed and 20 injured.
The injured were treated for minor to moderate injuries at the Mpolweni settlement near Wartburg on Tuesday night.
On Tuesday, the Department of Cooperative Governance and Traditional Affairs (Cogta) in KwaZulu-Natal activated councillors and volunteers to assist affected communities after a tornado hit New Hanover, Pietermaritzburg.
The tornado, according to the department, "ripped through the area, injuring scores of people and damaging homes and public infrastructure".
This was confirmed to News24 by South African Weather Service (SAWS) forecaster Edward Engelbrecht: "It was a tornado on Tuesday afternoon in New Hanover, Pietermaritzburg."
He said a team was yet to rate the scale of the damage caused by the tornado.
People can report faults and unsafe structures to Eskom on 08600 37566 or SMS<PHONE_NUMBER>,<PHONE_NUMBER>, and<PHONE_NUMBER>.


INDEPENDENCE DAY A film review by Edwin Jahiel Copyright 1996 Edwin Jahiel
INDEPENDENCE DAY ** 1/2 Directed by Roland Emmerich. Written by Dean Devlin & Emmerich. Photograhy, Karl Walter Lindenlaub. Editing, David Brenner. Production design, Oliver Scholl, Patrick Tatopoulos. Music, David Arnold. Cast: Will Smith, Bill Pullman, Jeff Goldblum, Mary McDonnell, Judd Hirsch, Margaret Colin, Randy Quaid, Robert Loggia, James Rebhorn, Vivica A. Fox, et al. A TCF release. 145 minutes. Rated PG-13.
With the absence of the Soviet Evil Empire, Hollywood is searching for arch-enemies. An old one has resurfaced in "Independence Day" : the Nasties from Outer Space.
The action take place on a very near future's July 2,3 and 4, when Earth is attacked by alien machines. The enemy follows the principle of those nested Russian dolls, only limited to three. A mothership one-fourth the size of the moon contains mega-saucers (about 15 miles wide) that contain critters. The mothership (it looks sometimes like a megamongous manhole cover), travels to Earth, releases its ominous saucers that position themselves over major Earth cities, casting giant shadows. They shoot rays that destroy totally New York, Los Angeles and Washington. You wonder why they use the ray-by-ray method instead of a single H-Bomb equivalent. But then this is a kid-flick of the "You who enter here abandon all logic" persuasion.
It is also, among a host of deja vu things, a return to the 50s and 60s Cold War fears that sometimes appeared in the guise of space invaders; a monster/horror movie; 70s and 80s space movies; and a countdown flick.
There are lots of American heroes around. Highest ranking is President Bill Pullman, a former fighter-plane hero of the Gulf war, but with most of the prowess done by fighter top gun Captain Will Smith. (He has a charming girlfriend, stripper Vivica Fox. She has a kid and a great dog). The brains are supplied by Jeff Goldblum, a computer/communications nerd/genius, whose ex-wife Margaret Colin just happens to be the President's Chief of Staff. (Needless to say the couple are still in love).
Many people and vehicles populate IP, which is a no-brains, special effects film, and a fun movie. But at some point after the destruction of the cities (impressive), the film gets increasingly comic-bookish and begins to bore --in my case around minute 80. After this one gets a surfeit of effects at the expense of plot and characters. Some of the effects in the final battle are downright cheap and cheesy composites, like video games.
Matters slide down after the Freak Show of an alien critter saved in a secret laboratory years ago, with its craft, after it crash-landed in New Mexico. The alien is straight out of "Alien" movies -- a disgusting, slimy, gooey, oozy affair with tentacles. My interest kept waning, except for worrying about Ms. Fox's lovely big dog. It survived unharmed.
ID is as synthetic as they get. The final solution against the aliens is a twist of the 1953 "War of the Worlds" where Martians were destroyed by germs. Here the germs are updated to computer germs or viruses. While I'm at it, let me tell you that I'm writing this on a computer on which I have lavished days of work to get out of a glitch, while Goldblum's laptop does wonders in seconds even after the destruction of the cities.
The characters are by and large cardboard creations in whom cliches extend to everything: actions, reactions, facial expressions, gestures --and dialogue with lines like:"All we can do now is pray" or "What your father did was very brave. You should be proud of him."
The father in question is another cliche. Vietnam veteran Randy Quaid, who claimed to have been abducted, abused and release by aliens is a subject of mockery and an alcoholic crop-duster pilot. But can't we guess right away that at the end he'll be sober, and a hero? Can't we also guess that the President will join the other brave pilots to attack the outer-spacers? OK, but I draw the line at the crash session where civilians (older former pilots) get instructed in flying the latest US planes --and Captain Smith figures out how to operate the old alien craft!
ID tries to a be Politically Correct, but I am not sure that stressing the Jewishness of Goldblum's father (Judd Hirsch) in caricatural fashion, or, similarly, the gayness of a Government scientist (gravel-voiced Harvey Fierstein), were thought through by the film's German writer-director. There are no Asian-Americans, by the way.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Earth Snake:
There are not 10 items here...Did you think I would not notice? I will not give you the Note of the Earth until you bring me proof that you have slain 10 each of the Enchanted Monster Eye, Enchanted Stone Golem and Enchanted Iron Golem.


Mobile Best Practices
Objective of the Guidelines
Titanium Mobile is a relatively young and constantly changing platform. The best practices delineated here are subject to change, and may not encompass all the knowledge necessary to build a great Titanium application. The goal of this document is to lay out, at a high level, what are currently known to be good (and some bad) practices in Titanium Mobile (and JavaScript in general) applications.
The Guidelines in Brief
Titanium Mobile applications should:
-
Be careful not to pollute the global object
-
Run in a single JavaScript context
-
Be modular and object-oriented using CommonJS modules
-
Defer loading JavaScript files until absolutely needed
-
Take reasonable steps to manage memory usage and avoid memory leaks
Seriously? That's it?
Yes. There are many different ways to build an application - using an MVC or MVVM architecture, maybe a framework of your own choosing or one you've built yourself. The guidelines in this document are considered the bedrock requirements for a reasonable, performant Titanium Mobile application. Your own application structures, business logic, and conventions may vary, and we do not endeavor to impose any such conventions in this document.
The Guidelines Explained
Applications shall take care not to pollute the global object
In JavaScript, there is a global object for the application - any variables declared in the global scope will become properties of this global object. In Titanium Mobile, the global object is available as this in app.js.
Any variables declared in app.js shall be globally available in the entire application. This can cause collisions if external scripts are included into this context via Ti.include. For this and other reasons, use of Ti.include is discouraged, and will be replaced in the future by the CommonJS module specification's require function.
To prevent polluting the global object in app.js, you must use the only scope available in JavaScript - a closure. A simple way to use a closure to avoid polluting the global scope is to use a self-calling function:
(function() {
var privateData = 'tee hee! can\'t see me!';
})();
alert(privateData); //undefined in the global scope
When separating code into external files, the require function provided by the CommonJS module spec should be used to inject additional functionality into the global scope or the scope of a module. This technique will be explained later on in the document.
Applications shall run in a single JavaScript context
In the previous section, we discussed the global scope of a JavaScript application. In a Titanium Mobile application, it is possible to open windows with a url property associated with them. When the open function on the window is called, the JavaScript file specified in the URL (relative to the application's Resources directory), will be evaluated, creating a new scope - neither of which have visibility into one another, except through the use of custom events. At that point, there will be multiple active JavaScript environments, which we call "execution contexts".
Except in rare cases, this can be considered a bad thing. Multiple execution contexts can lead to circular references and possibly memory leaks. There are lifecycle issues as well, whereby it becomes unclear when the code for a given JavaScript file has been evaluated. There is also the issue of sharing data between contexts, which must be done in an ungainly fashion with application-level events.
There are certain use cases for this (potentially), as in when every new window desires a "clean slate" with no dependencies of the global context associated with it. This may be useful for an "app within an app", where shared state is not necessary. But in the very large majority of cases, windows with URLs should not be used.
Applications shall be modular and object-oriented using CommonJS modules
Separation of concerns should be enforced by dividing application logic into separate JavaScript files and objects, adhering to the principle of cohesion. Not all JavaScript applications need to use instantiable objects - but all should make use of the CommonJS module standard. The CommonJS module spec provides for sandboxed JavaScript modules with a well-defined public interface, exposed as the exports object within a CommonJS module file. A sample usage of the CommonJS module spec in Titanium Mobile is below.
var privateData = 'private to the module\'s sandbox, not available globally';
//any property attached to the exports object becomes part of the module's public interface
exports.add = function() {
var result = 0;
for (var i = 0, l = arguments.length;i<l;i++) {
result = result+arguments[i];
}
return result;
};
var maths = require('lib/maths');
var sum = maths.add(2,2,2,2,2);
//sum is 10
An instantiable object in a CommonJS module would look like this:
function Point(x,y) {
this.x = x;
this.y = y;
}
function Line(start,end) {
this.start = start;
this.end = end;
}
//create public interface
exports.Point = Point;
exports.Line = Line;
var geo = require('lib/geo');
var startPoint = new geo.Point(1,-5);
var endPoint = new geo.Point(10,2);
var line = new geo.Line(startPoint,endPoint);
When creating objects in Titanium Mobile applications, one must adhere to general programming best practices, including object orientation. In this section, we will go into one more example. A common need in Titanium Mobile applications is to create custom user interface components. A common practice for extending built-in objects is parasitic inheritance. While a perfectly valid practice in standard JavaScript, it can result in unpredictable behavior in Titanium Mobile when using proxy objects (objects returned by Ti.UI.createView and similar). A resonable approach to creating a custom component would be to associate a proxy with a normal JavaScript object, as in the below:
function ToggleBox(onChange) {
this.view = Ti.UI.createView({backgroundColor:'red',height:50,width:50});
//private instance variable
var active = false;
//public instance functions to update internal state, execute events
this.setActive = function(_active) {
active = _active;
this.view.backgroundColor = (active) ? 'green' : 'red';
onChange.call(instance);
};
this.isActive = function() {
return active;
};
//set up behavior for component
this.view.addEventListener('click', function() {
this.setActive(!active);
});
}
exports.ToggleBox = ToggleBox;
var win = Ti.UI.createWindow({backgroundColor:'white'});
var ToggleBox = require('ui/ToggleBox').ToggleBox;
var tb = new ToggleBox(function() {
alert('The check box is currently: '+this.isActive());
});
tb.view.top = 50;
tb.view.left = 100;
win.add(tb.view);
Applications shall defer script loading until absolutely needed
One of the bigger bottlenecks in a Titanium application, particularly for Android) is JavaScript evaluation (though this will be much, much less of an issue after our V8 migration). For that reason, to speed the startup and responsiveness of your application, the developer should avoid loading up scripts until they are absolutely needed. As in the following application, which has three windows, to be opened in succession on a click (touch) event. Note that the dependent JavaScript for each window is not loaded until absolutely necessary.
//muse be loaded at launch
var WindowOne = require('ui/WindowOne').WindowOne;
var win1 = new WindowOne();
win1.open();
win1.addEventListener('click', function() {
//load window two JavaScript when needed...
var WindowTwo = require('ui/WindowTwo').WindowTwo;
var win2 = new WindowTwo();
win2.open();
win2.addEventListener('click', function() {
//load window three JavaScript when needed...
var WindowThree = require('ui/WindowThree').WindowThree;
var win3 = new WindowTwo();
win3.open();
});
});
Applications shall take reasonable steps to manage memory
In very large applications, it occasionally becomes necessary to force Titanium to clean up resources. To do this, the developer has two options.
Firstly, the developer can close currently open windows. This should cause Titanium to free up the resources associated with any of the view objects associated with the window.
Secondly, the developer can set references to proxy objects to null - when those objects are garbage collected, the associated native objects will be cleaned up as well. Example:
var win = Ti.UI.createWindow();
var myBigView = new BigView();
win.add(myBigView.view);
win.open();
//...at some point in the future...
win.remove(myBigView);
myBigView = null; //will cause view to be GC'ed


Browser
Glossary
- BOM - The Browser Object Model (BOM) is a browser-specific convention referring to all the objects exposed by the web browser. The
window
object is one of them.
- CSSOM - CSS Object Model.
- DOM - The Document Object Model (DOM) is a cross-platform and language-independent convention for representing and interacting with objects in HTML, XHTML, and XML documents.
- Reflow - When the changes affect document contents or structure, or element position, a reflow (or relayout) happens.
- Repaint - When changing element styles which don’t affect the element’s position on a page (such as
background-color
, border-color
, visibility
), the browser just repaints the element again with the new styles applied (that means a “repaint” or “restyle” is happening).
- Composite - TODO
Rendering
High level flow of how browsers render a webpage:
- DOM
- The DOM (Document Object Model) is formed from the HTML that is received from a server.
- Characters -> Tokens -> Nodes -> DOM.
- DOM construction is incremental.
- CSS and JS are requested as the respective
<link>
and <script>
tags are encountered.
- CSSOM
- Styles are loaded and parsed, forming the CSSOM (CSS Object Model).
- Characters -> Tokens -> Nodes -> CSSOM.
- CSSOM construction is not incremental.
- Browser blocks page rendering until it receives and processes all the CSS.
- CSS is render blocking.
- Render Tree
- On top of DOM and CSSOM, a render tree is created, which is a set of objects to be rendered. Render tree reflects the DOM structure except for invisible elements (like the
tag or elements that have
display: none
; set). Each text string is represented in the rendering tree as a separate renderer. Each of the rendering objects contains its corresponding DOM object (or a text block) plus the calculated styles. In other words, the render tree describes the visual representation of a DOM.
- Layout
- For each render tree element, its coordinates are calculated, which is called “layout”. Browsers use a flow method which only required one pass to layout all the elements (tables require more than one pass).
- Painting
- Finally, this gets actually displayed in a browser window, a process called “painting”.
References
- http://taligarsiel.com/Projects/howbrowserswork1.htm
- https://medium.freecodecamp.org/its-not-dark-magic-pulling-back-the-curtains-from-your-stylesheets-c8d677fa21b2
Repaint
When changing element styles which don’t affect the element’s position on a page (such as background-color
, border-color
, visibility
), the browser just repaints the element again with the new styles applied (that means a “repaint” or “restyle” is happening).
Reflow
When the changes affect document contents or structure, or element position, a reflow (or relayout) happens. These changes are usually triggered by: - DOM manipulation (element addition, deletion, altering, or changing element order) - Contents changes, including text changes in form fields - Calculation or altering of CSS properties - Adding or removing style sheets - Changing the “class” attribute - Browser window manipulation (resizing, scrolling); Pseudo-class activation (:hover
)
References


Requests a description of a set of instances.
Note
You must specify at least one of the parameters.
Required Permissions : To use this action, an IAM user must have a Show, Deploy, or Manage permissions level for the stack, or an attached policy that explicitly grants permissions. For more information on user permissions, see Managing User Permissions .
See also: AWS API Documentation
describe-instances
[--stack-id <value>]
[--layer-id <value>]
[--instance-ids <value>]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]
A stack ID. If you use this parameter, describe-instances returns descriptions of the instances associated with the specified stack.
A layer ID. If you use this parameter, describe-instances returns descriptions of the instances associated with the specified layer.
An array of instance IDs to be described. If you use this parameter, describe-instances returns a description of the specified instances. Otherwise, it returns a description of every instance.
Syntax:
"string" "string" ...
--cli-input-json (string) Performs service operation based on the JSON string provided. The JSON string follows the format provided by --generate-cli-skeleton. If other arguments are provided on the command line, the CLI values will override the JSON-provided values.
--generate-cli-skeleton (string) Prints a JSON skeleton to standard output without sending an API request. If provided with no value or the value input, prints a sample input JSON that can be used as an argument for --cli-input-json. If provided with the value output, it validates the command inputs and returns a sample output JSON for that command.
To describe instances
The following describe-instances commmand describes the instances in a specified stack:
aws opsworks --region us-east-1 describe-instances --stack-id 8c428b08-a1a1-46ce-a5f8-feddc43771b8
Output: The following output example is for a stack with two instances. The first is a registered EC2 instance, and the second was created by AWS OpsWorks.
{
"Instances": [
{
"StackId": "71c7ca72-55ae-4b6a-8ee1-a8dcded3fa0f",
"PrivateDns": "ip-10-31-39-66.us-west-2.compute.internal",
"LayerIds": [
"26cf1d32-6876-42fa-bbf1-9cadc0bff938"
],
"EbsOptimized": false,
"ReportedOs": {
"Version": "14.04",
"Name": "ubuntu",
"Family": "debian"
},
"Status": "online",
"InstanceId": "4d6d1710-ded9-42a1-b08e-b043ad7af1e2",
"SshKeyName": "US-West-2",
"InfrastructureClass": "ec2",
"RootDeviceVolumeId": "vol-d08ec6c1",
"SubnetId": "subnet-b8de0ddd",
"InstanceType": "t1.micro",
"CreatedAt": "2015-02-24T20:52:49+00:00",
"AmiId": "ami-35501205",
"Hostname": "ip-192-0-2-0",
"Ec2InstanceId": "i-5cd23551",
"PublicDns": "ec2-192-0-2-0.us-west-2.compute.amazonaws.com",
"SecurityGroupIds": [
"sg-c4d3f0a1"
],
"Architecture": "x86_64",
"RootDeviceType": "ebs",
"InstallUpdatesOnBoot": true,
"Os": "Custom",
"VirtualizationType": "paravirtual",
"AvailabilityZone": "us-west-2a",
"PrivateIp": "<IP_ADDRESS>",
"PublicIp": "<IP_ADDRESS>",
"RegisteredBy": "arn:aws:iam::123456789102:user/AWS/OpsWorks/OpsWorks-EC2Register-i-5cd23551"
},
{
"StackId": "71c7ca72-55ae-4b6a-8ee1-a8dcded3fa0f",
"PrivateDns": "ip-10-31-39-158.us-west-2.compute.internal",
"SshHostRsaKeyFingerprint": "69:6b:7b:8b:72:f3:ed:23:01:00:05:bc:9f:a4:60:c1",
"LayerIds": [
"26cf1d32-6876-42fa-bbf1-9cadc0bff938"
],
"EbsOptimized": false,
"ReportedOs": {},
"Status": "booting",
"InstanceId": "9b137a0d-2f5d-4cc0-9704-13da4b31fdcb",
"SshKeyName": "US-West-2",
"InfrastructureClass": "ec2",
"RootDeviceVolumeId": "vol-e09dd5f1",
"SubnetId": "subnet-b8de0ddd",
"InstanceProfileArn": "arn:aws:iam::123456789102:instance-profile/aws-opsworks-ec2-role",
"InstanceType": "c3.large",
"CreatedAt": "2015-02-24T21:29:33+00:00",
"AmiId": "ami-9fc29baf",
"SshHostDsaKeyFingerprint": "fc:87:95:c3:f5:e1:3b:9f:d2:06:6e:62:9a:35:27:e8",
"Ec2InstanceId": "i-8d2dca80",
"PublicDns": "ec2-192-0-2-1.us-west-2.compute.amazonaws.com",
"SecurityGroupIds": [
"sg-b022add5",
"sg-b122add4"
],
"Architecture": "x86_64",
"RootDeviceType": "ebs",
"InstallUpdatesOnBoot": true,
"Os": "Amazon Linux 2014.09",
"VirtualizationType": "paravirtual",
"AvailabilityZone": "us-west-2a",
"Hostname": "custom11",
"PrivateIp": "<IP_ADDRESS>",
"PublicIp": "<IP_ADDRESS>"
}
]
}
More Information
For more information, see Instances_ in the AWS OpsWorks User Guide.
Instances -> (list)
An array of Instance objects that describe the instances.
(structure)
Describes an instance.
AgentVersion -> (string)
The agent version. This parameter is set to INHERIT if the instance inherits the default stack setting or to a a version number for a fixed agent version.AmiId -> (string)
A custom AMI ID to be used to create the instance. For more information, see `Instances`_Architecture -> (string)
The instance architecture: "i386" or "x86_64".AutoScalingType -> (string)
For load-based or time-based instances, the type.AvailabilityZone -> (string)
The instance Availability Zone. For more information, see Regions and Endpoints .BlockDeviceMappings -> (list)
An array of BlockDeviceMapping objects that specify the instance's block device mappings.
(structure)
Describes a block device mapping. This data type maps directly to the Amazon EC2 BlockDeviceMapping data type.
DeviceName -> (string)
The device name that is exposed to the instance, such as /dev/sdh . For the root device, you can use the explicit device name or you can set this parameter to ROOT_DEVICE and AWS OpsWorks will provide the correct device name.NoDevice -> (string)
Suppresses the specified device included in the AMI's block device mapping.VirtualName -> (string)
The virtual device name. For more information, see BlockDeviceMapping .Ebs -> (structure)
An EBSBlockDevice that defines how to configure an Amazon EBS volume when the instance is launched.
SnapshotId -> (string)
The snapshot ID.Iops -> (integer)
The number of I/O operations per second (IOPS) that the volume supports. For more information, see EbsBlockDevice .VolumeSize -> (integer)
The volume size, in GiB. For more information, see EbsBlockDevice .VolumeType -> (string)
The volume type. gp2 for General Purpose (SSD) volumes, io1 for Provisioned IOPS (SSD) volumes, and standard for Magnetic volumes.DeleteOnTermination -> (boolean)
Whether the volume is deleted on instance termination.CreatedAt -> (string)
The time that the instance was created.EbsOptimized -> (boolean)
Whether this is an Amazon EBS-optimized instance.Ec2InstanceId -> (string)
The ID of the associated Amazon EC2 instance.EcsClusterArn -> (string)
For container instances, the Amazon ECS cluster's ARN.EcsContainerInstanceArn -> (string)
For container instances, the instance's ARN.ElasticIp -> (string)
The instance Elastic IP address .Hostname -> (string)
The instance host name.InfrastructureClass -> (string)
For registered instances, the infrastructure class: ec2 or on-premises .InstallUpdatesOnBoot -> (boolean)
Whether to install operating system and package updates when the instance boots. The default value is true . If this value is set to false , you must then update your instances manually by using create-deployment to run the update_dependencies stack command or by manually running yum (Amazon Linux) or apt-get (Ubuntu) on the instances.
Note
We strongly recommend using the default value of true , to ensure that your instances have the latest security updates.
InstanceId -> (string)
The instance ID.InstanceProfileArn -> (string)
The ARN of the instance's IAM profile. For more information about IAM ARNs, see Using Identifiers .InstanceType -> (string)
The instance type, such as t2.micro .LastServiceErrorId -> (string)
The ID of the last service error. For more information, call describe-service-errors .LayerIds -> (list)
An array containing the instance layer IDs.
(string)
Os -> (string)
The instance's operating system.Platform -> (string)
The instance's platform.PrivateDns -> (string)
The The instance's private DNS name.PrivateIp -> (string)
The instance's private IP address.PublicDns -> (string)
The instance public DNS name.PublicIp -> (string)
The instance public IP address.RegisteredBy -> (string)
For registered instances, who performed the registration.ReportedAgentVersion -> (string)
The instance's reported AWS OpsWorks agent version.ReportedOs -> (structure)
For registered instances, the reported operating system.
Family -> (string)
The operating system family.Name -> (string)
The operating system name.Version -> (string)
The operating system version.RootDeviceType -> (string)
The instance's root device type. For more information, see Storage for the Root Device .RootDeviceVolumeId -> (string)
The root device volume ID.SecurityGroupIds -> (list)
An array containing the instance security group IDs.
(string)
SshHostDsaKeyFingerprint -> (string)
The SSH key's Deep Security Agent (DSA) fingerprint.SshHostRsaKeyFingerprint -> (string)
The SSH key's RSA fingerprint.SshKeyName -> (string)
The instance's Amazon EC2 key-pair name.StackId -> (string)
The stack ID.Status -> (string)
The instance status:
- booting
- connection_lost
- online
- pending
- rebooting
- requested
- running_setup
- setup_failed
- shutting_down
- start_failed
- stop_failed
- stopped
- stopping
- terminated
- terminating
SubnetId -> (string)
The instance's subnet ID; applicable only if the stack is running in a VPC.Tenancy -> (string)
The instance's tenancy option, such as dedicated or host .VirtualizationType -> (string)
The instance's virtualization type: paravirtual or hvm .


Bibliotecas e Plugins
Aqui estão listadas bibliotecas e plugins para three.js desenvolvidos por terceiros. Esta
lista e os pacotes associados são mantidos pela comunidade e não é garantido que estejam atualizados.
Se você gostaria de atualizar esta lista faça uma PR!
Física
- [link:https://github.com/lo-th/Oimo.js/ Oimo.js]
- [link:https://enable3d.io/ enable3d]
- [link:https://github.com/kripken/ammo.js/ ammo.js]
- [link:https://github.com/pmndrs/cannon-es cannon-es]
Pós-processamento
Além do oficial [link:https://github.com/mrdoob/three.js/tree/dev/examples/jsm/postprocessing postprocessing effects],
suporte para alguns efeitos e estruturas adicionais estão disponíveis por meio de bibliotecas externas.
- [link:https://github.com/vanruesc/postprocessing postprocessing]
Intersecção e Performance Raycast
- [link:https://github.com/gkjohnson/three-mesh-bvh three-mesh-bvh]
Path Tracing
- [link:https://github.com/gkjohnson/three-gpu-pathtracer three-gpu-pathtracer]
Formatos de arquivos
Além do oficial [link:https://github.com/mrdoob/three.js/tree/dev/examples/jsm/loaders loaders],
suporte para alguns formatos adicionais estão disponíveis por meio de bibliotecas externas.
- [link:https://github.com/gkjohnson/urdf-loaders/tree/master/javascript urdf-loader]
- [link:https://github.com/NASA-AMMOS/3DTilesRendererJS 3d-tiles-renderer-js]
- [link:https://github.com/kaisalmen/WWOBJLoader WebWorker OBJLoader]
- [link:https://github.com/IFCjs/web-ifc-three IFC.js]
Geometria
- [link:https://github.com/spite/THREE.MeshLine THREE.MeshLine]
Texto e Layout 3D
- [link:https://github.com/protectwise/troika/tree/master/packages/troika-three-text troika-three-text]
- [link:https://github.com/felixmariotto/three-mesh-ui three-mesh-ui]
Sistema de partículas
- [link:https://github.com/Alchemist0823/three.quarks three.quarks]
- [link:https://github.com/creativelifeform/three-nebula three-nebula]
Inverse Kinematics
- [link:https://github.com/jsantell/THREE.IK THREE.IK]
- [link:https://github.com/lo-th/fullik fullik]
- [link:https://github.com/gkjohnson/closed-chain-ik-js closed-chain-ik]
IA para Games
- [link:https://mugen87.github.io/yuka/ yuka]
- [link:https://github.com/donmccurdy/three-pathfinding three-pathfinding]
Wrappers e Frameworks
- [link:https://aframe.io/ A-Frame]
- [link:https://github.com/pmndrs/react-three-fiber react-three-fiber]
- [link:https://github.com/ecsyjs/ecsy-three ECSY]
- [link:https://threlte.xyz/ Threlte]


Chapter 1 Pre-Course Skills & Setup
We will largely be using the following tools to access, pull, and explore data in this course:
- R & Rstudio
- Git & GitHub
- Markdown & Rmarkdown
As such we will need to install and/or update these tools on your personal computer before our first day of class.
1.1 Installing or Updating R
Please check your version of R. You will need R 3.6.0+
How to check your version in R or RStudio if you already have it:
> version
_
platform x86_64-apple-darwin15.6.0
arch x86_64
os darwin15.6.0
system x86_64, darwin15.6.0
status
major 3
minor 5.1
year 2018
month 07
day 02
svn rev 74947
language R
version.string R version 3.5.1 (2018-07-02)
nickname Feather Spray
If you don’t already have R or need to update it do so here.
1.2 Windows R/RStudio Setup
After you have downloaded R, run the .exe file that was just downloaded Go to the RStudio Download page Under Installers select RStudio X.XX.XXX - e.g. Windows Vista/7/8/10 Double click the file to install it Once R and RStudio are installed, click to open RStudio. If you don’t get any error messages you are set. If there is an error message, you will need to re-install the program.
1.3 Mac R/RStudio Setup
After you have downloaded R, double click on the file that was downloaded and R will install Go to the RStudio Download page Under Installers select RStudio 1.2.1135 - Mac OS X XX.X (64-bit) to download it. Once it’s downloaded, double click the file to install it. Once R and RStudio are installed, click to open RStudio. If you don’t get any error messages you are set. If there is an error message, you will need to re-install the program.
1.4 Linux R/RStudio Setup
R is available through most Linux package managers. You can download the binary files for your distribution from CRAN. Or you can use your package manager. e.g. for Debian/Ubuntu
run sudo apt-get install r-base
and for Fedora
run sudo yum install R
To install RStudio, go to the RStudio Download page Under Installers select the version for your distribution. Once it’s downloaded, double click the file to install it Once R and RStudio are installed, click to open RStudio. If you don’t get any error messages you are set. If there is an error message, you will need to re-install the program.
1.5 Install basic packages for this course
You can run the following script to make sure all the required packages are properly installed on your computer.
# list of required packages
list.of.packages <- c(
'data.table',
'tidyverse',
'jsonlite',
'jpeg',
'png',
'raster',
'rgdal',
'rmarkdown'
)
# identify new (not installed) packages
new.packages <- list.of.packages[!(list.of.packages %in% installed.packages()[,"Package"])]
# install new (not installed) packages
if(length(new.packages))
install.packages(new.packages,
repos='http://cran.rstudio.com/')
# load all of the required libraries
sapply(list.of.packages, library, character.only = T)
Note: On some operating systems, you may need to install the Geospatial Data Abstraction Library (GDAL). More information about GDAL can be found from here.
1.6 Ecoinformatics Tools
As an Ecoinformatician you need to be able to:
- Pull data from Application Programing Interfaces (APIs)
- More on this in Chapter 2
- Organize and document your code and data
- Version control your code to avoid disaster and make it reproducible
- Both for you and your collaborators or the wider community
- Push your code up to public-facing repositories
- Pull other’s code from public repositories.
Below I will provide some justification for why we all need these skills, and why they are a requierment for this course. If you already using these skills on a daily basis, fantastic! If some of this sounds a little greek to you I have placed lesson links at the end of this chapter so that you can build these skills and be successful in this course.
1.7 Intro to Reproducible Science
Adapted from Software Carpentry’s Reproducible Science Curriculum
Special Thanks: Naupaka Zimmerman,Francois Michonneau, Hilmar Lapp, Karen Cranston, Jenny Bryan, and everyone else who created these materials.

– Hadley Wickham (via Twitter, 2015-05-03)
1.8 Why Use Reproducible Methods?
More efficient, less redundant science: others can build upon our work.
1.9 Reproducibility & Your research
Reproducibility spectrum for published research. Source: Peng, RD Reproducible Research in Computational Science Science (2011): 1226–1227 via Reproducible Science Curriculum
Five selfish reasons to work reproducibly - Florian Markowetz
Reproducibility helps to avoid disaster
Reproducibility makes it easier to write papers
Reproducibility helps reviewers see it your way
Reproducibility enables continuity of your work
Reproducibility helps to build your reputation
1.10 How to Make Work Reproducible
For research to be reproducible, the research products (data, code) need to be publicly available in a form that people can find and understand them.
1.12 Better Research
Figure 1. Distribution of reporting errors per paper. Papers from which data were shared has fewer errors.
Click on citation to view paper.
1.13 The tools that make this easier
GitHub: Version Control / Collaboration / Dissemination
R Markdown or Jupyter Notebooks: Code Documentation / Dissemination
1.14 Four Facets of Reproducibility
- Organization
- Automation
- Documentation
- Dissemination
1.15 Organization
The more self explanatory the better:
- Consider overall structure of folders and files
- Use informative file names
1.15.1 Organization Pro-Tip
A variable name that describes the object is more useful than a random variable name.
–
Noble, William Stafford, 2009. A quick guide to organizing computational biology projects.
File Organization should:
- Reflect inputs, outputs and information flow
- Preserve raw data so it’s not modified
- Carefully document & store intermediate & end outputs
- Carefully document & store data processing scripts
1.15.2 Organization – File Names
File / Folder Names should be:
- Machine readable
- Human readable
- Support sorting
<IP_ADDRESS> Which set of file names are most self-explanatory?
More on file naming & organization
– from the Reproducible Science Curriculum
1.15.3 Organization - Benefits
- Your future self will be able to quickly find files
- Colleagues will be able to more quickly understand your workflow
- Machine readable names can be quickly and easily sorted and parsed
1.16 Automation
Scripting vs. Point and click
Script = more time spent up front, but will save time in the long run.
1.16.1 Automation Tip
Time Savings:
- More efficient to modify and repeat an analysis down the road
- Easier for reviewers and colleagues to see every aspect of your methods
- Self documenting methods - your future self will forget small steps
DRY – Don’t Repeat Yourself
If your analysis is composed of scripts, with repeated code throughout, it will be more time consuming to maintain and update.
Reproducible Science Curriculum - Automation
Modularity – use functions to write code in reusable chunks
- Variables created within a function are temporary
- Code with functions can be easier to read / cleaner
- Allows for better documentation
- Supports testing
- Allows for re-use of code on other data
1.17 Documentation
Document all workflow steps:
- You can remind your future self of your workflow
- Others can see and understand your work
- Future “re-analysis” of your data is more efficient
Code should be easy to understand with clear goals
Document your code even if you think it’s clear and simple. Your collaborators & your future self will inevitably have an easier time working with it down the road.
<IP_ADDRESS> Documentation Tip 1
Add comments around functions that describe purpose, inputs and outputs.
<IP_ADDRESS> Documentation Tip 2
Avoid proprietary formats: Use text files (.txt, .md) that don’t require special tools to open.
<IP_ADDRESS> Documentation Tip 3
Markdown to style documentation = machine readable, small file size, low overhead.
<IP_ADDRESS> Documentation Tip 4
Use coding approaches that connect data cleaning, analysis & results
R Markdown allows you to publish code and results in one (or more) output files.
1.18 Dissemination
Publishing is not the end of your analysis, rather it is a way towards your future research and the future research of others.
<IP_ADDRESS> Dissemination - Why
- Funding agency / journal requirement
- Community expects it
- Increased visibility / citation
- More efficient, less redundant science
<IP_ADDRESS> Dissemination workflow
Example Workflow / Tools:
Document workflow: R Markdown
Collaborate with Colleagues / Version Control : GitHub
Publish Data Snapshot: FigShare, Dryad, Zenodo
Share workflow: Binder
Archive data
Share link to DOIs
1.19 Four Facets of Reproducibility
Documentation: RStudio, GitHub
Organization: File naming / directory structure best practices
Automation: Efficient Coding Practices
Dissemination: GitHub, Data Archives, DOIs


We all love lists, but we here at The Pirates Inn wanted one for the
Cologne Startup Scene that kept updating, automatically. At the same time,
many of us were pleading everyone to create an
AngelList profile, as it is important
irrespective of such a list. Now we married both worlds. This page is
built on the AngelList API.
Now go register!


All demos include documentation so you can see exactly how things are done!
Standard Demos
Add-On Demos
- Sorting - make your FooTable's sortable.
- Filtering - include filtering in your FooTable.
- Pagination - include pagination in your FooTable.
- Striping - include striping on your FooTable.
- Bookmarkable - Add bookmarks in the URL, so a user can save a particular view of a FooTable.
- Showcase - a showcase using the sorting, filtering and pagination add-ons.
Theme Demos
- Metro Theme - A demo showing off the Metro theme.
- Old Theme - A demo showing off the original FooTable theme.
Advanced Demos


{% extends 'common/base.html' %} {% load static %} {% block content %}
This care about saving password hashed at database


Methods
AddSeatToOrder(orderId, seatId)
Place a hold on a seat and add it to an order
Parameters:
| Name | Type | Description |
|---|---|---|
orderId |
string | Order ID |
seatId |
string | Seat ID |
- Source:
AutoSelect(numSeats, seatClassPreference)
Automatically select some seats and add them to the order
Parameters:
| Name | Type | Description |
|---|---|---|
numSeats |
number | Number of seats to select |
seatClassPreference |
array | Which seat classes to prefer in order |
- Source:
CancelEvent(eventId)
Cancel an event and all reservations for that event
Parameters:
| Name | Type | Description |
|---|---|---|
eventId |
string | Event ID |
- Source:
CancelReservation(orderId, seatId)
Cancel a reservation and release the seats
Parameters:
| Name | Type | Description |
|---|---|---|
orderId |
string | Order ID |
seatId |
string | Seat ID |
- Source:
CompleteOrder(orderId)
Complete order and convert holds into reservations
Parameters:
| Name | Type | Description |
|---|---|---|
orderId |
string | Order ID |
- Source:
ContinueOrder(orderId, expires)
Keep an order from expiring and becoming abondoned
Parameters:
| Name | Type | Description |
|---|---|---|
orderId |
string | Order ID |
expires |
number | New timestamp when order will expire |
- Source:
CreateEvent(ownerId, venueConfigId, maxPeople) → {Promise}
Create a new Event
Parameters:
| Name | Type | Description |
|---|---|---|
ownerId |
string | Who is responsible for this event |
venueConfigId |
string | Venue Configuration to use for this event |
maxPeople |
number | Maximum people permitted in venue |
- Source:
Returns:
the id of the new Event Promise will resolve to type string.
- Type
- Promise
CreateOrder(userId, eventId, expires) → {Promise}
Create a new Order
Parameters:
| Name | Type | Description |
|---|---|---|
userId |
string | The user who is placing the reservation |
eventId |
string | The event that the order is for |
expires |
number | Timestamp when order expires and is considered abondoned |
- Source:
Returns:
the id of the new Order Promise will resolve to type string.
- Type
- Promise
CreateSeat(name, seatClass, venueConfigId, nextTo, tableId, geometry) → {Promise}
Create a new seat
Parameters:
| Name | Type | Description |
|---|---|---|
name |
string | The seat name |
seatClass |
string | The class of seat |
venueConfigId |
string | the Venue Configuration the seat belongs to |
nextTo |
array | the seats that are next to this one |
tableId |
string | the table this seat is at |
geometry |
object | Information about where the Seat is |
- Source:
Returns:
the id of the new seat Promise will resolve to type string.
- Type
- Promise
CreateTable(venueConfigId, minSeats, maxSeats, geometry) → {Promise}
Create a new Table
Parameters:
| Name | Type | Description |
|---|---|---|
venueConfigId |
string | Venue Configuration to use for this event |
minSeats |
number | Minimum number of people in a party to reserve the table |
maxSeats |
number | Maximum number of people that can sit at this table |
geometry |
object | Information about where the Table is |
- Source:
Returns:
the id of the new Table Promise will resolve to type string.
- Type
- Promise
CreateVenue(ownerId, name, maxPeople) → {Promise}
Create a new venue
Parameters:
| Name | Type | Description |
|---|---|---|
ownerId |
string | Who is responsible for this venue |
name |
string | Name of Venue |
maxPeople |
number | Maximum people permitted in venue |
- Source:
Returns:
the id of the new venue Promise will resolve to type string.
- Type
- Promise
CreateVenueConfiguration(venueId, name, maxPeople) → {Promise}
Create a new Venue Congiguration
Parameters:
| Name | Type | Description |
|---|---|---|
venueId |
string | Venue |
name |
string | Name of Venue Configuration |
maxPeople |
number | Maximum number of people permitted in this Venue Configuration |
- Source:
Returns:
the id of the new Venue Configuration Promise will resolve to type string.
- Type
- Promise
DeleteEvent(id)
Delete an Event
Events on sale must be cancelled before being deleted.
Parameters:
| Name | Type | Description |
|---|---|---|
id |
string | Event ID |
- Source:
DeleteOrder(id)
Delete an Order
Reservations must be cancelled first
Parameters:
| Name | Type | Description |
|---|---|---|
id |
string | Order ID |
- Source:
DeleteSeat(id)
Delete a Seat
Venue Configuration must be unavailable first
Parameters:
| Name | Type | Description |
|---|---|---|
id |
string | Seat ID |
- Source:
DeleteTable(id)
Delete a Table
Venue Configuration must be unavailable first
Parameters:
| Name | Type | Description |
|---|---|---|
id |
string | Table ID |
- Source:
DeleteVenue(id)
Delete a Venue
Parameters:
| Name | Type | Description |
|---|---|---|
id |
string | Venue ID |
- Source:
DeleteVenueConfiguration(id)
Delete a Venue Configuration
Must be unavailable first
Parameters:
| Name | Type | Description |
|---|---|---|
id |
string | Venue Configuration ID |
- Source:
FindAbandonedOrders(page, perpage) → {Promise}
Get any abondoned (expired) orders
Parameters:
| Name | Type | Description |
|---|---|---|
page |
number | page number |
perpage |
number | per page |
- Source:
Returns:
abondoned orders Promise will resolve to type array.
- Type
- Promise
GetAllEventsOnSale(page, perpage) → {Promise}
Get all Events marked on sale
Parameters:
| Name | Type | Description |
|---|---|---|
page |
number | page number |
perpage |
number | per page |
- Source:
Returns:
events on sale Promise will resolve to type array.
- Type
- Promise
GetAllVenuesByOwner(ownerId) → {Promise}
Get all Venues for an owner
Parameters:
| Name | Type | Description |
|---|---|---|
ownerId |
string | owner id |
- Source:
Returns:
List of venues Promise will resolve to type array.
- Type
- Promise
GetEvent(id) → {Promise}
Get an Event
Parameters:
| Name | Type | Description |
|---|---|---|
id |
string | Event ID |
- Source:
Returns:
the Event data as an object Promise will resolve to type object.
- Type
- Promise
GetOrdersForUser(userId, page, perpage) → {Promise}
Get a users orders
Parameters:
| Name | Type | Description |
|---|---|---|
userId |
string | User ID |
page |
number | page number |
perpage |
number | per page |
- Source:
Returns:
orders for user Promise will resolve to type array.
- Type
- Promise
GetOrderSummary(orderId) → {Promise}
Get a summary of an Order
Parameters:
| Name | Type | Description |
|---|---|---|
orderId |
string | Order ID |
- Source:
Returns:
the summary for the specified Order Promise will resolve to type array.
- Type
- Promise
GetSeat(id) → {Promise}
Get a Seat
Parameters:
| Name | Type | Description |
|---|---|---|
id |
string | Seat ID |
- Source:
Returns:
the Seat data as an object Promise will resolve to type object.
- Type
- Promise
GetSeatsAndTablesForEvent(eventId, page, perpage)
Get all Seats and Tables for an Event
Parameters:
| Name | Type | Description |
|---|---|---|
eventId |
string | Event ID |
page |
number | page number |
perpage |
number | per page |
- Source:
GetTable(id) → {Promise}
Get a Table
Parameters:
| Name | Type | Description |
|---|---|---|
id |
string | Table ID |
- Source:
Returns:
the Table data as an object Promise will resolve to type object.
- Type
- Promise
GetVenue(id) → {Promise}
Get a Venue
Parameters:
| Name | Type | Description |
|---|---|---|
id |
string | Venue ID |
- Source:
Returns:
the Venue data as an object Promise will resolve to type object.
- Type
- Promise
GetVenueConfiguration(id) → {Promise}
Get a Venue Configuration
Parameters:
| Name | Type | Description |
|---|---|---|
id |
string | Venue Configuration ID |
- Source:
Returns:
the VenueConfiguration data as an object Promise will resolve to type object.
- Type
- Promise
GetVenueConfigurations(venueId) → {Promise}
Get Venue Configurations for a Venue
Parameters:
| Name | Type | Description |
|---|---|---|
venueId |
string | Venue ID |
- Source:
Returns:
the Venue Configurations for the specified Venue Promise will resolve to type array.
- Type
- Promise
UpdateEvent(data, complete)
Update an Event
Parameters:
| Name | Type | Description |
|---|---|---|
data |
object | Event data to update |
complete |
boolean | if set to true, missing fields should be deleted |
- Source:
UpdateSeat(data, complete)
Update a Seat
Parameters:
| Name | Type | Description |
|---|---|---|
data |
object | Seat data to update |
complete |
boolean | if set to true, missing fields should be deleted |
- Source:
UpdateTable(data, complete)
Update a Table
Parameters:
| Name | Type | Description |
|---|---|---|
data |
object | Table data to update |
complete |
boolean | if set to true, missing fields should be deleted |
- Source:
UpdateVenue(data, complete)
Update a Venue
Parameters:
| Name | Type | Description |
|---|---|---|
data |
object | Venue data to update |
complete |
boolean | if set to true, missing fields should be deleted |
- Source:
UpdateVenueConfiguration(data, complete)
Update a Venue Configuration
Parameters:
| Name | Type | Description |
|---|---|---|
data |
object | Venue Configuration data to update |
complete |
boolean | if set to true, missing fields should be deleted |
- Source:
UpdateVenueConfigurationAvailability(venueConfigurationId, available)
Make a venue configuration available or unavailable.
Must not have any events for sale using this venute configuration.
Parameters:
| Name | Type | Description |
|---|---|---|
venueConfigurationId |
string | Venue Configuration ID |
available |
boolean | availability |
- Source:


var new_array = {},
keycount = (keys && keys.length) || 0,
i = 0;
then this will always work properly,
since keycount does not have to be falsy 0, but REALLY zero.
if (keycount !== values.length) {
return false;
}


See available instruments. This instrument was built with Koheron Software Development Kit. See instrument source code.


{% extends "english/base.html" %} {% block title %}Studious Prime{% endblock %} {% block page_content %}
{{ newword.word.example }}
You have no new word yet. Go to Books page and add a new book.


People
Working Groups Leaders
--- layout: index title: Team tagline: tags : [team, components] img : img-mobile : author : Antonio Trento css: js: keywords: components, demo canonical: https://heliumjk.github.io --- {% include JB/setup %}