GD | 220.05 | Outro to Interaction Design
Index Omnibus Précis Useful Stuff.
Spring 2018
Useful Resources
Articles & Essays
On building layouts:
Transitions in CSS
Creating Animations in CSS
Media queries & mobile styles:
SVGs: exporting & animating
jQuery for Basic Interactions
Parting Thoughts
Thanks so much for a great semester! Here's a review of some of the material we went over these last 16 weeks:
Useful Resources:
A good reference library of style attributes:
cssreference.io
A comprehensive, multipart CSS tutorial.
https://www.w3schools.com/css/
A useful front-end template for starting a project
https://html5boilerplate.com
Articles & Essays
What Screens WantFrank Chimero
Now You See It: Helvetica, Modernism and the Status Quo of DesignDangerous Objects
Beyond the New: a Search for Ideals in DesignHella Jongerius & Louise Schouwenberg
Reframing Accessibility for the WebAnne Gibson
Why is graphic design 93% white?Brenda Mitchell-Powell
A DIY Web Accessibility BlueprintBeth Raduenzel
Tech is not winning the battle against white supremacyTaylor Hatmaker
(CW: racial slurs, homophobic language and very graphic depictions of racism and violence)
Responsive Comping: Obtaining Signoff without MockupsMatt Griffin
Fairytales & Fashion CriticismRachel Matthews
Designing CultureColin McSwiggin
Looks Much Better Now: On The White Utopian GazeMark Gunnery for Hyrsteria Zine
On Weaponised DesignCade for Our Data Our Selves
Ceci n’est pas un prototype.Katherine Olvera
On building layouts:
I mentioned in class that there are a few ways to create layouts in HTML. I’ve outlined 3 ways below. Note: You’ll also notice I’ve set up a media query within the Codepen examples for display on smaller viewports.
Method 1: Float (most widely supported)
One way you can build your layouts is through the “float” property. Here’s the example I shared during class:
https://codepen.io/SpenceJMNelson/pen/aqvXxK
I have created my layout elements and set them all to “float:left;” Note: Items making up adjacent columns need to add up to 100%. Note what happens when content in one column gets taller than adjacent columns, and compare that with the flexbox codepen.
for greater insight into how this functions try removing the float attributes in the css frame, or try adjusting the size of the columns. can you make them all equal size while still having them appear next to each other?
Method 2: Flexbox (I’d personally recommend this one)
This method is a little more reliable than floating. Here’s a codepen in action:
https://codepen.io/SpenceJMNelson/pen/NywJKV
Whenever you want columns, just wrap the elements you want to appear next to each other inside a div and set that div to display:flex. You can set the widths to whatever you want and the layout won’t break in the same way it does using floats. Additionally, You’ll note that when the content of one item in a flex layout row gets taller than the others, the height of all the other items grows to match it.
Here’s a nice guide on using flexbox, with some more advanced uses
https://css-tricks.com/snippets/css/a-guide-to-flexbox/
Method 3: CSS Grid (Most advanced, not as widely supported )
This method is designed from the ground up within the last year for creating grids on the web and offers the greatest number of options and flexibility, and allows you to consider grids in both horizontal and vertical axis. Here’s a codepen in action:
https://codepen.io/SpenceJMNelson/pen/eVeXwy
Notice how I’m able to define 6 column grid for everything within the “main-wrapper” div with “grid-template-columns: 16.666% 16.666% 16.666% 16.666% 16.666% 16.666%;”, then style the child elements to span columns and rows within that grid. It takes a while to get the hang of it (I’m still figuring it out TBQH), but it is quite powerful.
A full guide:
https://css-tricks.com/snippets/css/complete-guide-grid/ (Links to an external site.)
States & Transitions
Adding a ":hover" pseudoelement in css lets you change css attributes based on whether a user's mouse is over the element. This code will change a link;s color from blue to red when the user hovers on that link:
a {
color:blue;
}
a:hover {
color:red;
}
You can also add a hover to a parent element for more complex interactions. Here, when you hover over a link block, two elements nested inside it(an "h2" and a "p" tag) will behave differently:
a.linkblock h2 {
color:blue;
}
a.linkblock p {
opacity:0;
}
a.linkblock:hover h2 {
color:red;
}
a.linkblock:hover p {
opacity:1;
}
You can then add a transition to automatically animate the transformation between these two states
a {
color:blue;
transition:300ms;
}
a:hover {
color:red;
}
Creating Animations in CSS
First, somewhere towards the beginning of your CSS document define the keyframesof your animation:
@keyframes fade-in {
from {
opacity:0;
}
to {
opacity: 1;
}
}
Then, call your animation in the style declaration of the element you want to animate
.my-cool-div {
animation-name: fade-in;
animation-duration: 7s;
animation-fill-mode: both; /* optional */ animation-iteration-count: infinite; /* optional */ animation-delay: 1s; /* optional */
animation-direction: alternate; /* optional */
}
For more information on animations:
https://cssreference.io/animations/
https://css-tricks.com/almanac/properties/a/animation/
Media queries & mobile styles:
You can create styles for specific viewport sizes using the @media css rule. Place these at the very end of your document after all your styles. Below is an example showing how you might scale a big headline down for smaller viewports:
h1 {
font-size:48px;
}
@media (max-width: 800px) {
h1 {
font-size:36px;
}
}
@media (max-width: 400px) {
h1 {
font-size:24px;
}
}
Media queries are can be formatted in the following ways:
@media (max-width: 400px) {
*/This media query contains styles that apply from the smallest possible viewport width up to 400px */
}
@media (min-width: 400px) {
*/This media query contains styles that apply from the largest possible viewport width down to 400px */
}
@media (min-width: 400px) and (max-width: 1024px) {
*/This media query contains styles that apply only between the widths of 400px and 1024 px */
}
SVGs: exporting & animating
You can export an image as an SVG from illustrator and sketch in the same way you would as a PNG or JPG. Exported SVG code will be in this format, which you can see is somewhat similar to HTML:
<svg class="mydrawing" width="138px" height="162px" viewBox="0 0 138 162" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 49.3 (51167) - http://www.bohemiancoding.com/sketch -->
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<circle id="Oval" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" cx="51.5" cy="49.5" r="48.5"></circle>
<rect id="Rectangle" stroke="#000000" stroke-width="2" x="52" y="50" width="85" height="85"></rect>
<polygon id="Triangle" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" points="51.5 76 102 161 1 161"></polygon>
</g>
</svg>
Embedded in the markup, this SVG code will behave the same way as an .svg file linked to in an <img> tag. Here's the preceding code rendered in the browser:
The key difference is that if you embed an svg inline, you can animate it just as you would standard HTML markup. I've added some animations here by finding IDs inside the svg code I want to select:
@keyframes svgtrianglemove{
from {
transform:translateX(10px)
}
to {
transform:translateX(0px)
}
}
svg.mydrawing #Triangle{
animation:svgtrianglemove 1s infinite alternate;
transform-origin: 40% 80%;
}
@keyframes svgsquaremove{
from {
transform:scale(.8)
}
to {
transform:scale(1)
}
}
svg.mydrawing #Rectangle{
animation:svgsquaremove 1s infinite alternate;
transform-origin: 10% 80%;
}
@keyframes svgcirclemove{
from {
transform:rotateX(0deg) rotateY(0deg);
}
to {
transform:rotateX(90deg) rotateY(270deg);
}
}
svg.mydrawing #Oval{
animation:svgcirclemove 1s infinite alternate;
transform-origin: 40% 30%;
}
One thing to note: you'll have to set a "transform origin" when rotating or scaling a given element. The default transformation point for all elements in the drawing is at the center of the SVG itself, not the individual elements themselves.
jQuery for Basic Interactions
If you want to install jQuery on a page you created from scratch, place this code before the tag toward the end of your document:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
//your javascript here.
</script>
You can write your javascript based on this codepen:
https://codepen.io/SpenceJMNelson/pen/vRYpox
It uses jQuery to toggle a class on an element that hides and shows a menu. The code does the following:
$( document ).ready(function() { //this line initializes jQuery on your page
$(".class_of_clickable_thing").click(function(){
$(".class_of_thing_you_want_to_add_class_to").toggleClass("name_of_class_you_want_to_add");
});
});
So if I wanted to add a class of “active” to an item that already has a class of “menu” when a user clicks an element with a class of “button”, it would look like this (note that when you declare the class you want to add, you don’t include a period before the class name.)
$( document ).ready(function() {
$(".button").click(function(){
$(".menu").toggleClass("active");
});
});
Parting Thoughts
Keep experimenting
I encourage every one of you to continue to experiment using the tools at your disposal. Continue to make pages and put them online. Make a poster for an upcoming show. Edit your personal pages on github. The way to get better at HTML, CSS, and Javascript is to keep playing with it.
Seek out answers
Everything you see on the web is by it's very nature open source. DOn't forget that you can always check to see how something is made by using the inspect tool. Also don't forget that you can always Google questions.
Prototype
I tend to start with designing specific components as the basis of a design because it allows me to play with details of the system without boxing myself in to specific viewport widths. Here’s an example of a component i designed in my own work. Take a look at the code as well, as it might provide some insights into more advanced uses of hovers & transitions.
Here, I used a small card component to play with how type and color worked together on a larger page I was working on. This component could pe put anywhere into a larger design system, and doesn’t rely on browser width.
Thinking about Outcomes
This year, we tried to accomplish the following:
Demonstrate an understanding of hierarchy as it applies to interactive media.
The projects that you all participated in this semester were meant to make you think about the presentation of different types of content on the screen.
Employ concepts, processes, and production tools for interaction design.
Hopefully, this class showed you some ways of thinking about interaction design, from creating rythm with type and scrolling, to creating navigation structures to help a user move through content, to creating unified visual systems that run throughout a work. My goal was to imagine a tool-agnostic approach to designing websites.
Develop a process that adapts to new tools, best practices and mediums.
This class was oriented around giving you the tools to quickly build and deploy typeset, interactive works onto the web, using a minimal amount of paid tools. Creating works in HTML and CSS directly lets you the designer circumvent a lot of expensive and complex systems and software, and get designed work in a public space quickly and with a minimal expenditure of resources. By focusing on designing in the medium itself, I hope I was able to emphasize that the web design tools like sketch, flinto, principal, keynote, photoshop, et. al. are abstractions; ways of defining how the final thing will look and move. Deliverables produced in these and future tools should be viewed as such. Don't get too invested in any one tool.
Develop an understanding of interaction as an essential component of communication.
Design involves not just setting type, but also imagining how a user is going to interact with the work. In print, these interactions could be the act of opening a brochure, or breaking a sticker that seals an envelope. The web is no different.


{% extends "index.html"%} {% load staticfiles %} {% block breadcrumb %} Current Page: Home »Products » {% endblock %} {% block content %}
Products And Services
The products deliverd via Survey Office are:-
The services delivered via Survey Office are:-


The YouTube Cube
I'm sorry your browser does not support the HTML5 canvas element.
Enter channel name:
Use the left and right arrow keys to rotate the cube and the "r" key to reset the cube to its initial position.
Enter the name of a
YouTube
channel in the box and click the "View Channel" button to see the data about a channel displayed on the cube.


An implementation of the correction methods proposed by Shu and Yi (2017) <doi:10.1177/0962280217743777> for the inverse probability weighting (IPW) estimation of average treatment effect (ATE) with misclassified outcomes. Logistic regression model is assumed for treatment model for all implemented correction methods, and is assumed for the outcome model for the implemented doubly robust correction method.
| Version: | 1.0 |
| Imports: | nleqslv, stats |
| Published: | 2018-03-01 |
| Author: | Di Shu, Grace Y. Yi |
| Maintainer: | Di Shu <shudi1991 at gmail.com> |
| License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| NeedsCompilation: | no |
| CRAN checks: | ipwErrorY results |
| Reference manual: | ipwErrorY.pdf |
| Package source: | ipwErrorY_1.0.tar.gz |
| Windows binaries: | r-devel: ipwErrorY_1.0.zip, r-release: ipwErrorY_1.0.zip, r-oldrel: ipwErrorY_1.0.zip |
| OS X binaries: | r-release: ipwErrorY_1.0.tgz, r-oldrel: ipwErrorY_1.0.tgz |
Please use the canonical form https://CRAN.R-project.org/package=ipwErrorY to link to this page.


{% extends 'layouts/layout.html' %} {% from 'button/macro.njk' import button %} {% from 'back-link/macro.njk' import backLink %} {% block pageTitle %} Error: Enter your mobile number {% endblock %} {% block content %}
We will send you another 6 digit security code, this time to your phone, to confirm your mobile number.
It will be quicker to set up your NHS login if the mobile number you enter is the number your GP surgery has for you.


Cytoarchitectural analysis¶
Given the ventricle segmentation, nuclei phyical coordinates, and cell-type labels, SCOUT’s cytoarchitectural analysis computes radial cell profiles to identify the distribution of cellular organizations in each organoid.
Generate ventricle normals¶
The binary ventricle segmentation must be converted into a vectorized mesh in order to obtain surface normals that determine the direction for each radial profile. This can be done using the following command:
scout cyto mesh segment_ventricles.tif voxel_size.csv mesh_ventricles.pkl -d 1 6 6 -g 2 -s 2 -v -p
This command creates a new file mesh_ventricles.pkl, which is a pickled Python dictionary containing the verticies, normals, and faces of the ventricle mesh.
The argument -d 1 6 6 specifies the downsampling factor used to generate segment_ventricles.tif. The arguments -g 2 and -s 2 specify how much gaussian smoothing should be applied to the binary image before meshing and what the mesh spacing should be (minimum is 1, which gives the finest mesh).
A 3D render of the ventricle mesh will be shown. Note: The plotting flag -p here will not work if mayavi has not been properly installed.
Compute radial cell profiles¶
Given the ventricle mesh, the nuclei point cloud can be binned into radially oriented cylinders along each normal vector. To compute these radial profiles, the following command can be used:
scout cyto profiles mesh_ventricles.pkl centroids_um.npy nuclei_gating.npy cyto_profiles.npy -v -p
This command creates a new numpy array cyto_profiles.npy containing the radial profiles for each cell-type along each normal.
Note: This command defaults to using all CPU cores available. If the calculation is still too slow, try increasing the mesh spacing -s to reduce the number of profiles to compute.
Setting up clustering analyses¶
Due to the stochastic nature of organoid culture, it is difficult to assign distinct semantic labels to each radial cell profile corresponding to canonical cytoarchitectures. Instead, SCOUT aims to quantify cytoarchitectural composition of each organoid relative to what is observed in a group of organoids. To accomplish this, SCOUT uses hierarchical clustering of radial cell profiles to assign cytoarchitectural labels to all organoids in a particular study.
Since the results of the clustering analysis depend on which organoids are included, it is useful to aggregate organoid datasets into a separate folder to make this dependency on a group of organoids explicit. We first select which datasets we would like to include in our analysis folder using the following command:
scout multiscale select /path/to/datasets/summary.csv analysis.csv Arlotta_d34 Lancaster_d35 -v
This command reads the summary.csv file, pulls out the paths to the Arlotta_d34 and Lancaster_d35 organoid datasets, and saves the selected organoids to an new analysis.csv file in the current folder (which is assumed to be analysis folder for Arlotta_d34_vs_Lancaster_d35 comparison based on the command above). Note that this analysis.csv file can be modified to include more datasets or exclude some datasets from the analysis. The analysis folder can be setup with links to underlying dataset folders using the following command:
scout multiscale setup analysis.csv /path/to/datasets/ -v
This command creates new folders for each dataset in the analysis containing a symbolic link to the original dataset folder in /path/to/datasets. This allows convenient access to the single-cell analysis results and, more importantly, shares the previous results across multiple analyses for consistency.
Using the example in the Preprocessing section, running this command in an analysis folder next to the datasets folder would result in the following structure:
datasets/
| 20190419_14_35_07_AA_org1_488LP13_561LP120_642LP60/
| 20190419_15_50_16_AA_org2_488LP13_561LP120_642LP60/
| 20190509_16_55_31_AA-orgs5.8.19_org1_488LP15_561LP140_642LP50/
| 20190531_14_31_36_AA_org2_488LP13_561LP140_642LP60/
| .,, possibly more datasets
| summary.csv
analysis_name/
| analysis.csv
| Group1/
| 20190419_14_35_07_AA_org1_488LP13_561LP120_642LP60/
| | dataset -> ../../datasets/20190419_14_35_07_AA_org1_488LP13_561LP120_642LP60/
| 20190419_15_50_16_AA_org2_488LP13_561LP120_642LP60/
| | dataset -> ../../datasets/20190419_15_50_16_AA_org2_488LP13_561LP120_642LP60/
| Group2/
| 20190509_16_55_31_AA-orgs5.8.19_org1_488LP15_561LP140_642LP50/
| | dataset -> ../../datasets/20190509_16_55_31_AA-orgs5.8.19_org1_488LP15_561LP140_642LP50/
| 20190531_14_31_36_AA_org2_488LP13_561LP140_642LP60/
| | dataset -> ../../datasets/20190531_14_31_36_AA_org2_488LP13_561LP140_642LP60/
Clustering sampled profiles¶
In order to identify different types of cytoarchitectures in an unbiased manner, the radial cell profiles can be clustered into groups using hierarchical clustering.
In comparative studies, some organoids may contain completely different cytoarchitectures depending on the model. For this reason, the clustering analysis must contain representative radial profiles from each organoid.
Given that it is too computationally expensive to concatenate all profiles together and cluster them directly, we instead randomly sample an equal number of profiles from each organoid in the analysis and cluster based on that subset. The profiles can be sampled using the following command:
scout cyto sample 5000 cyto_sample_index.npy -i cyto_profiles.npy -o cyto_profiles_sample.npy -v
This command will randomly sample 5000 profiles from cyto_profiles.npy and store them in cyto_profiles_sample.npy. Another output is cyto_samply_index.npy, which contains the index into cyto_profiles.npy for each of the sampled profiles. This command should be run for each organoid, and then the sampled profiles can be combined:
scout cyto combine analysis.csv -o cyto_profiles_combined.npy -s cyto_profiles_combined_samples.npy -v
When this command is run, it is meant to find individual cyto_profiles_sample.npy from each subfolder within each group and combine them all. The profiles will be concatenated in order and saved to cyto_profiles_combined.npy, along with a new array cyto_profiles_combined_samples.npy which contains integer labels for each profile corresponding to the which organoid the profile is from. If this process is run correctly, the analysis folder should resemble the construct below.
analysis/
| analysis.csv
| cyto_profiles_combined.npy
| cyto_profiles_combined_sample.npy
| Group1/
| 20190419_14_35_07_AA_org1_488LP13_561LP120_642LP60/
| | dataset -> ../../datasets/20190419_14_35_07_AA_org1_488LP13_561LP120_642LP60/
| 20190419_15_50_16_AA_org2_488LP13_561LP120_642LP60/
| | dataset -> ../../datasets/20190419_15_50_16_AA_org2_488LP13_561LP120_642LP60/
| Group2/
| 20190509_16_55_31_AA-orgs5.8.19_org1_488LP15_561LP140_642LP50/
| | dataset -> ../../datasets/20190509_16_55_31_AA-orgs5.8.19_org1_488LP15_561LP140_642LP50/
| 20190531_14_31_36_AA_org2_488LP13_561LP140_642LP60/
| | dataset -> ../../datasets/20190531_14_31_36_AA_org2_488LP13_561LP140_642LP60/
To perform the cytoarchitecture clustering anb visualization, use the Jupyter notebook “determine cyto clusters.ipynb”.
Once the cytoarchitecture clusters have been determined, they can be named using the following command:
scout cyto name name1 name2 (...) -o cyto_names.csv -v
Next Step:
scp -r cyto_names.csv /Group1/each_organoid_folder
Classifying cytoarchitectures¶
Once the clusters labels have been identified, then all radial profiles can be classified based on those cytoarchitecture assignments. Please go into the individual organoid subfolder and run the command given below:
scout cyto classify ../../cyto_profiles_combined.npy ../../cyto_labels_combined.npy dataset/cyto_profiles.npy cyto_labels.npy -v --umap ../../model_name.umap
This command uses the combined profiles and cluster labels as a training set to classify all profiles in cyto_profiles.npy using a nearest neighbor classifier. The resulting cytoarchitecture labels are saved to cyto_labels.npy, and the argument –umap model.umap specifies which pre-trained UMAP model to embed the profiles before classification.
3D rendering with Blender¶
Using Blender 2.8, the following scripts can be used to render the ventricles colored by cytoarchitectural labels each mesh face as well as the nuclei point clouds.
Export as OBJ and CSV¶
See the Jupyter notebook “Export mesh and points as OBJ”. OBJ files can be imported directly into Blender. The notebook converts the nuclei physical coordinates from a numpy array into a CSV array that can be read into Blender using pure Python.
The cytoarchitecture labels correspond to each vertex, but meshes are easier to color by faces in Blender, so the notebook also uses the vertex-based labels to label each face. The resulting face labels are written to CSV so that they can also be loaded into Blender using pure Python.
Blender script¶
In Blender, the following script creates a new material for each unique cytoarchitecture and assigns each face in the ventricle mesh to the corresponding material.
import bpy
import csv
# Path to face labels
labels_csv = 'face_labels.csv'
def read_csv(path):
with open(path, mode='r') as f:
line = f.readline().split('\n')[0]
return line.split(',')
# Load face labels
labels = read_csv(labels_csv)
classes = list(set(labels))
classes.sort()
n_classes = len(classes)
print(f'Read {len(labels)} face labels belonging to {n_classes} classes')
# Make materials for each class
context = bpy.context
obj = context.object
mesh = obj.data
existing_material_names = [m.name for m in mesh.materials]
class_material_names = []
class_material_index = []
for i in range(n_classes):
material_name = f'class {i} material'
class_material_names.append(material_name)
if material_name in existing_material_names:
class_material_index.append(existing_material_names.index(material_name))
else:
class_material_index.append(len(mesh.materials))
mesh.materials.append(bpy.data.materials.new(material_name))
label_to_index = dict(zip(range(n_classes), class_material_index))
# Assign faces to materials based on labels
for f, lbl in zip(mesh.polygons, labels): # iterate over faces
print(lbl)
f.material_index = label_to_index[int(lbl)]
print("face", f.index, "material_index", f.material_index)
slot = obj.material_slots[f.material_index]
mat = slot.material
if mat is not None:
print(mat.name)
print(mat.diffuse_color)
else:
print("No mat in slot", f.material_index)


A few words
Sandhya Resort and Spa, Manali
Sandhya Resort & Spa, Kanyal Road, Rangri, Manali, Himachal Pradesh - 175131
Sandhya Palace Kullu
Sandhya Palace, Kullu VPO Shamshi- Ramshila Road, Himachal Pradesh - 175126
Sandhya Kasol
Sandhya, Kasol Village Kasol near Manikaran Distt. Kullu, Himachal Pradesh - 175105


Adopting a new language one microframework at a time
Recently I had to start using a different language (Python) to maintain an existing project. It made me appreciate the role micro-frameworks have played in my adoption of new languages of late, by late I mean the last few years. This article explores what role they play and how that can help in the immediate adoption of a new [syntax] language.
What is a micro-framework
The frameworks are much of a much-ness very similiar in there construction and patterns. These frameworks tend to consist of / specialise in a single part of a normal application (routing), and often achieve that goal in simplistic and similiar ways. They generally encourage building small, tight and loosely coupled components that can then be assembled quickly by the developer and often driven from a single file.
Ease of understanding is by far the most common feature of most micro-frameworks, they contain significantly less code, fewer features and little complexity so they offer an unparalleled opportunity to understand how a minimalist implementation of a solution to a problem might be approached.
Getting a RESTful web application up-and-running is a fairly trivial task with most frameworks and these micro-services are an increasingly popular application architecture in enterprise infrastructure, as they allow for rapid development, smaller code-bases, enterprise integration, and descrete deployable packages
They tend to be delivered through Domain Specific language implementations, examples of which are Sinatra (Ruby), Silex (PHP),Flask (Python), SpringBot (Java), Nancy for .NET etc etc.. just google you will find lots.
According to the Thoughtworks technology radar (and those guys know a thing or two) they are something you should be adopting in your organisation.
How have they have often helped me learn a new language
-
The similiarities of structure help understand the architecture quickly. The formulaic nature of the process of routing and responding to http requests means regardless of language the concepts are similiar and more often than not the DSL implementations offer similiar syntax. Removing the barrier of how do this work allowing me to concentrate on how I do domain specific logic in this language.
-
The ease of deployment makes failing fast a feature. Most of the frameworks are equipped with in-built servers, or lean on middleware modules, so running them is a simple as executing a file and navigating to localhost.
-
You are encouraged to write simple code.The modular nature often means you are encouraged to stand on the shoulders of others and the code you write tends to be very simple.
-
They are fun. Fun and fast means a project can be achieved quickly and results are immediate.
So I thoroughly recommend next time you want to pick up a language or achieve something quick in your language of choice pick up a micro framework it will be fun and fruitful.


| Organization | Progress | Submited | Status | |
|---|---|---|---|---|
|
{{request.organization.title}}
N/A
({{request.organization.acronym}})
{{m}}
|
0% 25% 50% 75% Submitted |
{{request.requested|fromNow}}
{{request.requested|date:'MMM dd HH:mm'}}
|
Incomplete Pending Accredited Rejected | |
|
No request. |


11-30-2014
I think my conflict resolution skills in general are pretty lacking. Looking over the compass of shame documentation I think I fall pretty cleanly into attacks self and withdrawal. I tend to react to conflict by getting angry at myself or by attempting to avoid the situation entirely.
A perfect example would be how my student loans kept piling up and piling up and I just kept ignoring them and hoping they would go away. This of course did not happen, and it culminated with the collections company garnishing my wages (a situation I don't quite understand. If someone is not making enough to make payments it seems to be to be counterintuitive to make them have even less money to make their payments, but I don't think collection companies are much concerned with anything besides their bottom line anyway.
I think the main cause of problem wasn't the problem itself, but was rather how I dealt with it.  I would have never ended up in the situation I was on. I am not saying that confrontation is the best course of action for resolving all problems, but it clearly was not the correct one in this case.


If you don't live in Austin, you might not be familiar with our most prized gem.. Barton Springs Pool!
Image Credit: Roger Mommaerts on Flickr, Creative Commons License
The pool is fed by a natural spring, and maintains a constant temperature between 68 and 71 degrees year- round.
Long considered sacred, the springs were used by the Tonkawa Native American tribe before the Spanish settled the area in the 17th century.
The city was deeded the springs, and the surrounding area, by Andrew Zilker (the namesake for the springs' home, Zilker park), and in the 1920s the city expanded the swimming area by damning the springs and building concrete sides.
In addition to the fridgid temperature, the pool's natural, uneven limestone bottom contributes to this unique swimming pool, complete with grasses and even small fishes!
The pool is generally open yearround from 5 a.m. to 10 p.m. Friday through Wednesday, and admission to the pool is $3 for Austin residents. Admission is free in the winter and in the summer from 9 p.m. until closing.
| Lifeguard Schedule | |
|---|---|
| Time | Swim Type |
| 5a.m. - 8a.m. | Swim at Own Risk (no fees) |
| 8a.m. - 9p.m. | Guarded Swim (admission fees apply) |
| 9p.m. - 10 p.m. | Swim at Own Risk (no fees) |
To maintain the safety of the springs for all to enjoy, Zilker Park asks visitors to leave the following items and activities at home:
To continue planning your trip, visit Barton Springs' webpage. This page has lots of great elements, including a sidebar, navbar and buttons. But that's not all, if you change the size of the browser window, you can see it is also mobile responsive!


DAPP
Smart Contract
Transfer
Send
Clear
Active accounts
No.
Owner
Nickname
Adress
Balance
Transactions
Time
From
To
Amount


Protocols
The following protocols are available globally.
-
Protocol that marks something that can be actually dispatched into the
See moreStore
. It doesn’t have any particular requirement, and the protocol is actually used to simply mark a category of items. Currently theStore
is able to manage 3 types ofDispatchable
:SideEffect
,StateUpdater
andAction
(deprecated).Declaration
Swift
public protocol Dispatchable : CustomDebugStringConvertible
-
Protocol implemented by a dispatchable that wants to be dispatched in response to a notification
See moreDeclaration
Swift
public protocol NotificationObserverDispatchable : Dispatchable
-
Protocol implemented by a dispatchable that wants to be dispatched in response to a change of the state
See moreDeclaration
Swift
public protocol StateObserverDispatchable : Dispatchable
-
Protocol implemented by a dispatchable that wants to be dispatched in response to the dispatch of another dispatchable
See moreDeclaration
Swift
public protocol DispatchObserverDispatchable : Dispatchable
-
Protocol implemented by a dispatchable that wants to be dispatched when the store starts
See moreDeclaration
Swift
public protocol OnStartObserverDispatchable : Dispatchable
-
An action represents an event that leads to a change in the state of the application. It can be triggered from a user action, from a system event or any event in general.
See moreDeclaration
Swift
@available(*, deprecated, message: "Use AnyStateUpdater instead") public protocol Action : Dispatchable
-
Action
can implement this protocol to perform side effects when an instance is dispatched.A side effect is nothing more than a piece of code that can interact with external services or APIs (e.g., make a network request, get information from the disk and so on). Side effects are needed because the
updatedState(currentState:)
function (which is the only other operation that is performed when an action is dispatched) must be pure and therefore it cannot interact with disk, network and so on.Dependencies
You can see from the
See moresideEffect(currentState:previousState:dispatch:dependencies:)
signature that a side effect takes as input some dependencies. This is a form of dependency injection for the side effects. By using only methods coming from the dependencies (instead of relying on global imports), testing is much more easier since you can inject a mocked version of the things you need in the side effect. For example, in a test, you may want to inject a mocked version of the class that manages the API requests, in order to control the result of the network call.Declaration
Swift
@available(*, deprecated, message: "Use AnySideEffect instead") public protocol ActionWithSideEffect : Action
-
Type Erasure for
See moreAsyncAction
Declaration
Swift
@available(*, deprecated, message: "Use AnySideEffect or AnyStateUpdater instead") public protocol AnyAsyncAction
-
Protocol that represents an
async
action.An
AsyncAction
is just an abstraction overAction
that provides a way to structure your action.You typically use an
Async
action when you have to deal with operations that are asynchronous. In the most common scenario, you dispatch the initial action, execute an operation in the side effect and then dispatch a completed/failed action based on the result of the operation. If the action has a concept of progress, you can also dispatch progress actions.This protocol has as the main goal to standardize the way async actions are managed.
It is important to note that this is just a a convenience approach to something you can do anyway. You can for instance create three actions:
performOperation
,OperationCompleted
andOperationFailed
and achieve the same result.AsyncAction
just provide a way to abstract and simplify the processTip & Tricks
Since the
Action
protocol is very generic when it comes to the state type that should be updated, a pattern we want to promote is to put in your application a protocol like the following:protocol AppAsyncAction: AsyncAction { func updatedStateForLoading(currentState: inout AppState) // same for completed, failed and progress } extension AppAsyncAction { func updatedStateForLoading(currentState: State) -> State { guard var state = state as? AppState else { fatalError("Something went wrong") } self.updatedStateForLoading(currentState: &state) return state } // same for completed, failed and progress }
In this way you can save a lot of code since you can use your actions in the following way
See morestruct A: AppAsyncAction { func updatedStateForLoading(currentState: inout AppState) { state.props = action.payload } // same for completed, failed and progress }
Declaration
Swift
@available(*, deprecated, message: "Use SideEffect or StateUpdater instead") public protocol AsyncAction : Action, AnyAsyncAction
-
Declaration
Swift
public protocol AnySideEffectContext
-
Declaration
Swift
public protocol AnySideEffect : Dispatchable
-
A side effect is a single atom of the logic of your application. While you can actually use them as you desire, the idea is to implement in each side effect a meaningful, self contained, piece of logic that can be used from other pieces of you application (e.g., dispatched by a View Controller or by another side effect).
The
StateUpdater
is strongly tied to the state that it handles and the dependencies it has. This greatily simplifies the code written in normal situations. However, if you need to create updaters that are not strictly tied to a concrete types (e.g., in a library) you can useAnySideEffect
.### App Tips & Tricks To further simplify the usage of a
StateUpdater
you can add to your application a helper protocol/// assuming `AppState` is the type of your application's state and `DependenciesContainer` is the /// container of your dependencies protocol AppSideEffect: SideEffect where StateType == AppState, Dependencies == DependenciesContainer {}
By conforming to
See moreAppSideEffect
, you will get better autocompletionDeclaration
Swift
public protocol SideEffect : AnySideEffect
-
Protocol that the side effect dependencies container should implement
See moreDeclaration
Swift
public protocol SideEffectDependencyContainer : AnyObject
-
Protocol for the state of the applications. In Katana, all the relevant application information should be placed in a single struct that has to implement the
See moreState
protocol.Declaration
Swift
public protocol State
-
Declaration
Swift
public protocol AnyStateUpdater : Dispatchable
-
A
StateUpdater
is aDispatchable
that can be used to update theStore
state configuration.The
StateUpdater
is strongly tied to the state that it handles. This greatily simplifies the code written in normal situations. However, if you need to create updaters that are not strictly tied to a concrete state type (e.g., in a library) you can useAnyStateUpdater
.App Tips & Tricks
To futherly simplify the usage of a
StateUpdater
you can add to your application an helper protocol/// assuming `AppState` is the type of your application's state protocol AppStateUpdater: StateUpdater where StateType == AppState {}
By conforming to
See moreAppStateUpdater
, you will get better autocompletionDeclaration
Swift
public protocol StateUpdater : AnyStateUpdater
-
Declaration
Swift
public protocol AnyStore : AnyObject


Emoncms on an shared Linux Server (1and1) could not creat feed
Submitted by thebluehill on Mon, 03/11/2014 - 19:00
Hi,
I want to install emoncms v8 on my shared server at 1and1 (1&1). I read the SharedLinuxHostingInstall.md, created a folder "emoncms" within htdocs and a mysql database, unziped the files. So far no problems!
However, I found no way to creat a folder emocmsdata above htdocs! Not via FTP or SSH.
I decided to try emoncmsdata within emoncms. The htaccess file were modified by adding
AddType x-mapp-php6 .php
AddHandler x-mapp-php6 .php
RewriteEngine on
RewriteBase /emoncms
and the settings.php by adding the db user etc. Additionally I changed the lines
Emoncms on an shared Linux Server (1and1) could not creat feed
Submitted by thebluehill on Mon, 03/11/2014 - 19:00Hi,
I want to install emoncms v8 on my shared server at 1and1 (1&1). I read the SharedLinuxHostingInstall.md, created a folder "emoncms" within htdocs and a mysql database, unziped the files. So far no problems!
However, I found no way to creat a folder emocmsdata above htdocs! Not via FTP or SSH.
I decided to try emoncmsdata within emoncms. The htaccess file were modified by adding
and the settings.php by adding the db user etc. Additionally I changed the lines
After adding the timezone at the index.php, I can generate an input.
But now my problem is, that I can't creat a feed! Error: feed could not be created, undefined!
I think the problem is the "wrong" path of the emoncmsdata.
Could someone try to help me?
tbh


Page 1
Page 2
Alert
Select
Option 1
Option 2
Option 3
Checkbox 1
Checkbox 2
Radio 1
Radio 2
Text (text)
Search (search)
Telephone (tel)
URL (url)
E-mail (email)
Date and Time (datetime)
Date (date)
Month (month)
Week (week)
Time (time)
Local Date and Time (datetime-local)
Number (number)
Range (range)
Colour (color)


Reports any classes which is only depended on and only depends on one module which is different from the module containing the class. Such class could be moved into that module.
New in 11, Powered by InspectionGadgets


Bytehub
Decoding Future
Together we learn, Together we grow, Together we are a part of the innovation.
by company
Be a part of INDIA's one of the largest growing community of technical enthusiasts.
Be the Developer you choose to be.
With the help of corporate professionals enhance your skills,innovate and get rewarded.
Compete,Discover and stand out. Be known in the community with your expertise.


Equivalent to the Clear button in the Routing Slip dialog box. Clears the routing slip.
Syntax
CLEAR.ROUTING.SLIP(reset_only_logical)
Reset_only_logical is a logical value that specifies whether the routing slip should be cleared.
This option is valid only after every recipient on the routing slip has received and forwarded the workbook. Setting reset_only_logical to TRUE in this case is equivalent to the Reset button in the routing slip dialog.
If some recipients have not received or routed the workbook, reset_only_logical is ignored.
If reset_only_logical is FALSE or omitted and the workbook has been routed to all recipients, then the routing slip is removed from the workbook. A new slip can be subsequently added using ROUTING.SLIP.
Return to index


|
| int | TotalDamage [get, set] |
| | Total damage done More...
|
| |
| double | TotalBreakbarDamage [get, set] |
| | Total breakbar damage done More...
|
| |
| int | Min [get, set] |
| | Minimum damage done More...
|
| |
| int | Max [get, set] |
| | Maximum damage done More...
|
| |
| int | Hits [get, set] |
| | Number of hits More...
|
| |
| int | ConnectedHits [get, set] |
| | Number of connected hits More...
|
| |
| int | Crit [get, set] |
| | Number of crits More...
|
| |
| int | Glance [get, set] |
| | Number of glances More...
|
| |
| int | Flank [get, set] |
| | Number of flanks More...
|
| |
| int | AgainstMoving [get, set] |
| | Number of time hits while target was moving More...
|
| |
| int | Missed [get, set] |
| | Number of times the hit missed due to blindness More...
|
| |
| int | Invulned [get, set] |
| | Number of times the hit was invulned More...
|
| |
| int | Interrupted [get, set] |
| | Number of times the hit nterrupted More...
|
| |
| int | Evaded [get, set] |
| | Number of times the hit was evaded More...
|
| |
| int | Blocked [get, set] |
| | Number of times the hit was blocked More...
|
| |
| int | ShieldDamage [get, set] |
| | Damage done against barrier, not necessarily included in total damage More...
|
| |
| int | CritDamage [get, set] |
| | Critical damage More...
|
| |
| long | Id [get, set] |
| | ID of the damaging skill More...
|
| |
| bool | IndirectDamage [get, set] |
| | True if indirect damage
If true, the id is a buff More...
|
| |
Class corresponding a damage distribution


The Computer Science Games are a collegiate competition that includes challenges from all aspects of computing. The games are a weekend long thrill ride with logic puzzles, difficult algorithms, intense video game competitions, social activities, and of course, programming. Organized by students from a different university every year, the CS Games are open to all undergraduate students.
Team Captain and Organizer
Organizer
Organizer
Organizer
Team mentor
Team mentor


Fill out this fake form that does nothing except take you back to the homepage when you press submit, and you'll have the unique opportunity to be forever indebted to us and work in our kitchens to make pizzas for the price of occasionally getting some of the pizza that fell to the floor. Given that this is a fake restaurant, healthcodes and labor guidelines don't apply to us! Your loss is our gain here at Totally Fake Pizza Restaurant.


Untitled
My new AP (hAP AC Lite)
Finally my new AP arrived :) (From Latvia)
The reason I buy a new AP is the router here at my host family is totally a garbge.(Doesn’t support 802.11AC; latency while pinging an address in local network can reach 1000ms; Some times even cannot assign IP address to connected devices…)
So I ask for some advice about which AP worth to buy in AOSC’s group, then BroncoTc suggest MikroTik’s hAP (In fact I didn’t heard anything about MikroTik before).
After searching on eBay, I found that hAP AC is too expensive so I decide to buy hAP AC Lite (RB952Ui-5ac2nD-TC). After about half an month, I receive the package.
Just a small box with signs printed on it.
There are only a few things in the box: hAP itself, power adapter and a plastic mount. (Ignore the ThinkPad logo behind, please)
It’s pretty tiny that only a little bit bigger than my hand. (cute)
(Ignore my ThinkPad again, please)
I place it at living room and near the original router :)
And… It workds fine, much much better than the original one from xfinity.
For detailed performance information, please read other’s post :)


The STANDARDWIDTH record records the measurement from the Standard Width dialog box.
Record Data
|
Offset |
Name |
Size |
Contents |
|
4 |
DxGCol |
2 |
Standard column width, in increments of 1/256 th of a character width |


A buffer to queue and flush SenseGlove DK1 commands specifically. Not guarateed to work with other devices.
More...
|
| bool[] | fingerFFBUpdate = new bool[5] |
| | Whether or not the finger FFB data has been updated this frame, or if we need to fall back to the 'last command' More...
|
| |
| float[] | lastFFBLevels = new float[5] |
| | The last FFB levels that were sent to the glove. Used as a fallback in case there are no updates needed. More...
|
| |
| bool[] | fingerVibroUpdate = new bool[5] |
| | whether or not there have been updates to the finger vibration this frame More...
|
| |
| float[] | lastVibroLevels = new float[5] |
| | The last vibro that were sent to the glove. Used as a fallback when no update is made. More...
|
| |
|
| float[] | FingerForceLevels [get, protected set] |
| | The force-feedback levels of each finger that is desired for this frame (0 .. 1). More...
|
| |
| float[] | FingerVibroLevels [get, protected set] |
| | The finger vibration levels that are desired for this frame. More...
|
| |
A buffer to queue and flush SenseGlove DK1 commands specifically. Not guarateed to work with other devices.
◆ SG_HapticStream()
| SGCore.SG.SG_HapticStream.SG_HapticStream |
( |
| ) |
|
Create a new Nova HapticStream
◆ AddForceLevel()
| void SGCore.SG.SG_HapticStream.AddForceLevel |
( |
int |
finger, |
|
|
float |
level01 |
|
) |
| |
Sets the force level for a specific finger in the buffer.
- Parameters
-
◆ AddVibrationLevel()
| void SGCore.SG.SG_HapticStream.AddVibrationLevel |
( |
int |
finger, |
|
|
float |
amplitude |
|
) |
| |
Sets the amplitude for a specific finger in the buffer.
- Parameters
-
◆ ClearAllCommands()
| void SGCore.SG.SG_HapticStream.ClearAllCommands |
( |
| ) |
|
Clears any active command(s) on the Nova Glove, completely resetting the stream.
◆ CompileTraditionalCommands()
| void SGCore.SG.SG_HapticStream.CompileTraditionalCommands |
( |
out float[] |
ffbLevels, |
|
|
out float[] |
buzzLevels, |
|
|
out Haptics.SG_ThumperCmd |
thumperCmd |
|
) |
| |
Compile the commands into a set of traditional Nova Commands.
- Returns
◆ ResetBuffer()
| void SGCore.SG.SG_HapticStream.ResetBuffer |
( |
| ) |
|
Removes all non-active or elapsed Nova effects from the stream, ready for the next frame.
◆ StoreLastFFB()
| void SGCore.SG.SG_HapticStream.StoreLastFFB |
( |
float[] |
levels | ) |
|
Copy a set of FFB levels into the 'previous command', which will be used as a fallback value in case no change is made to a specific finger.
- Parameters
-
◆ StoreLastVibro()
| void SGCore.SG.SG_HapticStream.StoreLastVibro |
( |
float[] |
levels | ) |
|
Copy a set of amplitiudes into the 'previous command', which will be used as a fallback value in case no change is made to a specific finger.
- Parameters
-
◆ fingerFFBUpdate
| bool [] SGCore.SG.SG_HapticStream.fingerFFBUpdate = new bool[5] |
|
protected |
Whether or not the finger FFB data has been updated this frame, or if we need to fall back to the 'last command'
◆ fingerVibroUpdate
| bool [] SGCore.SG.SG_HapticStream.fingerVibroUpdate = new bool[5] |
|
protected |
whether or not there have been updates to the finger vibration this frame
◆ lastFFBLevels
| float [] SGCore.SG.SG_HapticStream.lastFFBLevels = new float[5] |
|
protected |
The last FFB levels that were sent to the glove. Used as a fallback in case there are no updates needed.
◆ lastVibroLevels
| float [] SGCore.SG.SG_HapticStream.lastVibroLevels = new float[5] |
|
protected |
The last vibro that were sent to the glove. Used as a fallback when no update is made.
◆ nextThumperCmd
◆ FingerForceLevels
| float [] SGCore.SG.SG_HapticStream.FingerForceLevels |
|
getprotected set |
The force-feedback levels of each finger that is desired for this frame (0 .. 1).
◆ FingerVibroLevels
| float [] SGCore.SG.SG_HapticStream.FingerVibroLevels |
|
getprotected set |
The finger vibration levels that are desired for this frame.
The documentation for this class was generated from the following file:
- C:/Gitlab-Runner/builds/yDcLA2Qt/0/senseglove/senseglove-backend/sgcorecs/src/SGCoreCs/SG_HapticStream.cs


Select one of
…
tabsets:
Loading…
@
🗔
Title & URL
∀
🗔
Display timestamps in local timezone
Open selected tabs in current window
Back to config…


Petition for Barack Obama Carpool Karoke
We want to hear him sing! 🎤
"If I can do it, you can too, Barack."
- Michelle Obama
"Yes we can."
- Barack Obama
Support our cause
Follow us here to get the latest updates to show B.O. that we need this in our lives 🙏


| Package | Description |
|---|---|
| odata.msgraph.client.beta.complex | |
| odata.msgraph.client.beta.entity | |
| odata.msgraph.client.beta.entity.request |
| Modifier and Type | Class and Description |
|---|---|
class |
TypedEmailAddress |
| Modifier and Type | Field and Description |
|---|---|
protected EmailAddress |
Recipient.emailAddress |
protected EmailAddress |
MailTips.emailAddress |
| Modifier and Type | Method and Description |
|---|---|
EmailAddress |
EmailAddress.Builder.build() |
EmailAddress |
EmailAddress.withAddress(String address) |
EmailAddress |
EmailAddress.withName(String name) |
| Modifier and Type | Method and Description |
|---|---|
Optional<EmailAddress> |
Recipient.getEmailAddress() |
Optional<EmailAddress> |
MailTips.getEmailAddress() |
| Modifier and Type | Method and Description |
|---|---|
Recipient.Builder |
Recipient.Builder.emailAddress(EmailAddress emailAddress) |
AttendeeBase.Builder |
AttendeeBase.Builder.emailAddress(EmailAddress emailAddress) |
Attendee.Builder |
Attendee.Builder.emailAddress(EmailAddress emailAddress) |
MailTips.Builder |
MailTips.Builder.emailAddress(EmailAddress emailAddress) |
Recipient |
Recipient.withEmailAddress(EmailAddress emailAddress) |
MailTips |
MailTips.withEmailAddress(EmailAddress emailAddress) |
| Modifier and Type | Field and Description |
|---|---|
protected EmailAddress |
Mention.createdBy |
protected EmailAddress |
CalendarPermission.emailAddress |
protected EmailAddress |
Mention.mentioned |
protected EmailAddress |
Calendar.owner |
protected EmailAddress |
InferenceClassificationOverride.senderEmailAddress |
| Modifier and Type | Method and Description |
|---|---|
CollectionPageNonEntityRequest<EmailAddress> |
User.findRoomLists() |
CollectionPageNonEntityRequest<EmailAddress> |
User.findRooms_Function(String roomList) |
CollectionPageNonEntityRequest<EmailAddress> |
User.findRooms() |
Optional<EmailAddress> |
Mention.getCreatedBy() |
Optional<EmailAddress> |
CalendarPermission.getEmailAddress() |
Optional<EmailAddress> |
Mention.getMentioned() |
Optional<EmailAddress> |
Calendar.getOwner() |
Optional<EmailAddress> |
InferenceClassificationOverride.getSenderEmailAddress() |
| Modifier and Type | Method and Description |
|---|---|
Mention.Builder |
Mention.Builder.createdBy(EmailAddress createdBy) |
CalendarPermission.Builder |
CalendarPermission.Builder.emailAddress(EmailAddress emailAddress) |
Mention.Builder |
Mention.Builder.mentioned(EmailAddress mentioned) |
Calendar.Builder |
Calendar.Builder.owner(EmailAddress owner) |
InferenceClassificationOverride.Builder |
InferenceClassificationOverride.Builder.senderEmailAddress(EmailAddress senderEmailAddress) |
Mention |
Mention.withCreatedBy(EmailAddress createdBy) |
CalendarPermission |
CalendarPermission.withEmailAddress(EmailAddress emailAddress) |
Mention |
Mention.withMentioned(EmailAddress mentioned) |
Calendar |
Calendar.withOwner(EmailAddress owner) |
InferenceClassificationOverride |
InferenceClassificationOverride.withSenderEmailAddress(EmailAddress senderEmailAddress) |
| Modifier and Type | Method and Description |
|---|---|
CollectionPageNonEntityRequest<EmailAddress> |
UserRequest.findRoomLists() |
CollectionPageNonEntityRequest<EmailAddress> |
UserRequest.findRooms_Function(String roomList) |
CollectionPageNonEntityRequest<EmailAddress> |
UserRequest.findRooms() |
Copyright © 2018–2020. All rights reserved.


Home
John
Smith
Gloria
,
Richard
view
John
Miller
James
,
Amy
view
Another Page
Another Page
Another Page
First
Second
Third
First
Second
Third


By Ross Smith
#include "rs-core/random.hpp"
constexpr uint32_t
lcg32
(uint32_t x) noexcept { return 32310901ul * x + 850757001ul; }
constexpr uint64_t
lcg64
(uint64_t x) noexcept { return<PHONE_NUMBER>370003845ull * x +<PHONE_NUMBER>135198739ull; }
Good LCG transformations for 32 and 64 bit integers, from Pierre L'Ecuyer (1999), "Tables of Linear Congruential Generators of Different Sizes and Good Lattice Structure".
class
Lcg32
using Lcg32::
result_type
= uint32_t
constexpr Lcg32::
Lcg32
() noexcept
explicit constexpr Lcg32::
Lcg32
(uint32_t s) noexcept
constexpr uint32_t Lcg32::
operator()
() noexcept
constexpr bool Lcg32::
operator==
(const Lcg32& rhs) const noexcept
constexpr bool Lcg32::
operator!=
(const Lcg32& rhs) const noexcept
constexpr void Lcg32::
seed
(uint32_t s) noexcept
static constexpr uint32_t Lcg32::
min
() noexcept
= 0static constexpr uint32_t Lcg32::
max
() noexcept
= 232-1class
Lcg64
using Lcg64::
result_type
= uint64_t
constexpr Lcg64::
Lcg64
() noexcept
explicit constexpr Lcg64::
Lcg64
(uint64_t s) noexcept
constexpr uint64_t Lcg64::
operator()
() noexcept
constexpr bool Lcg64::
operator==
(const Lcg64& rhs) const noexcept
constexpr bool Lcg64::
operator!=
(const Lcg64& rhs) const noexcept
constexpr void Lcg64::
seed
(uint64_t s) noexcept
static constexpr uint64_t Lcg64::
min
() noexcept
= 0static constexpr uint64_t Lcg64::
max
() noexcept
= 264-1Random number engine classes based on the above functions.
template <typename T> class
Urandom
using Urandom::
result_type
= T
T Urandom::
operator()
() noexcept
static constexpr T Urandom::
min
() noexcept
static constexpr T Urandom::
max
() noexcept
using
Urandom32
= Urandom<uint32_t>
using
Urandom64
= Urandom<uint64_t>
Generate random numbers from the system's standard random device. On Unix this
reads from /dev/urandom
. The result type T
must be a primitive integer
type. (This is similar to std::random_device
, which is not implemented on
all of my target systems.)
void
urandom_bytes
(void* ptr, size_t n) noexcept
Copies random bytes from the system's standard random device. This will do nothing if either argument is null.
class
Xoroshiro
using Xoroshiro::
result_type
= uint64_t
Xoroshiro::
Xoroshiro
() noexcept
explicit Xoroshiro::
Xoroshiro
(uint64_t s) noexcept
Xoroshiro::
Xoroshiro
(uint64_t s1, uint64_t s2) noexcept
uint64_t Xoroshiro::
operator()
() noexcept
bool Xoroshiro::
operator==
(const Xoroshiro& rhs) const noexcept
bool Xoroshiro::
operator!=
(const Xoroshiro& rhs) const noexcept
void Xoroshiro::
seed
(uint64_t s) noexcept
void Xoroshiro::
seed
(uint64_t s1, uint64_t s2) noexcept
static constexpr uint64_t Xoroshiro::
min
() noexcept
= 0static constexpr uint64_t Xoroshiro::
max
() noexcept
= 264-1Xoroshiro128+ algorithm by David Blackman and Sebastiano Vigna.
template <typename RNG> bool
random_bool
(RNG& rng)
- True with probability 1/2template <typename RNG> bool
random_bool
(RNG& rng, double p)
- True with probability p (clamped to 0-1)template <typename RNG, typename T> bool
random_bool
(RNG& rng, T num, T den)
- True with probability num/den (clamped to 0-1)template <typename T, typename RNG> T
random_integer
(RNG& rng, T t)
- Random integer from 0 to t-1 (always 0 if t<2)template <typename T, typename RNG> T
random_integer
(RNG& rng, T a, T b)
- Random integer from a to b inclusive (limits may be in either order)template <typename T, typename RNG> T
random_dice
(RNG& rng, T n = 1, T faces = 6)
- Roll n dice numbered from 1 to faces (0 if either argument is <1)template <typename T, typename RNG> T
random_float
(RNG& rng, T a = 1, T b = 0)
- Random number between a and b (limits may be in either order)template <typename T, typename RNG> T
random_normal
(RNG& rng)
- Normal distribution with mean 0, sd 1template <typename T, typename RNG> T
random_normal
(RNG& rng, T m, T s)
- Normal distribution with given mean and sdtemplate <typename ForwardRange, typename RNG> [value type]
random_choice
(RNG& rng, const ForwardRange& range)
- Random element from range (default constructed value if range is empty)template <typename T, typename RNG> T
random_choice
(RNG& rng, initializer_list<T> list)
- Random element from explicit listtemplate <typename ForwardRange, typename RNG> vector<[value type]>
random_sample
(RNG& rng, const ForwardRange& range, size_t k)
- Random sample from range (throws length_error if k>n)Random distribution functions. These do not call the standard distribution
classes; given the same underlying deterministic pseudo-random number engine
(the RNG
type), these can be relied on to return the same values on
different systems and compilers (apart from small differences due to rounding
errors in the floating point functions).
The pdf()
, cdf()
, and ccdf()
functions represent the probability
distribution function, cumulative distribution function, and complementary
cumulative distribution function. For discrete distributions, pdf(x)
is the
probably of a result exactly equal to x
, cdf(x)
is the probability of a
result less than or equal to x
, and ccdf(x)
is the probability of a result
greater than or equal to x
(cdf+ccdf-pdf=1
). For continuous distributions,
pdf(x)
is the probably density at x
, cdf(x)
is the probability of a
result less than x
, and ccdf(x)
is the probability of a result greater
than x
(cdf+ccdf=1
).
The quantile()
and cquantile()
(complementary quantile) functions are only
defined for continuous distributions, and are the inverse of cdf()
and
ccdf()
respectively. Behaviour is undefined if the argument to one of the
quantile functions is less than 0 or greater than 1; it may or may not be
defined for exactly 0 or 1, depending on how the distribution is bounded.
class
UniformIntegerProperties
explicit UniformIntegerProperties::
UniformIntegerProperties
(int n) noexcept
explicit UniformIntegerProperties::
UniformIntegerProperties
(int a, int b) noexcept
int UniformIntegerProperties::
min
() const noexcept
int UniformIntegerProperties::
max
() const noexcept
double UniformIntegerProperties::
mean
() const noexcept
double UniformIntegerProperties::
sd
() const noexcept
double UniformIntegerProperties::
variance
() const noexcept
double UniformIntegerProperties::
pdf
(int x) const noexcept
double UniformIntegerProperties::
cdf
(int x) const noexcept
double UniformIntegerProperties::
ccdf
(int x) const noexcept
Uniform discrete distribution over the range from a
to b
inclusive. The
bounds will be swapped if they are in the wrong order. The constructor from a
single integer is equivalent to UniformIntegerProperties(0,n-1)
.
class
BinomialDistributionProperties
explicit BinomialDistributionProperties::
BinomialDistributionProperties
(int t, double p) noexcept
int BinomialDistributionProperties::
t
() const noexcept
double BinomialDistributionProperties::
p
() const noexcept
int BinomialDistributionProperties::
min
() const noexcept
int BinomialDistributionProperties::
max
() const noexcept
double BinomialDistributionProperties::
mean
() const noexcept
double BinomialDistributionProperties::
sd
() const noexcept
double BinomialDistributionProperties::
variance
() const noexcept
double BinomialDistributionProperties::
pdf
(int x) const noexcept
double BinomialDistributionProperties::
cdf
(int x) const noexcept
double BinomialDistributionProperties::
ccdf
(int x) const noexcept
Binomial distribution (representing the distribution of the number of
successes after t
tries with success probability p
per try). Behaviour is
undefined if t<0
, p<0
, or p>1
.
class
DiceProperties
DiceProperties::
DiceProperties
() noexcept
explicit DiceProperties::
DiceProperties
(int number, int faces = 6) noexcept
int DiceProperties::
number
() const noexcept
int DiceProperties::
faces
() const noexcept
int DiceProperties::
min
() const noexcept
int DiceProperties::
max
() const noexcept
double DiceProperties::
mean
() const noexcept
double DiceProperties::
sd
() const noexcept
double DiceProperties::
variance
() const noexcept
double DiceProperties::
pdf
(int x) const noexcept
double DiceProperties::
cdf
(int x) const noexcept
double DiceProperties::
ccdf
(int x) const noexcept
The distribution resulting from rolling number
dice, each numbered from 1 to
faces
(defaulting to number=1
and faces=6
). If either argument is less
than 1, the distribution has a fixed value of zero.
class
UniformRealProperties
UniformRealProperties::
UniformRealProperties
() noexcept
explicit UniformRealProperties::
UniformRealProperties
(double a, double b = 0) noexcept
double UniformRealProperties::
min
() const noexcept
double UniformRealProperties::
max
() const noexcept
double UniformRealProperties::
mean
() const noexcept
double UniformRealProperties::
sd
() const noexcept
double UniformRealProperties::
variance
() const noexcept
double UniformRealProperties::
pdf
(double x) const noexcept
double UniformRealProperties::
cdf
(double x) const noexcept
double UniformRealProperties::
ccdf
(double x) const noexcept
double UniformRealProperties::
quantile
(double p) const noexcept
double UniformRealProperties::
cquantile
(double q) const noexcept
Uniform continuous distribution over the range from a
to b
(0 to 1 by
default). The bounds will be swapped if they are in the wrong order.
class
NormalDistributionProperties
NormalDistributionProperties::
NormalDistributionProperties
() noexcept
explicit NormalDistributionProperties::
NormalDistributionProperties
(double m, double s) noexcept
double NormalDistributionProperties::
min
() const noexcept
double NormalDistributionProperties::
max
() const noexcept
double NormalDistributionProperties::
mean
() const noexcept
double NormalDistributionProperties::
sd
() const noexcept
double NormalDistributionProperties::
variance
() const noexcept
double NormalDistributionProperties::
pdf
(double x) const noexcept
double NormalDistributionProperties::
cdf
(double x) const noexcept
double NormalDistributionProperties::
ccdf
(double x) const noexcept
double NormalDistributionProperties::
quantile
(double p) const noexcept
double NormalDistributionProperties::
cquantile
(double q) const noexcept
Normal distribution with the given mean and standard deviation (0 and 1 by
default). The sign of the standard deviation is ignored. The results of the
statistical functions are unspecified if the standard deviation is zero. The
quantile functions use the Beasley-Springer approximation: for |z|<3.75
,
absolute error is less than 1e-6
, relative error is less than 2.5e-7
; for
|z|<7.5
, absolute error is less than 5e-4
, relative error is less than
5e-5
.
template <typename T, size_t N> class
RandomVector
using RandomVector::
result_type
= Vector<T, N>
using RandomVector::
scalar_type
= T
static constexpr size_t RandomVector::
dim
= N
RandomVector::
RandomVector
()
explicit RandomVector::
RandomVector
(T t)
explicit RandomVector::
RandomVector
(const Vector<T, N>& v)
template <typename RNG> Vector<T, N> RandomVector::
operator()
(RNG& rng) const
Vector<T, N> RandomVector::
scale
() const
template <typename T, size_t N> class
SymmetricRandomVector
using SymmetricRandomVector::
result_type
= Vector<T, N>
using SymmetricRandomVector::
scalar_type
= T
static constexpr size_t SymmetricRandomVector::
dim
= N
SymmetricRandomVector::
SymmetricRandomVector
()
explicit SymmetricRandomVector::
SymmetricRandomVector
(T t)
explicit SymmetricRandomVector::
SymmetricRandomVector
(const Vector<T, N>& v)
template <typename RNG> Vector<T, N> SymmetricRandomVector::
operator()
(RNG& rng) const
Vector<T, N> SymmetricRandomVector::
scale
() const
RandomVector
generates a random vector in the rectilinear volume between the
origin and the vector supplied to the constructor (the unit cube by default).
SymmetricRandomVector
generates a vector in a volume symmetrical about the
origin, between v
and -v
. The scale()
function returns the vector
supplied to the constructor.
template <typename T, size_t N> class
RandomInSphere
using RandomInSphere::
result_type
= Vector<T, N>
using RandomInSphere::
scalar_type
= T
static constexpr size_t RandomInSphere::
dim
= N
RandomInSphere::
RandomInSphere
()
explicit RandomInSphere::
RandomInSphere
(T r)
template <typename RNG> Vector<T, N> RandomInSphere::
operator()
(RNG& rng) const
T RandomInSphere::
radius
() const noexcept
template <typename T, size_t N> class
RandomOnSphere
using RandomOnSphere::
result_type
= Vector<T, N>
using RandomOnSphere::
scalar_type
= T
static constexpr size_t RandomOnSphere::
dim
= N
RandomOnSphere::
RandomOnSphere
()
explicit RandomOnSphere::
RandomOnSphere
(T r)
template <typename RNG> Vector<T, N> RandomOnSphere::
operator()
(RNG& rng) const
T RandomOnSphere::
radius
() const noexcept
These generate a random point inside or on the surface of a sphere in
N
-dimensional space. T
must be a floating point arithmetic type; N
must
be a positive integer. The radius of the sphere defaults to 1; the absolute
value of the radius is used if it is negative. Note that, because of the
limitations of floating point arithmetic, the point generated by
RandomOnSphere
cannot be guaranteed to be exactly on the surface.
template <typename T> struct
UniqueDistribution
using UniqueDistribution::
distribution_type
= T
using UniqueDistribution::
result_type
= [result type of T]
explicit UniqueDistribution::
UniqueDistribution
(T& t)
template <typename RNG> result_type UniqueDistribution::
operator()
(RNG& rng)
void UniqueDistribution::
clear
() noexcept
bool UniqueDistribution::
empty
() const noexcept
result_type UniqueDistribution::
min
() const
result_type UniqueDistribution::
max
() const
size_t UniqueDistribution::
size
() const noexcept
template <typename T> UniqueDistribution<T>
unique_distribution
(T& t)
This is a wrapper for another random distribution. It keeps an internal cache
of all values generated to date, and will repeatedly call the underlying
distribution until a new value is generated. The clear()
function resets the
cache.
The underlying distribution only needs to have a function call operator that
can take a reference to a random number engine, unless the min()
or max()
functions are called, which require the corresponding functions on the
underlying distribution.
The UniqueDistribution
object contains a reference to the underlying
distribution, which is expected to remain valid. Behaviour is undefined if the
underlying distribution is destroyed while a UniqueDistribution
object still
has a reference to it, or if UniqueDistribution::operator()
is called when
the cache already contains every possible value of the result type.
template <typename T, typename F = double> class
WeightedChoice
using WeightedChoice::
frequency_type
= F
using WeightedChoice::
result_type
= T
WeightedChoice::
WeightedChoice
() noexcept
WeightedChoice::
WeightedChoice
(initializer_list<pair<T, F>> pairs)
template <typename Range> explicit WeightedChoice::
WeightedChoice
(const Range& pairs)
template <typename RNG> T WeightedChoice::
operator()
(RNG& rng) const
void WeightedChoice::
add
(const T& t, F f)
void WeightedChoice::
append
(initializer_list<pair<T, F>> pairs)
template <typename Range> void WeightedChoice::
append
(const Range& pairs)
bool WeightedChoice::
empty
() const noexcept
Selects items at random from a weighted list. The frequency type (F
) must be
an arithmetic type; it can be an integer or floating point type. The default
constructor creates an empty list; the other constructors copy a list of
(value,frequency)
pairs. The add()
and append()
functions can be used to
add (value,frequency)
pairs, one at a time or in bulk. Entries with a
frequency less than or equal to zero are ignored. The function call operator
will return a default constructed T
if the list is empty.
template <typename RNG> void
random_bytes
(RNG& rng, void* ptr, size_t n)
Fills a block of memory with random bits generated by the RNG. This will do
nothing if ptr
is null or n=0
.
template <typename Rng2, typename Rng1> Rng2
seed_from
(Rng1& src)
template <typename Rng1, typename Rng2> void
seed_from
(Rng1& src, Rng2& dst)
Seed one standard RNG from another, calling the source enough times to fill the second generator's full state.
template <typename RNG, typename RandomAccessRange> void
shuffle
(RNG& rng, RandomAccessRange& range)
template <typename RNG, typename RandomAccessIterator> void
shuffle
(RNG& rng, RandomAccessIterator i, RandomAccessIterator j)
Shuffle the elements of a random access range into random order. This is
functionally the same as std::shuffle()
, duplicated here to provide a
version with reproducible behaviour on all systems.
U8string
lorem_ipsum
(uint64_t seed, size_t bytes, bool paras = true)
Generates random Lorem Ipsum text with approximately the specified number of
bytes (the length will be between bytes
and bytes+15
inclusive). Normally
it will be broken into paragraphs, delimited by two line feeds; if paras
is
false, there will be no paragraph breaks, and no trailing LF.


BGT - overzicht : Class diagram
Created:
1-7-2010 08:19:35
Modified:
28-11-2012 08:37:42
Project:
Author:
lvandenbrink
Version:
1.0
Advanced:
ID:
{CF1F06CD-03D0-4b9d-BA39-71C1D49B9FD7}


10:00am - 5:00pm
Mile High Ballroom
Hack Day
Join all your friends in a day of loosly organized collaboration, lightning talks, and general hackery. We'll provide the space and the wifi, you bring your favorite project and work together with friends you only get to see in person every year at GopherCon.
10:00am - 5:00pm
Room: 302
Family Crash Room
10:00am - 10:30pm
Mile High Ballroom Pre-Function
Morning Break
10:00am - 5:00pm
Mile High Ballroom Pre-Function
Twitch Hack Day Lounge
10:00am - 5:00pm
Room: 4a – 4b
GoBots and Other Flying Objects
The Hybrid Group
10:00am - 5:00pm
Room: 4c
Docker
10:00am - 5:00pm
Room: 4d
Go Project Room
Anyone involved in the Go project is welcome, regardless of the team you are on.
Additional Notes
10:00am - 5:00pm
Room: 4f
Container Technologies
Hack on and discuss the various container technologies written in and powered by Go
10:00am - 1:00pm
Room: 4e
NATS for Microservices
12:30pm - 1:30pm
Mile High Ballroom Pre-Function
Lunch Break
2:00pm - 5:00pm
Room: 4e
Go Development with Vim-go
Fatih Arslan
3:00pm - 3:30pm
Mile High Ballroom Pre-Function
Afternoon Break


Location: Find City
{{citiesFound.count}} cities found matching the query: {{searchQuery}}.
{{currentWeather.main.temp}} °F
High: {{currentWeather.main.temp_max}} °F
Low: {{currentWeather.main.temp_min}} °F
Currently: {{currentWeather.weather[0].main}}, {{currentWeather.weather[0].description}}
Wind: {{currentWeather.wind.speed}} mph at {{currentWeather.wind.deg}} °
Clouds: {{currentWeather.clouds.all}}%
View 7-day Forecast
Save City
{{currentWeather.name}} has been saved to your list of cities.
{{currentWeather.name}} has already been saved to your list of cities.


module Orchestrate::Rails::Tutorial::GetEvents
Getting orchestrate.io events¶ ↑
The films example application includes a comment
feature that provides the ability to associate comments with each film in
the collection. This feature is implemented using orchestrate.io's
time-ordered events.
Updating the Film model to get orchestrate.io events.¶ ↑
Update <rails-root>/app/models/film.rb
to add the
commments
method.
class Film < Orchestrate::Rails::Model def comments self.events('comments') end end
Updating the films controller.¶ ↑
Update <rails-root>/app/controllers/films_controller.rb
to call the comments method from the show
action:
class FilmsController < ApplicationController def index @films = Film.all end def show @film = Film.find params[:id] @comments = @film.comments end end
Updating the view to display comment events.¶ ↑
Update <rails-root>/app/views/films/show.html.haml
as
shown:
%ul.films.list-group %li.list-group-item %h3.list-group-item-heading= @film.title %ul.list-group %li.list-group-item = render partial: 'films/film_info' - if @comments and @comments.length > 0 %li.list-group-item = render partial: 'films/comments', locals: { comments: @comments }
Now we'll add the partial view that displays the comments.
Create <rails-root>/app/views/films/_comments.html.haml
as shown:
%h3.list-group-item-heading= "Comments" %ul.list-group %li.list-group-item .row.list-group-item-heading .col-md-3.col-md-offset-1= "USER" .col-md-7= "COMMENT" - comments.each do |comment| .row.film-comment .col-md-3.col-md-offset-1.film-heading= comment.user.humanize.titleize .col-md-7= comment.text
Let's check it out¶ ↑
Navigate to “The Godfather” to see its comments.


This is what our website basically does
We enable landlords to advertise their rental houses on this website and make it easier for the tenants house hunting find their suitable type of house.
We enable landlords to advertise their rental houses on this website and make it easier for the tenants house hunting find their suitable type of house.
We enable landlords to advertise their rental houses on this website and make it easier for the tenants house hunting find their suitable type of house.
We enable landlords to advertise their rental houses on this website and make it easier for the tenants house hunting find their suitable type of house.
We enable landlords to advertise their rental houses on this website and make it easier for the tenants house hunting find their suitable type of house.
We enable landlords to advertise their rental houses on this website and make it easier for the tenants house hunting find their suitable type of house.


Comedy Club Owner Shuts Down Show Over Offensive “Misogynistic” Jokes
Club owner roundly mocked on social media for policing free speech
by Adan SalazarThe owner of a comedy club in Boston claimed she “never felt more alive” than when she shut down a show over what she deemed were offensive jokes.

“Tonight I shut down a string of misogynistic stand up comics,” tweeted Pong, who teaches and performs improv.
“As in, I walked on stage in the middle of one of them talking, addressed the audience, offered a full refund, told them it would not be tolerated here, and pulled the show and its comics from our theatre immediately. Lights on, go home.”
“I have never felt more alive than right now,” Pong added.
According to Pong, the show began to unravel when a comedian began his set by highlighting the racial disparity in the room, where only two of the 17 audience members were black. (Notably, only four audience members were paying customers, while 13 were performers’ friends.)
Pong was again offended when another comedian said “this bitch” in a joke, and “finally had enough when one guy told a joke about how he couldn’t understand why Uber fired him for making women customers ride in the trunk,” she told UniversalHub.com.
Pong reportedly thought, “Wait a minute, I own this place,” and rang a bell before taking the stage, where she abruptly halted the show and announced, “It’s not OK, and it’s not who we are.”
An audience member in disbelief asked, “Is this a joke or is this part of the act?”
Pong told Universal Hub the jokes went against the venue’s “inclusive” nature:
She said that she wants a space that is inclusive, not just for audience members, but for comedians, in a business traditionally dominated by men.
“No woman [comedian] in the world would have wanted to stand in that room last night,” Pong stated.
The comedy club owner was roundly mocked on social media for policing free speech.
One female comedian commented that Pong’s actions were “an insane thing to do”.
Another person stated, “I love it when someone decides what’s offensive and what I can listen to said no one ever.”
Follow the author on Gab: https://gab.ai/adansalazar
On Twitter: Follow @AdanSalazarWins
On Facebook: https://www.facebook.com/adan.salazar.735
On Minds: https://www.minds.com/adan_infowars
The Black Friday sales have arrived early! Get up to 70% off our hottest products as well as free-shipping and double Patriot Points while the sale lasts!


[[p1.life]]
[[p1.poison]]
[[p1.name]]
[[p1.deck]]
[[p1.record]]
[[countdown]]
[[p1.games]] - [[p2.games]]
[[p2.name]]
[[p2.record]]
[[p2.deck]]
[[p2.life]]
[[p2.poison]]
[[eventName]]


Send your homework as a single ZIP archive with your files, or send a link to your GitHub repo. Try to keep line lengths below 80 characters.
For a given directory (top) find the number of bytes taken by PDF files in the directory tree (".pdf" extensions). The code should be in the function find_pdf_size(top). In order to test the current directory we run find_pdf_size(".").
Create the function print_working_days(date1, date2), where 'date1' and 'date2' are strings of the form 'YYYY-MM-DD'. The function prints dates of working days (from Monday to Friday) in the given range, 'date2' is excluded.
Create the generator random_walk(start) for a 1D random walker. If a position at a certain moment is x, then the next position can be x+1 or x-1 with equal probabilities. Find the final position after 100 moves (start=0). Repeat experiments.


RAINBOW DIMENSIONS
Your Magic Moment
A Creative Hub!
Rainbow Dimensions
Complete Web Solutions
promoting Internet of Brains...
Stay Tuned!!
Incubated at :
G.H.Raisoni Incubation Center Nagpur
Welcome to the next gen Digital India surprise!!
WELCOME!


General discussion about Komodo. For useful links and more info click the pinned messages to the right. DON'T DM @jl777
100 messages
Before 05-Dec-19 12:00 AM
jl777c28-Nov-18 12:57 PM
of course if your chain wants to use the legacy version, then you cant expect to be having the latest
any chain that doesnt want to update, should let us know and we will make the appropriate provisions for those chains
PTYX28-Nov-18 12:58 PM
So then we would have people running the updated software and some running the old software. I don't see this as a scalable solution. Given the platform is growing. Each time Komodo updates it halts the other chains too or they face forking, maintaining their own code base, or worse.
Right now yes, it doesn't matter. We have less than 10 chains that are trading
But when we have 500-1000 chains, this would be more chaos.
jl777c28-Nov-18 12:59 PM
well, we dont expect another sapling level update, so it can be the normal annual cycle
the key is we are solving todays issues today
PTYX28-Nov-18 01:00 PM
No, but surely there will be other forks. As there were last year.
We need to think of a better way to keep everyone updated
jl777c28-Nov-18 01:00 PM
well if there is a need for a fork, there is a need for a fork and not having to make any source level changes vs having to make them, it seems the latter is more work
having software that never needs to be updated is likely not a reality for some years
and automatically updating is a worse "solution" as it creates a monster attack vector
1
PTYX28-Nov-18 01:02 PM
I've looked at several other networks and when they update, their tokens or sidechains don't usually halt. What I'm pointing out is a flaw in the he scalability of the assetchain in the longterm.
jl777c28-Nov-18 01:02 PM
let us not assume that in the future we will use the same methods as now
also, the assetchains dont have to update. they wont halt if they dont
plz dont make a problem when there isnt one
also if there is a hardfork and you dont update, then any tokens on the old fork indeed have a problem
being an independent chain creates more flexibility in the update process than if it was a token on the main chain
not that a token on the main chain is directly comparable to having its own chain
but if you have your own chain, you have your own chain, with all that means
including the need for updating at times
PTYX28-Nov-18 01:06 PM
Maybe that solution will be more scalable: "let us not assume that in the future we will use the same methods as now"
jl777c28-Nov-18 01:06 PM
a key point you seem to be missing is that assetchains that choose to not update, wont have to update anything on the exchanges
the new codebase using -ac_sapling=farfutureheight is interoperable with the old version. So not sure why you claim this isnt scalable
PTYX28-Nov-18 01:07 PM
I claim it isn't scalable because what we have to do to update chainzilla has to be done to all chains if we want to be on the latest update.
So the amount of work we are doing times 1000x or however many chains we will have in 1-2 years. It's not scalable unless you expect each token to have a dedicated team to do all the manual work to update. it's not something companies want to hear.
jl777c28-Nov-18 01:09 PM
there wont be any regular sapling level updates
not sure what your point is
there needs to be at least an annual update for new notaries
that is just a matter to update the daemon, and not the entire infrastructure
PTYX28-Nov-18 01:09 PM
How many hardforks did we have this year non-sapling related
SHossain28-Nov-18 01:09 PM
what are the changes that a chain needs to themselves to update?
jl777c28-Nov-18 01:10 PM
to get the new version, you need to get the new version
if you dont, you wont have the new version
yet, we have provision for the new version to be backward compatible with the old version
still you are complaining about a "problem" that seems is not a real problem now
PTYX28-Nov-18 01:11 PM
i guess i'll stop complaining then
jl777c28-Nov-18 01:11 PM
I try to make the process as smooth as possible and think I achieved that this time.
if you have chains that dont want to update, let us know
SHossain28-Nov-18 01:12 PM
the code is bening prepared along with Aagama wallet, notary nodes, spv servers, explorers. all an assetchain user has to do is use the latest version. if the chain is in exchange, the exchange has to update komodo daemon. if the assetchain is in an exchange with KMD, it is already being updated. all the exchange has to do is restart the chain after the daemon update
PTYX28-Nov-18 01:12 PM
I dont know anyone that wants to run an outdated chain .
but if we do, i'll surely let you know
jl777c28-Nov-18 01:12 PM
if they dont want to update, then we just need to add -ac_sapling=farfutureheight and then the new will interop with the old and nobody is forced to update
blackjok3r28-Nov-18 01:13 PM
just bild you platform to have instant updates thats all ayutoamted liek KMD:LABS does just make sure there is aperson that pulls the trigger and dont make it do automatically
wasnt very hard
we can handle 100 branches
no proble
jl777c28-Nov-18 01:13 PM
like node.js! automatica updates
blackjok3r28-Nov-18 01:13 PM
its sutomatic
jl777c28-Nov-18 01:13 PM
not a problem and very convenient, until it becomes a problem
on a small scale it is fine
blackjok3r28-Nov-18 01:14 PM
Id rather use just 1, but thats not always practical
the point is... you dont need 1 person to upgrade every coin .. its a 30s job to update eveyr notary
or a few hours, f they want to check the code first(edited)
Hello, crypto community!
In the light of @GuardaWallet #Multiwallet release for iOS, we want like to ask you – which coins would you like us to add among the very first?
@tezos @CallistoSupport @KomodoPlatform
New @KomodoPlatform website is online! This is part of the major rebranding of all facets Komodo! Be sure to check it out!!! https://t.co/qMYVgemsXS $KMD
areweon28-Nov-18 05:59 PM
question: how will KMD work if the #1 token turns out to be ETH and ETH switches to PoS? How will they do DPoW on PoS?
passcombo.com 🏴☠🏴28-Nov-18 06:01 PM
@areweon use your imagination and creativity
jl777c28-Nov-18 06:09 PM
@areweon why to worry about such details? clearly all the mining gear will still be around mining something. what if an asteroid wipes out all life on earth?
2
shak3nbak328-Nov-18 06:14 PM
@areweon there is an entire network of block chains built on/around BTC core
Hello, crypto community!
In the light of @GuardaWallet #Multiwallet release for iOS, we want like to ask you – which coins would you like us to add among the very first?
@tezos @CallistoSupport @KomodoPlatform
2
gmr28-Nov-18 06:55 PM
time to buy btc?
modereck28-Nov-18 07:22 PM
maybe a dump is coming xD
you will never know
benohanlon28-Nov-18 07:23 PM
@jorian Guarda already support KMD - they're going IOS cool
PHBA206128-Nov-18 08:35 PM
I don't know if this is a proper place to ask, but I just saw on AWS that Komodo's headquarter is based in Ho Chi Minh city , Viet Nam, is that true ?
crumb28-Nov-18 08:37 PM
Komodo has no headquarters
it has developers, testers, etc all over the world
Kellhus28-Nov-18 08:37 PM
so, the dragon has no head.
crumb28-Nov-18 08:37 PM
different companies need addresses sometimes. so an address is given
it doesn't mean it is automatically headquarters
i remember someone saying that Komodo is russian, just because he saw an explorer with .ru extension
Amazon will help clients build blockchain platforms on Hyperledger Fabric or ethereum with its new product.
Amazon does tend to steal ideas and create their own solutions.
@PHBA2061 lets wait for the team to clarify if there indeed is a corporation there. I am also intrigued as to why that jurisdiction.
1
“Amazon Managed Blockchain eliminates the overhead required to create the network, and automatically scales to meet the demands of thousands of applications running millions of transactions,”
chagidel28-Nov-18 09:36 PM
Arent there several other big companies with there own blockchins already ?


Allow Attach files (file attached with mail)
*
Company_field
*
Name_field
*
Email_field
*
Select_field
value1
value2
value3
*
Attached_file
*
Inquiry Messages
*
Verify Code (Please enter the text above)


--- layout: archive title: Zulip Chat Archive permalink: /stream/208328-IMO-grand-challenge/topic/Inequalities.html ---
Interestingly, Open AI has a request for research out about "Automated Solutions of Olympiad Inequality Problems."
Olympiad inequality problems are simple to express, but solving them often requires clever manipulations. Build a dataset of olympiad inequality problems and write a program that can solve a large fraction of them. It’s not clear whether machine learning will be useful here, but you could potentially use a learned policy to reduce the branching factor.
It is the hardest problem on the list.
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC


This inspection reports fully qualified references in Groovy files which can be replaced with import.