class: center, middle ### W4995 Applied Machine Learning # Trees & Forests 02/18/19 Andreas C. Müller (Adapted and modified for CC 6021236 @ PCC/Ciencias/UCV by Eugenio Scalise, September 2019) ??? FIXME bullet points! animation searching for split in tree? categorical data split? predition animation tree? min impurity decrease missing extra tree: only one thereshold per feature? FIXME: saw 1d tree explanation somewhere that was really neat? FIXME: short? Not if I actually explain the bullet points. FIXME: bias variance plot replace by two kinds of error (approximation, generalization) FIXME: length actually good. so more of a note than fixme lol FIXME: test curve mislabeled warm start FIXME explain "values" in figure in slide notes FIXME plots sometimes say values and sometimes samples, make sure it's consistent! FIXME some plots say entropy but actually use gini?! wtf, redo plots FIXME add graphviz back in as it's a bit higher quality? FIXME entropy calculation for tree, maybe do it once explicitly? FIXME Go over finding a single split in some toy data! 1d regression? --- class: spacious, middle # Why Trees? - Very powerful modeling method – non-linear! - Doesn’t care about scaling of distribution of data! - “Interpretable” - Basis of very powerful models! ??? Trees are really very powerful models both for classification and regression, they're very commonly used. Trees are very popular in the industry. Only beaten by deep neural networks. Tree-based models are one of the main tools in the toolbox of most machine learning practitioners. Trees really don't care about the scale of the data so you don't really have to do a lot of preprocessing. Trees don't care about the distribution of your data. There are versions of trees that can deal with categorical variables and with missing values. By combining multiple trees you can build stronger models. - Very powerful modeling method – non-linear! - Doesn’t care about scaling of distribution of data! - “Interpretable” - Basis of very powerful models! - add stacking classifier from PR? --- class: centre,middle # Decision Trees for Classification ??? --- # Idea: series of binary questions .center[ ![:scale 70%](images/tree_illustration.png) ] ??? Binary classification trees are binary trees, where each node corresponds to a question asked about the data. This example is a fictional task where you want to distinguish hawks, penguins, dolphins, and bears. You ask a series of binary questions that will lead to which animal it might be. Depending on what the answer is for a particular question, you could ask another question. This way you can narrow it down for possible outcomes. Usually, when we are doing classification we have continuous features and so the questions are thresholds on single features. --- # Building Trees .left-column[ ![:scale 100%](images/tree_building_iteration_1.png)
Continuous features: - “questions” are thresholds on single features. - Minimize impurity ] .right-column[ ![:scale 100%](images/tree_building_iteration_2.png) ![:scale 100%](images/tree_building_iteration_9.png) ] ??? Here is an example of a tree with depth one, that's basically just thresholding a single feature. In this example, the question being asked is, is X1 less than or equal to 0.0596. The boundary between the 2 regions is the decision boundary. The decision for each of the region would be the majority class on it. This decision tree of depth one would classify everything that is below the horizontal line as class red since there are more red points (32>2) and everything above as blue since there are more blue points (48>18). The way this threshold was chosen, the way that tree of depth one was learned was to find the best feature and the best threshold to minimize impurity. Which means it tries to make the resulting subsets, the top half and the bottom half here, to be as pure as possible (to consist mostly of one class) Basically, we're searching over all possible features and all possible thresholds. Possible thresholds are all values of the feature that we're observing. So I would start iterating over the first feature and for the first feature, I would look at all possible thresholds and see if this is a good question to ask, i.e. is this a good way to split the data set into two classes. If you search over all possible features, then the best split is found. Once we find this split, we can then basically apply this algorithm recursively to the two areas that the split created. For top area here, we can ask what the best feature is and what the best threshold for this feature is to make the resulting regions as pure as possible. Here in the bottom, it asks is X0 less or equal than minus 0.4? The model will predict accordingly, either blue or red. If only one class remain after a split, the tree will not add any splits since the regions have become pure. Each node corresponds to a split and the leaves correspond to regions. All tree building algorithms start greedily building a tree, so they don't really go back and revisit because it would be too computationally expensive. Does the layout look okay?? --- # Prediction .center[ ![:scale 80%](images/tree_prediction.png) ] ??? To make a prediction, I traverse the tree I ask all the questions in the node that I encounter and then I can predict the majority class in the leaf. One thing that's nice about this is this prediction is really, really fast since this tree is not very deep. - Traverse tree based on feature tests - Predict most common class in leaf --- # Visualizing trees with sklearn .smaller[ ```python from sklearn.datasets import load_breast_cancer cancer = load_breast_cancer() X_train, X_test, y_train, y_test = train_test_split(cancer.data,cancer.target, stratify=cancer.target, random_state=0) from sklearn.tree import DecisionTreeClassifier, export_graphviz tree = DecisionTreeClassifier(max_depth=2) tree.fit(X_train, y_train) ``` ] ??? The first way to visualize tree in scikit-learn is a little bit tricky. The second one is a one I hacked. I'm going to use the breast cancer data center, which does the classification of breast tissues. So trees can do much more complicated things than multiclass. For the ease of visualization, I'm going to do binary. I can build the decision tree classifier, and there's a method in scikit-learn called export _graphviz, which is basically a file format and the layout engine for showing graphs. So you can take the tree, the estimator that’s the tree. You can also give it the feature names if you want. You can either write this to a file, or you can get back to string in this dot language. And that's what it looks like. This is a tree of depth 2 and I gave it the feature names. --- # Visualizing trees with sklearn ```python from sklearn.tree import plot_tree tree_dot = plot_tree(tree, feature_names=cancer.feature_names) ``` .center[ ![:scale 80%](images/mpl_tree_plot.png) ] ??? The other thing that I like to use which is easier is this pull request or there’s a gist that you download, it’s a single file called the tree_plotting. And that uses math plot to plot the trees. Here, at the top you can see the test, then you can see the criteria, then the number of samples in this node and then which class the samples belong to. In the original breast cancer dataset, the top node corresponds to the whole dataset. The tree gets purer and purer as you move down the tree. --- class:spacious # Parameter Tuning - Limit tree size (pick one, maybe two): - max_depth - max_leaf_nodes - min_samples_split - min_impurity_decrease - ... ??? I want to talk a little bit about the different parameters that you can choose. Most of the tree growing algorithms are greedy. There are two ways to restrict the growth of the tree after you train them. There are pre-pruning and post-pruning. In pre-pruning, you restrict while you're growing. In post-pruning, you build the whole tree (greedily) and then you possibly merge notes. So you possibly undo sort of bad decisions that you made, but you don't restructure the tree. In scikit-learn right now, there's only pre-pruning. The most commonly used criteria are the maximum depth of the tree, the maximum number of leaf nodes, the minimum samples in a node split and minimum decrease impurity. --- class:spacious # No pruning .center[ ![:scale 100%](images/no_pruning.png) ] ??? Here’s the full tree for the same dataset. --- class:spacious # max_depth = 4 .center[ ![:scale 100%](images/max_depth_4.png) ] ??? Maximum depth of the tree restricted to 4. This is like a very simple way. If you are actually building just a single decision tree, this might not be the best way because for example, here you split away the single point which might not be great and other leaves are very mixed. So you can't make a good prediction here. Since it puts the same depth limit on everywhere in the tree, this is not very fine grained. What it does is it means that your predictions will be very fast because you never have to go very deep in the tree. It also makes the tree size very small. If you built a lot of trees, you might get issues with the RAM. If you have a lot of very deep trees, they will at some point be bigger than your RAM, and you'll run into troubles, or if they're very deep, it might be very slow to predict at some point. So this is a way to restrict how much memory and how much prediction time you're willing to give. --- # max_leaf_nodes = 8 .center[ ![:scale 50%](images/max_leaf_nodes_8.png) ] ??? If you use max_leaf_nodes, it will always put the one that has the greatest impurity decrease first. You can see that in different parts of the trees, there's different depth. It will prioritize the ones that decrease the impurity the most. --- class:spacious # min_samples_split = 50 .center[ ![:scale 70%](images/min_samples_split_50.png) ] ??? Min_samples_split is quite simple, it just says only split nodes that have this many samples on them. What I don't like about this criterion set here, for example, it splits off a single point, which I don't think is really great, because it's not going to improve the prediction very much. So both the max leaf nodes and the minimum impurity decrease will allow you to basically get rid of these very small leaves that don't really add anything to the prediction. Impurity decrease will only make splits that decrease the impurity by X amount. If you want to tune this, you pick one of these and then you just tune this one parameter. --- .smaller[ ```python from sklearn.model_selection import GridSearchCV param_grid = {'max_depth':range(1, 7)} grid = GridSearchCV(DecisionTreeClassifier(random_state=0), param_grid=param_grid, cv=10) grid.fit(X_train, y_train) ``` ] .center[ ![:scale 70%](images/grid_max_depth.png) ] ??? So for example, if you want to tune max depth and restricted the depth of the tree. So run a grid search over max depth and you can do the parameter curves as we did before and you can see that maybe depth of five is good on this dataset. Again, you can see the typical curve with the more complexity you allow in your classifier, the better you get the training set, but possibly you overfit on a test set. So, here, you could say maybe it's overfitting a little bit, but it's not very visible. --- .smaller[ ```python from sklearn.model_selection import GridSearchCV param_grid = {'max_leaf_nodes':range(2, 20)} grid = GridSearchCV(DecisionTreeClassifier(random_state=0), param_grid=param_grid, cv=10) grid.fit(X_train, y_train) ``` ] .center[ ![:scale 70%](images/grid_max_leaf_nodes.png) ] ??? Here is if you tune a maximum number of leaf nodes, you can see it’s slightly more overfitting happening but generally, there's not a big difference on this toy dataset between building the full tree or having a smaller tree. Obviously, if you have a small tree, predictions are going to be faster and need less memory to store and you can explain it better. So the thing with being able to explain is, if you have a tree up depth 14, then it's not really explainable anymore, no human can look at all of this and say “Oh, I understand exactly what's going on”. If you have 8 leaves, it's a very good chance you can draw this, and you can think about it, and you can understand that. I wouldn't really say trees are interpretable but small trees are interpretable. So that's also the reason why you might want to restrict the rows of the tree. So you can easily communicate and easily explained. --- # Instability .left-column[ .tiny-code[ ```python X_train, X_test, y_train, y_test = train_test_split( iris.data, iris.target, stratify=iris.target, random_state=0) tree = DecisionTreeClassifier(max_leaf_nodes=6) tree.fit(X_train, y_train) ``` ] ![:scale 70%](images/instability_1.png) ] .right-column[ .tiny-code[```python X_train, X_test, y_train, y_test = train_test_split( iris.data, iris.target, stratify=iris.target, random_state=1) tree = DecisionTreeClassifier(max_leaf_nodes=6) tree.fit(X_train, y_train) ``` ] .center[![:scale 70%](images/instability_2.png) ]] ??? Another weakness of trees that I want to mention is that they are very unstable. Using the iris dataset, let's say I want a small tree. So I say I want a maximum of six leaves nodes and I split my Iris dataset, and I build the tree, and then I split the same data set again, and take a different random state. Hopefully, I would assume that if it's the same dataset, and I split randomly, then the models should be similar. However, if you look at these models, even in the root note, the very first decision it made is different. One compares petal length to 2.45 while the other compares pedal width to 0.8. And the number of points that are split off are different too. So there's not really an easy correspondence between these two trees. So this is sort of a caveat about interoperability. You can interpret the tree but maybe if the dataset was only slightly different, the tree might look completely different. So this tree structure is really something that's very unstable. --- # Feature importance .left-column[ .tiny-code[```python X_train, X_test, y_train, y_test = train_test_split( iris.data, iris.target, stratify=iris.target, random_state=0) tree = DecisionTreeClassifier(max_leaf_nodes=6) tree.fit(X_train,y_train) ```] .center[![:scale 60%](images/instability_1.png) ] ] .right-column[ .tiny-code[ ```python tree.feature_importances_ array([0.0, 0.0, 0.414, 0.586]) ``` ] ![:scale 80%](images/tree_importances.png) ] ??? Another interesting feature of trees that I want to mention is feature importance. While looking at the trees, a nice way to inspect the tree if it's small, if your trees very big, it's very hard to understand what's happening in the tree. So what you can get out is how important each feature is for the tree. This is similar to the coefficients in the linear model, where you can see that “this feature influences the model in this way”. And the way this is done is basically each time a particular feature was chosen in a tree, you accumulate how much it decreased the impurity. It'll give more importance to features that were used often and where to use of it, than decreased impurity. Problem with the importance is you have the same issues with instability. Because the tree structures unstable, the features picked is unstable and so the importance will be unstable. Similar to L1 norm, if you have too many correlated features, it might pick one or the other. If you have very correlated features, basically, the feature importance could be anything. Any linear combination of the two is completely equivalent. So keep that in mind when looking at feature importance. But they’re a very nice way to summarize what the tree does if you're in reasonably low dimensions and your tree is big. Obviously, if you're in super high dimensions, you might not be able to look at them, you might be able to look at the most important features. The question was if use a feature multiple times, do I add up the degrees in purities and the answer is yes. Question is can I explain the difference between extrapolating and generalizing. In generalizing, usually you make this IID assumption that you draw data from the same distribution, and you have some samples from the distribution from which you learn, and other samples from a distribution which you want to predict. And if you're able to predict well, then it is generalizing. Here in the extrapolation example, the distribution that I want to try to predict on was actually different from the distribution I learned on because they’re completely disjoint. The years I trained on and the years that I'm testing on are completely disjoint and the target range is also completely disjoint. So this is not an IID task. In particular, even if it was IID, extrapolation sort of means looking at things outside the training set. One more comment about feature importance is that they give you the importance of a feature, but not the direction. If you look at the linear model and you say that a coefficient is large, or a coefficient is very small, this means for regression, if it's larger than it has a positive influence on target, or if it's classification, this feature has a positive influence to being a member of this class. For trees, you don't have the directionality, here you only get this is important only to make a decision. And the relationship with the class might not be monotonous. So you only have a magnitude you don't have a direction in the importance. - Unstable Tree $\rightarrow$ Unstable feature importances. - Might take one or multiple from a group of correlated features. --- class: centre,middle # Ensemble Models # (Random Forests) ??? One way to get rid of these problems is to actually use multiple trees and Ensemble. Ensemble is a general term that captures any way you combine multiple models into one. There's like a lot of different kinds of ensemble models that work in many different ways. We're going to talk particularly about random forest. But that's only one association of this more general framework. --- # Poor man’s ensembles - Build different models - Average the result - More models are better – if they are not correlated. - Also works with neural networks - You can average any models as long as they provide calibrated (“good”) probabilities. - Scikit-learn: VotingClassifier ??? If you do computation, we'll see poor man’s ensembles which is just build the same model multiple times with different random seeds and average them. Owen Zhang who used to be in the first place in kaggle for five years, he just builds XGBoost models, which are off the tree based models with different random seeds, and then he just averaged all of them. And if you averaged multiple good models, it will get better. This is ideal for competitions. These are not usually done in practice because it makes the model hard to understand, it takes more RAM, it takes more time to predict because you have to do it like number of models many times. In scikit-learn, there’s this voting classifier which just takes the list of models of different types or be the same model type with different visualizations. And it will train all of them and average the results. You can either do soft voting or hard voting. Soft voting means averaging the probabilities and take the arg max. Hard voting means everything makes a prediction and then you take the thing that was most commonly predicted. --- class: spacious # Bagging (Bootstrap AGGregation) .left-column[ - Generic way to build “slightly different” models - BaggingClassifier, BaggingRegressor ] .right-column[ .center[![:scale 100%](images/bootstrap_sample.png)] ] ??? One way to do this is called Bagging or Bootstrap Aggregation. And the idea in bagging is, imagine that these are your data points, you have five data points and so you want to make sure that you built similar but slightly different models. And you want to do more than just change the random seed. One way is to take bootstrap samples of your dataset. Bootstrap samples mean sampling with replacement, number of samples many points. So here in this example, from these five data points, I would sample a new dataset that again has five data points (sample with replacement). On average this will mean that each dataset will have about 66% of the original data points, and the other data points will be just duplicates. So you leave out some data, duplicate some other data, and you end up with a slightly different dataset. You can do this obviously, as often as you want. If you average these models, if the model was prone to overfitting, then the average might not overfit as much. - Draw bootstrap samples from dataset - (as many as there are in the dataset, with repetition) --- class: spacious # Random Forests .center[![:scale 90%](images/random_forest.png)] ??? Here example of a random forest on a 2-dimensional dataset. - Smarter bagging for trees! --- # Randomize in two ways .left-column[ - For each tree: - Pick bootstrap sample of data - For each split: - Pick random sample of features - More trees are always better ] .right-column[ ![:scale 100%](images/bootstrap_sample.png) ![:scale 100%](images/feature_sample.png) ] ??? The way that random forest work is they randomize tree building in two ways. As with bagging if you do a bootstrap sample of the dataset, so each tree you take a bootstrap sample of the data set and then for each split in the tree, you take a sampling without replacement of the features. So let's say you have this representation of the dataset again. And for each node where you want to make a splitting decision before you want to scan all over the features and all the thresholds, you select just the subset of the number of features and just look for splits there. And this is done for each node independently. In the end, the tree will use all the features probably, if it's deep enough, eventually it might use all the features but you randomize the tree building process in a way that hopefully de-correlated the error of the different trees. And so this adds another hyperparameter in the tree building. --- class:some-space # Tuning Random Forests - Main parameter: max_features - around sqrt(n_features) for classification - Around n_features for regression - n_estimators > 100 - max_depth, max_leaf_nodes, min_samples_split again ??? Which are max features, which is the number of features that you want to look at each split. So the heuristic is usually for classification you want something like the square root of the number of features, whereas, for regression, you usually want something that is around the same size as the number of features. This basically, controls the variance of the model because if you set this to number of features, it will be just sort of the old decision tree. If you set this to one, it will pick a feature at random, and then it needs to split on that feature, basically. So this will be like a very, very random tree that probably would grow very deep because it can really make good decisions. This is the main parameter that you need to tune, although random forest is actually very robust to these parameter settings. Usually, if you leave this to the default, it will be reasonably well. By default, in scikit-learn, the number of trees in the forest is way too low. Usually, you want something like 100, or 500 but scikit-learn only gives you like 10. Sometimes people find that pre-pruning techniques like maximum depth or maximum leaf nodes help. Generally, the idea doesn't really matter that much, how good the vigil trees are as long as you have enough of them. But limiting the size of the tree will definitely help with model size. That said, if you randomize a lot, these trees will grow very deep. Because if you're unlucky, you'll always just split on bad feature so you will always not really get much further in getting pure leaves and so you need to do a lot of splits. So setting something like max depth will allow you to decrease RAM size and decrease prediction time. ---


This forum site is for ICS415
Enter Here »
This will show you what my website is.
View details »
I don't know what to link this to yet.
If not interested in making account, view some content here.
by {{username}}
{{body}}
Please log in to submit a new post.


We are Tasaheel. We fabricate an unbelievable future for your brand that makes you feel great. We work to produce results, not to impress. We are the most creative company, giving life to technology with the motto to deliver the products that you will love at the moment you see it. At Tasaheel, we strongly believe that nothing is impossible to achieve and sky is not the limit, because there are footprints in the moon! You get what we really mean, right?
We strive hard to make everything possible. Headquartered in Muscat, Sultanate of Oman, Tasaheel is devoted to offer high quality products and services to a global clientele across the globe. Our service assistance offers Fire Fighting and Security Systems, Information Technology,Real estates, Oil & Gas, Event Management , Creative Designs & Printing Etc. We help companies to achieve their business goals and objectives, while assuring increased efficiency. We know what our customers expect from us and so our tech freaks will deliver the right products, the right place at the right time. If you can imagine it, we can fabricate it!
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Itaque, optio corporis quae nulla aspernatur in alias at numquam rerum ea excepturi expedita tenetur assumenda voluptatibus eveniet incidunt dicta nostrum quod?
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Itaque, optio corporis quae nulla aspernatur in alias at numquam rerum ea excepturi expedita tenetur assumenda voluptatibus eveniet incidunt dicta nostrum quod?
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Itaque, optio corporis quae nulla aspernatur in alias at numquam rerum ea excepturi expedita tenetur assumenda voluptatibus eveniet incidunt dicta nostrum quod?
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Itaque, optio corporis quae nulla aspernatur in alias at numquam rerum ea excepturi expedita tenetur assumenda voluptatibus eveniet incidunt dicta nostrum quod?
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Itaque, optio corporis quae nulla aspernatur in alias at numquam rerum ea excepturi expedita tenetur assumenda voluptatibus eveniet incidunt dicta nostrum quod?
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Itaque, optio corporis quae nulla aspernatur in alias at numquam rerum ea excepturi expedita tenetur assumenda voluptatibus eveniet incidunt dicta nostrum quod?
Learn MoreAppraisal Brokerage Renting and self owned or leased real estate (residential or non residential)
Learn MoreLaying And maintenance of cooking gas pipes, Retail of firefighting and safety equipments
Learn MoreBuilding - cleaning, Garden Installation And Maintenance Lanscape planning and design activities (licence pending).
Learn MoreMaintenance & designing of websites, Designing & programming of special programmes , development of computer network
Learn MoreOrganisation of conferences and seminars , Medical Cordination offices ( Licence pending)
Learn More
Tasaheel Group LLC
Po Box 1728 PC 114
Muscat,
Sultanate of Oman
CONTACT US
<EMAIL_ADDRESS>Tel: +968- 24881278
Fax : +968-24881277


Hi there Dry,
Whether you’re reading this from the silent section of your university library, or you’re already marathoning Game of Thrones, we want to congratulate you on a great semester of activism! You all have so much to be proud of – so tell us about it: take our End of Year Survey [ https://www.surveymonkey.com/r/feminism16 ]!
As leaders graduate or transition into new roles, many of your Executive Boards have some new faces. This survey serves as an introduction between those new folks and the Campus Team (Chelsea, Edwith, Mari, and me).
Fill out the End of Year Survey and share your best moment of feminist activism from this semester! [https://www.surveymonkey.com/r/feminism16]
Y'all are amazing, powerful, brave, visionary student leaders. As your Campus Team, we want to serve each of you in the best way possible. We’ll know how to tailor our support to fit your needs by the information you include.
We’re so excited to read your responses, so go ahead and complete your End of Year Survey [https://www.surveymonkey.com/r/feminism16] today!
For equality,
Kelli Musick, Mid-Atlantic & Northeast Organizer


GISBOK Tree
GISBOK SELF RELATION
GISBOK EBK relation
Introduction
This is tree view of GISBOK
Hello again!
Bazinga!
View
Ziyang, add your first tree here
Hello again! The second item.
Bazinga! The third item.


React Redux provides APIs that allow your components to dispatch actions and subscribe to data updates from the store.
As part of that, React Redux abstracts away the details of which store you are using, and the exact details of how that store interaction is handled. In typical usage, your own components should never need to care about those details, and won’t ever reference the store directly. React Redux also internally handles the details of how the store and state are propagated to connected components, so that this works as expected by default.
However, there may be certain use cases where you may need to customize how the store and state are propagated to connected components, or access the store directly. Here are some examples of how to do this.
Internally, React Redux uses
React’s “context” feature
to make the Redux store accessible to deeply nested connected components.
As of React Redux version 6, this is normally handled by a single default
context object instance generated by React.createContext()
,
called ReactReduxContext
.
React Redux’s <Provider>
component uses
<ReactReduxContext.Provider>
to put the Redux store and
the current store state into context, and connect
uses
<ReactReduxContext.Consumer>
to read those values and
handle updates.
useStore
Hook
The
useStore
hook returns
the current store instance from the default
ReactReduxContext
. If you truly need to access the store,
this is the recommended approach.
Instead of using the default context instance from React Redux, you may supply your own custom context instance.
<Provider context={MyContext} store={store}>
<App />
</Provider>
If you supply a custom context, React Redux will use that context instance instead of the one it creates and exports by default.
After you’ve supplied the custom context to
<Provider />
, you will need to supply this context
instance to all of your connected components that are expected to connect
to the same store:
// You can pass the context as an option to connect
export default connect(
mapState,
mapDispatch,
null,
{ context: MyContext }
)(MyComponent)
// or, call connect as normal to start
const ConnectedComponent = connect(
mapState,
mapDispatch
)(MyComponent)
// Later, pass the custom context as a prop to the connected component
<ConnectedComponent context={MyContext} />
The following runtime error occurs when React Redux does not find a store in the context it is looking. For example:
<Provider />
, but did not provide the same instance
(or did not provide any) to your connected components.
<Provider />
.
Invariant Violation
Could not find “store” in the context of “Connect(MyComponent)”. Either wrap the root component in a
<Provider>
, or pass a custom React context provider to<Provider>
and the corresponding React context consumer to Connect(Todo) in connect options.
Redux was designed to use a single store. However, if you are in an unavoidable position of needing to use multiple stores, as of v6 you may do so by providing (multiple) custom contexts. This also provides a natural isolation of the stores as they live in separate context instances.
// a naive example
const ContextA = React.createContext();
const ContextB = React.createContext();
// assuming reducerA and reducerB are proper reducer functions
const storeA = createStore(reducerA);
const storeB = createStore(reducerB);
// supply the context instances to Provider
function App() {
return (
<Provider store={storeA} context={ContextA} />
<Provider store={storeB} context={ContextB}>
<RootModule />
</Provider>
</Provider>
);
}
// fetch the corresponding store with connected components
// you need to use the correct context
connect(mapStateA, null, null, { context: ContextA })(MyComponentA)
// You may also pass the alternate context instance directly to the connected component instead
<ConnectedMyComponentA context={ContextA} />
// it is possible to chain connect()
// in this case MyComponent will receive merged props from both stores
compose(
connect(mapStateA, null, null, { context: ContextA }),
connect(mapStateB, null, null, { context: ContextB })
)(MyComponent);
ReactReduxContext
Directly
In rare cases, you may need to access the Redux store directly in your own
components. This can be done by rendering the appropriate context consumer
yourself, and accessing the store
field out of the context
value.
This is not considered part of the React Redux public API, and may break without notice. We do recognize that the community has use cases where this is necessary, and will try to make it possible for users to build additional functionality on top of React Redux, but our specific use of context is considered an implementation detail. If you have additional use cases that are not sufficiently covered by the current APIs, please file an issue to discuss possible API improvements.
import { ReactReduxContext } from 'react-redux'
// Somewhere inside of a <Provider>
function MyConnectedComponent() {
// Access the store via the `useContext` hook
const { store } = useContext(ReactReduxContext)
// alternately, use the render props form of the context
/*
return (
<ReactReduxContext.Consumer>
{({ store }) => {
// do something useful with the store, like passing it to a child
// component where it can be used in lifecycle methods
}}
</ReactReduxContext.Consumer>
)
*/
}


Welcome, {{user.username}}.
<-Control Panel
You can add or edit location data below - be advised, they do not save unless you click save.
Create New Place
Name
Airport Code
Description
Search:
{% for place in places %}
Edit {{place.name}}
Name
Airport Code
Description
{{place.description}}
{% endfor %}


Circular layout is an efficient way for the visualization of huge amounts of information. Here the circlize package provides an implementation of circular layout generation in R as well as an enhancement of available software. The flexibility of this package is based on the usage of low-level graphics functions such that self-defined high-level graphics can be easily implemented by users for specific purposes. Together with the seamless connection between the powerful computational and visual environment in R, circlize gives users more convenience and freedom to design figures for better understanding complex patterns behind multi-dimensional data.
Zuguang Gu, Lei Gu, Roland Eils, Matthias Schlesner, Benedikt Brors, circlize Implements and enhances circular visualization in R. Bioinformatics (Oxford, England) 2014. PubMed
The full documentations are available at https://jokergoo.github.io/circlize_book/book/ and the online website is at https://jokergoo.github.io/circlize/.
The package can be installed from CRAN:
install.packages("circlize")
or directly from GitHub:
devtools::install_github("jokergoo/circlize")
Since most of the figures are composed of points, lines and polygons, we just need to implement functions for drawing points, lines and polygons, then the plots will not be restricted in any specific types.
Current there are following low-level graphic functions:
circos.points()
circos.lines()
circos.segments()
circos.rect()
circos.polygon()
circos.text()
circos.axis()
circos.raster()
circos.arrow()
circos.raster()
circos.barplot()
circos.boxplot()
circos.link()
, This maybe the unique feature for circos layout to represent relationships between elements.For drawing points, lines and text through the whole track (among several sectors), the following functions are available:
Draw circular heatmaps
Functions to arrange the circular layout:
Theoretically, you are able to draw most kinds of circular plots by the above functions.
For specific use in Genomics, we also implement functions which add graphics in genome scale.
Functions to initialize circular plot with genomic coordinates:
Functions to arrange genomic circular layout:
Functions to add basic graphics in genomic scale:
circos.genomicPoints()
circos.genomicLines()
circos.genomicText()
circos.genomicRect()
circos.genomicLink()
Functions with specific purpose:
circos.genomicIdeogram()
circos.genomicHeatmap()
circos.genomicLabels()
circos.genomicDensity()
circos.genomicRainfall()
Finally, function that draws Chord diagram:


Overview
I'm a senior-level developer and system architect. I specialize in helping companies focus a collection of business needs into a clean, simple software solution. I take projects from concept to final deliverable, often continuing with long-term maintenance and updates. I constantly push to simplify and remove unnecessary decisions and distractions from the user. The resulting applications improve daily workflow, track key business metrics, and make companies more efficient. These applications commonly return the initial investment in under a year via revenue growth and cost savings and continue to generate wealth for many years after that.
Consulting Work
Web Applications
2005 - present
Ruby + Rails • PHP • JavaScript • jQuery • MySQL • HTML/CSS •
AWS
My preferred stack is Ruby on Rails with a lightweight JavaScript front end. The bulk of the application logic and views are in the Rails application with just enough front-end code to make the user experience fluid and seamless. My applications run on AWS infrastructure, managed by AWS OpsWorks.
I maintain several legacy apps built with PHP and ExtJS. While no longer cutting edge, these apps have been running flawlessly for over 10 years and still deliver important business value.
Infoquest, Ltd
Developed the Investigation Management System, a tool that tracks workers compensation fraud investigations. The system handles every step of an investigation from initial request to monitoring progress to client communications to reporting and invoicing. Investigators can upload surveillance videos and enter surveillance notes from their iPads in the field, saving them significant time.
Key challenge: Encoding and streaming video for playback on a variety of platforms including mobile and flash-based players. Surveillance notes can be linked with the surveillance video so clients can see video clips associated with each surveillance note.
Impact: The IMS helped Infoquest acquire new clients and grow annual revenue from $3M to $4M (2013 to 2016). Key clients, like Toyota and Nationwide, cite the efficiency of using the IMS as a primary reason for working with Infoquest. In addition, by simplifying management and investigation work, the IMS saves Infoquest $200k/year in overhead and employee costs.
Orion America Technologies, LLC
Drawing on Orion AT's expertise in government contract management, I created OMIS, a tool to track projects at FAA-funded research centers. The resulting application is getting attention at all levels of the FAA as an example of the right way to track FAA-sponsored research.
Key challenge: Building a system where a wide range of people, from Program Managers, to Principal Investigators, to Tech Monitors, to Fiscal Admins, to Contract Admins, each feel the system is designed specifically around their needs and makes their job easier.
Impact: Six months after launch, the OMIS is generating $150k/yr in revenue with expected growth to $200k/yr in 2018. In turn, by improving accuracy and reducing duplication of effort, the OMIS is saving the FAA $360k/yr in administrative oversight costs, expected to grow to $560k/yr in 2018.
Pharmacy Systems, Inc
I've worked with Pharmacy Systems for over 15 years building a wide range of tools to help them manage hospital pharmacies, hospital supply chains, and hospital rehab units.
Key challenge: Distilling Pharmacy Systems' business data into a set of key metrics that clearly shows the value they are providing to their customers.
Impact: The Contract Management System has generated $100k/yr in revenue since it's launch in 2012.
Other Clients
Bay Photo Lab
Collagewall LLC
Commercial Prototypes
2011 - 2012
CoffeeScript • HTML/CSS • iAd JS
1K Studios
Built a series of prototypes on Apple TV and iPad to explore the future of the movie and TV viewing experience. This project was for a high profile client contracted through 1K Studios.
Business Intelligence
1997-2005
SQL Server • Microsoft Access • Visual Basic • PHP • ASP
Chase Bank
Built a tool with Microsoft Access and ASP that helped Chase Bank to identify and document relationships between their private banking customers. I analyzed the resulting data with MS SQL Server.
Impact: Helped private banking agents identify the full value of banking relationships so they could optimize service for customers that were generating the most value for the bank.
Kal Kan - Mars Petcare
Built several tools with Microsoft Access and Visual Basic. The Hold System tracks inventory that was set aside (on hold) due to production problems. The Conformance System tracks production line output and conformance to product standards.
Impact: Helped Kal Kan improve production efficiency by identifying trends in production line conformance. Reduced waste by getting on hold inventory back into production quickly, before it needed to be discarded.
Other Clients
Harmony Ball Company
FAA Airworthiness Assurance COE
Real-Time, Embedded Systems
1997-2010
C • C++ • 68K Assembly • x86 Assembly • VxWorks • AMX
ADB Airfield Solutions
Developed firmware for embedded airport lighting control modules with C++ and AMX. These modules receive commands from the control tower to control taxi and runway lights and monitor lighting system status. This ADB lighting system is in use at major international airports in the US and Europe.
Key challenge: Developed a fault-tolerant communications protocol that used multiple channels and automatic failover to ensure reliable communications between the control tower and the lighting modules.
STAR Dynamics Corporation
Worked on a team developing a high resolution tracking radar. The radar had a phased array antenna capable of tracking multiple targets up to 100 miles in range within a few inches of resolution.
Key challenges: Designed an ultra low-latency communication protocol to interface between the target acquisition system and the tracking system. Designed a non-blocking, real-time memory allocation system.
Other Clients
Aeroflex Test Solutions
Dynamic Sensor Systems LLC
Lintek, Inc
Commercial Windows Applications
1997-2001
C++ • MFC • Windows API
John Neal & Associates
Developed “Sundial”, a commercial Windows 95 application using MFC and Visual C++. Sundial displays a changing outdoor scene on the Windows desktop. Sunrise and sunset on the desktop are synchronized with the local sunrise and sunset.
Employment
Lintek, Inc
1991-1997
C • C++ • 68K Assembly • Windows API
Developed real-time, embedded-system firmware and user interfaces using C, C++, 68K assembly, Windows 3.1, 95, NT. Firmware development required creation of an OS kernel including interfacing with SCSI, GPIB, Ethernet, and custom hardware designed in-house. Products developed include:
- 5000 Radar System user interface, embedded firmware
- 4000 Radar System user interface, data acquisition
- GPR (Ground Penetrating Radar) embedded firmware
- AWG (Arbitrary Waveform Generator) embedded firmware
- TPI (Target Positioning System) embedded firmware, front panel interface
- élan Radar System motion device subsystem
ElectroScience Laboratory - The Ohio State University
Summer 1989
Worked as an intern on a variety of projects including the predecessor to the Lintek radar systems.
Education
The Ohio State University
1986 - 1990
BS Electrical Engineering. GPA 3.74
Phi Kappa Phi • Pi Mu Epsilon (Mathematics) • Eta Kappa Nu (Elec. Eng.)


EBD - Easton Bible DIctionary
Hood
HOOD
"HOOD "(Hebrews tsaniph) a tiara round the head (
Isaiah 3:23
; R.V., pl.,“turbans”). Rendered “diadem,”
Job 29:14
; high priest’s “mitre,”
Zechariah 3:5
; “royal diadem,”
Isaiah 62:3
.
"HOOD "(Hebrews tsaniph) a tiara round the head (Isaiah 3:23; R.V., pl.,“turbans”). Rendered “diadem,” Job 29:14; high priest’s “mitre,” Zechariah 3:5; “royal diadem,” Isaiah 62:3.


Overview
The 2008 Volkswagen R32 was a limited production vehicle based on the MK5 Golf platform. The R32 shares a lot of similarities with it's siblings when it comes to comfort and entertainment. At a glance this looks like a regular Golf or GTI but all the differences are under the hood and chassis. Production was limited for the R32 to just 5000 in the USA. Other countries also had limited production and seemingly unique to the USA is a 4-door version was never produced.
Engine
Volkswagen Engineers managed to stuff the 3.2L VR6 performance engine under the hood. The engine is transverse mounted, meaning the "front" of the engine is at the right side of the vehicle. The 3.2L 24 valve VR6 engine produces 250 HP at 6,250 RPM and 236 lb. ft. of torque at 3,000 RPM. With some minor modifications the engine power can be increased to around 275HP.
Drivetrain
The power of the VR6 is delivered though a DSG DQ250 6-Speed Automatic Transmission coupled with a Haldex 4 AWD system. The DSG DQ250 makes quick work of gear changes with a shift time of about 0.2 seconds while the Haldex 4 (AKA: 4-Motion) intelligent all wheel drive system can provide up to 90% of the power to the rear wheels.
Performance
The R32 shows competence by completing the 12.8 mile Nürburgring Nordschleife circuit in 8 minutes 49 seconds and was also featured on Top Gear where it did an impressive 1:30.4 lap time. Due to the added weight of the VR6 engine and AWD system Volkswagen Engineers mounted the suspension 10mm higher in the chassis than it's GTI and Golf/Rabbit siblings giving it a lower center of gravity and stance.
Badging
The R32 has many styling cues that differ from its siblings, the GTI and Golf/Rabbit. The most notable is the R32 badge on the exterior. The interior is unique where each R32 produced includes the serial number on the steering wheel.


5 Thanksgiving Day safety tips for your pet
by SBG-TVThanksgiving is a time to gather with your loved ones and celebrate the season. Part of the fun of the holiday is seeing people you don't always see and eating foods you don't normally cook, like Grandma's famous stuffing! Because Thanksgiving only comes once a year, your pet might not be used to the festivities, and their safety might not be top of mind with all the hustle and bustle of the day. Make sure to take some precautions so that your pet feels as comfortable as you do after a beautiful holiday meal.
1. Dangerous foods
For the most part, sticking to your pet's normal food and treats is best for their digestion, though the occasional table scrap can be harmless. But there are some Thanksgiving foods that should be absolutely off-limits for the cats and dogs in the house.
- Stuffing often contains ingredients like onions, scallions, and garlic, all of which are toxic to dogs and cats. They can cause a life-threatening condition called anemia.
- Turkey is not inherently dangerous to dogs, and it is sometimes a main ingredient in dog foods. However, when preservatives, sauces, and other additives are introduced to the meat, it increases the toxicity level.
- Don't drop any bones from the turkey, either.
- Ham is another popular entrée that is bad for pets, potentially causing indigestion and pancreatitis.
- Mashed potatoes are another food that's technically safe for animals, but butter and garlic make this Thanksgiving staple unhealthy for pets.
- If your salads include grapes or raisins, make sure those little bites stay on the table because if they fall into your dog's mouth, they can cause kidney failure that can turn fatal.
- Xylitol comes in some sugar-free baked goods, and it can be deadly to pets.
2. Kitchen safety
Be cautious about where your pets are roaming throughout the cooking process. If you allow them in the kitchen, keep them away from the hot oven door and stovetop.
3. Decorations
Decorating the table with holiday-themed items makes for a great photo op. However, be careful leaving pets unattended near potentially dangerous decor, like candles! A low hanging tablecloth can attract your pet and provide access to the decorations and food, a potential dinner party disaster.
4. Trash
The same tip goes for trash cans. Keep them closed and, if possible, take them outside when they are full.
5. Proper travel accommodations
If you plan on traveling during the Thanksgiving weekend, think about what your pet will need for the trip. Be sure to pack enough supplies for the length of your trip, including a bit extra for potential problems.
If you're leaving your furry friend behind with a pet sitter, make sure your pet is comfortable with them before your trip. If they have pets, make sure they get along with yours.
If you board your pet in a place with other animals, make sure it's a reliable and clean business, and verify your pet has all its vaccinations.
You want Thanksgiving to be the perfect bridge to Christmas, not the nightmare before Christmas. Use these tips to have a wonderful holiday with your pets and family.
Have a question about pet health? Want to become the best possible pet parent? Find helpful tips, reminders, and insight to giving your furry friend the best possible care with For Pet's Sake! Learn more at drdevonsmith.com.


| Pay Date | Earnings Period | Amount | Payment Type | Status | |
|---|---|---|---|---|---|
| Nov 07, 2019 | Oct 07, 2019 - Nov 07, 2019 | $400 | Check | Paid | |
| Dec 07, 2019 | Nov 07, 2019 - Dec 07, 2019 | $550 | Venmo | Pending | |
| Jan 07, 2019 | Dec 07, 2019 - Jan 07, 2019 | $600 | Check | Pending | |
| Feb 07, 2019 | Jan 07, 2019 - Feb 07, 2019 | $500 | Paypal | Paid | |
| Mar 07, 2019 | Feb 07, 2019 - Mar 07, 2019 | $490 | Check | Pending | |
| Apr 07, 2019 | Mar 07, 2019 - Apr 07, 2019 | $900 | Venmo | Paid |


public final class FXWorker<T>
extends java.lang.Object
| Type | Property and Description |
|---|---|
javafx.beans.property.ReadOnlyStringProperty |
message |
javafx.beans.property.ReadOnlyDoubleProperty |
progress |
| Modifier and Type | Field and Description |
|---|---|
static java.util.concurrent.atomic.AtomicBoolean |
APPLICATION_RUNNING |
static java.util.concurrent.atomic.AtomicLong |
WAIT |
| Modifier and Type | Method and Description |
|---|---|
void |
cancel()
Cancel the current execution
|
FXWorker<java.lang.Void> |
consumeOnExecutorThread(java.util.function.Consumer<T> consumer)
accepts an
Consumer to be applyed on worker thread. |
FXWorker<java.lang.Void> |
consumeOnFXThread(java.util.function.Consumer<T> consumer)
accepts an
Consumer to be applyed on JavaFX application thread. |
FXWorker<?> |
execute()
the terminal execute method which starts the execution chain
|
FXWorker<?> |
execute(java.util.function.Consumer<T> r)
the terminal execute method which starts the execution chain.
|
FXWorker<?> |
execute(java.lang.Runnable r)
the terminal execute method which starts the execution chain.
|
<V> FXWorker<V> |
functionOnExecutorThread(java.util.function.Function<T,V> function)
accepts a
Function to be applyed on worker thread. |
<V> FXWorker<V> |
functionOnFXThread(java.util.function.Function<T,V> function)
accepts a
Function to be applyed on JavaFX application thread. |
java.lang.String |
getMessage()
Gets the value of the property message.
|
double |
getProgress()
Gets the value of the property progress.
|
static <T> FXWorker |
instance()
Returns an instace of async handler
|
static void |
invokeOnFXThreadAndWait(java.lang.Runnable runnable)
invokes a runnable on application thread and waits until execution is
finished
|
javafx.beans.property.ReadOnlyStringProperty |
messageProperty() |
<T> FXWorker<T> |
onError(java.util.function.Function<java.lang.Throwable,T> fnException) |
javafx.beans.property.ReadOnlyDoubleProperty |
progressProperty() |
<T> FXWorker<T> |
retry(int amount) |
<T> FXWorker<T> |
supplyOnExecutorThread(java.util.function.Supplier<T> supplier)
accepts a
Supplier to be applyed on worker thread. |
<T> FXWorker<T> |
supplyOnFXThread(java.util.function.Supplier<T> supplier)
accepts an
Supplier to be applyed on JavaFX application thread. |
static void |
updateMaxWaitTime(java.lang.Long waitTime)
Update the max wait time a process can run on FXThread
|
void |
updateMessage(java.lang.String messageValue) |
void |
updateProgress(double progressValue) |
public final javafx.beans.property.ReadOnlyDoubleProperty progressProperty
getProgress()
public final javafx.beans.property.ReadOnlyStringProperty messageProperty
getMessage()
public static final java.util.concurrent.atomic.AtomicLong WAIT
public static final java.util.concurrent.atomic.AtomicBoolean APPLICATION_RUNNING
public static <T> FXWorker instance()
,
- the type of returnpublic final FXWorker<java.lang.Void> consumeOnFXThread(java.util.function.Consumer<T> consumer)
Consumer
to be applyed on JavaFX application thread.
This method ensures the invocation on the FX thread even when the execution started in an different thread.consumer
- , the consumer to executeFXWorker
public final <T> FXWorker<T> supplyOnFXThread(java.util.function.Supplier<T> supplier)
Supplier
to be applyed on JavaFX application thread. This method ensures the invocation on the FX thread even when the execution started in an different thread and returnes a value of type T.T
- the return typesupplier
- the supplier to executeFXWorker
public final <T> FXWorker<T> onError(java.util.function.Function<java.lang.Throwable,T> fnException)
public final <T> FXWorker<T> retry(int amount)
public final <V> FXWorker<V> functionOnFXThread(java.util.function.Function<T,V> function)
Function
to be applyed on JavaFX application thread.V
- the type of returnfunction
- the function to executeFXWorker
public final FXWorker<java.lang.Void> consumeOnExecutorThread(java.util.function.Consumer<T> consumer)
Consumer
to be applyed on worker thread.consumer
- the consumer to executeFXWorker
public final <T> FXWorker<T> supplyOnExecutorThread(java.util.function.Supplier<T> supplier)
Supplier
to be applyed on worker thread.T
- the type of returnsupplier
- the supplier to executeFXWorker
public final <V> FXWorker<V> functionOnExecutorThread(java.util.function.Function<T,V> function)
Function
to be applyed on worker thread.V
- the type of returnfunction
- the function to executeFXWorker
public void cancel()
public final FXWorker<?> execute()
FXWorker
public final FXWorker<?> execute(java.lang.Runnable r)
r
- the supplied runnable will be invoked on fx application thread when the chain has finishedFXWorker
public final FXWorker<?> execute(java.util.function.Consumer<T> r)
r
- the supplied consumer will be invoked on fx application thread when the chain has finished, the input of the consumer is the last output of your execution chainFXWorker
public static void updateMaxWaitTime(java.lang.Long waitTime)
waitTime
- the wait-time valuepublic static void invokeOnFXThreadAndWait(java.lang.Runnable runnable) throws java.lang.InterruptedException, java.util.concurrent.ExecutionException
runnable,
- a runnable which will be invoked and wait until execution is finishedjava.lang.InterruptedException
- when thread was interrupted on shutdownjava.util.concurrent.ExecutionException
- when an exception was thrown in a componentpublic final double getProgress()
public final javafx.beans.property.ReadOnlyDoubleProperty progressProperty()
getProgress()
public final void updateProgress(double progressValue)
public final java.lang.String getMessage()
public final javafx.beans.property.ReadOnlyStringProperty messageProperty()
getMessage()
public final void updateMessage(java.lang.String messageValue)


Hey, welcome to my portfolio.
Here you'll find info about me and some things I've done. You can also get in contact if you really want to. I'm bad at writing good things about myself because of how amazingly humble I am.
I have enough experience to make terrible mistakes in these technologies:
HTML5
CSS3
Javascript
Node-js
Inkscape
Gimp
Git
Docker
Python
PHP
Linux


Dashboard: Welcome Nkosingiphile Sibandze
- Dashboard
Recent orders
| ID | Title | Price | Status | Actions |
| 685776 | C++ and Applications | $19.32 | Incomplete | Complete Order |
New files
| File | Actions |
| No new messages |
New messages
| Message | Actions |
| No new messages |


--- layout: secondary company: Schwab img: schwab.png ---
While Schwab supports standard SMS-based two factor authentication, advanced TFA is only supported using the Symantec's VIP Access product suite through either a Symantec physical token or the Symantec VIP Access phone/desktop app. If you have other TFA sites that also use Symantec (Fidelity for example), you can use the identical Symantec VIP configuration (Schwab does not require any custom settings).
Two-step Verification
", select "Always at login
" and then "Security Token
".
You will need to provide the Credential ID supplied by your token or app.


Stay up to date with ecommerce trends with Shopify's new's letter
Subscribe for free marketing tips
Interested in...
Marketing
Please enter a valid email address
Sign up now
Thanks for subscribing
You'll start receiving free tips and resources soon.


---
layout: page
title: Button
---
{{ page.title }}
Readme
TAB key enters/exits button. SPACEBAR or ENTER activates button.
Please read the documentation to understand how these examples were created.
Examples
Example 1: Native HTML
Example 2: ARIA Button (not recommended)
Buy iPhone 6
Example 3: Hijaxed Link
Buy iPhone 6
Example 4: Stealth Button (keyboard only)
Updated: May 12th, 2019


--- layout: post title: "Depth of Knowledge vs. Breadth of Knowledge" date: 2009-10-05 21:40:08 +0000 permalink: /2009/10/05/depth-of-knowledge-vs-breadth-of-knowledge/ category: Misc redirect_from: - /blog/depth-of-knowledge-vs-breadth-of-knowledge/ ---
Update: I wrote this long ago, and since then, I have come to terms and even begun to appreciate being a generalist. There's a wonderful book called Range: Why Generalists Triumph in a Specialized World that explains the value in having a breadth of knowledge even in an increasingly specialized world.
In a lot of circumstances, it can be useful to have a wide breadth of knowledge: that is, to know a little about a lot of things. It's useful in my job, where I am the System Administrator/DBA/developer/etc.
That being said, I feel like I need to increase my depth of knowledge in one or more areas in order to be more useful to the Open Source and Ubuntu communities. I feel as though my contributions are not as significant as I'd like them to be, but I'm also not sure in which direction to take them.
So how can someone who knows a little about a lot learn a lot about a little to be more useful in the community?


An Angular 2 (and beyond) powered AOT compatible device detector that helps to identify browser, os and other useful information regarding the device using the app. The processing is based on user-agent.
To install this library, run:
$ npm install ngx-device-detector --save
Import DeviceDetectorModule
in your app.module.ts
import { NgModule } from '@angular/core';
import { DeviceDetectorModule } from 'ngx-device-detector';
...
@NgModule({
declarations: [
...
LoginComponent,
SignupComponent
...
],
imports: [
CommonModule,
FormsModule,
DeviceDetectorModule.forRoot()
],
providers:[
AuthService
]
...
})
In your component where you want to use the Device Service
import { Component } from '@angular/core';
...
import { DeviceDetectorService } from 'ngx-device-detector';
...
@Component({
selector: 'home', // <home></home>
styleUrls: [ './home.component.scss' ],
templateUrl: './home.component.html',
...
})
export class HomeComponent {
deviceInfo = null;
...
constructor(..., private http: Http, private deviceService: DeviceDetectorService) {
this.epicFunction();
}
...
epicFunction() {
console.log('hello `Home` component');
this.deviceInfo = this.deviceService.getDeviceInfo();
console.log(this.deviceInfo);
}
...
}
Holds the following properties
To generate all *.js
, *.js.map
and *.d.ts
files:
$ npm run tsc
To lint all *.ts
files:
$ npm run lint
To run unit tests
$ npm run test
To build the library
$ npm run build
Make sure you have @angular/cli installed
$ npm install -g @angular/cli
$ cd demo
$ npm install
$ ng serve
the demo will be up at localhost:4200
If you're consuming the library for IE9, IE10 & IE11, make sure to uncomment these lines from src/polyfills.ts
in your project.
import 'core-js/es6/string';
import 'core-js/es6/array';
import 'core-js/es6/map';
The library is inspired by and based on the work from ng-device-detector . Also used a typescript wrapper of the amazing work in ReTree for regex based needs and an Angular2 Library Creator boilerplate to get the work started fast. I.e. Generator Angular2 library.
MIT © Ahsan Ayaz
#1.2.2 (contains breaking changes)
#1.2.1
#1.2.0
#1.1.7
#1.1.6
#1.1.5
#1.1.4
#1.1.3
#1.1.2
#1.1.1
#1.1.0 (contains breaking changes)
ngx-device-detector
Ng2DeviceService
to DeviceDetectorService
Ng2DeviceDetector
to DeviceDetectorModule
#1.0.0 (contains breaking changes)
Device
to Ng2DeviceService
Ng2DeviceDetector
to Ng2DeviceDetectorModule
imports: [Ng2DeviceDetectorModule]
to imports: [Ng2DeviceDetectorModule.forRoot()]


formurlator v0.1.1
formurlator is a JavaScript library meant to synchronize a set of DOM elements with a query string in the URL.
The elements below are already initialized.
Any change to the DOM element will be reflected in the URL. If you reload this page with changes in the URL values, they will be reflected in the DOM elements' values. Invalid values will be corrected, according to the definitions in the elements or available options.
To stop listening to changes in any of the elements, toggle the "active" checkbox attached to it. To stop or start listening to the system in general, toggle the "Stop/Start synchronizing URL" button.
Refer to the documentation for more information.
| Your name: | ||
| Your age: | (Number between 5 and 120) |
|
| Favorite color: | ||
| Favorite commute: | ||
| Favorite commute: | ||
| I work best at | ||
| I love wearing the following combinations | ||
Code:
formurlator.add( {
name: document.getElementById( 'demo-name' ),
age: document.getElementById( 'demo-age' ),
color: document.getElementById( 'demo-color' ),
commute: document.getElementById( 'demo-commute' ),
like: document.getElementById( 'demo-like' ),
// NodeList:
workpref: document.getElementsByName( 'workpref' ),
clothing: document.getElementsByName( 'clothing' )
} );


I am a software engineer with a strong passion for learning and problem-solving. I have plenty of experience with cross-platform app development with frameworks like React Native and Flutter while also having experience with web development using an array of tools like PHP, jQuery, HTML, CSS, and some content management systems like WordPress. I have also started getting my feet wet in the machine learning area of software so I have experience with python and some machine learning libraries. While I am only just beginning my journey in software being a new grad this May, I am very excited to continue learning.
Developed a simple workflow and process for the team to follow throughout the semester - simulated Scrum methodology.
Designed the structure and flow of data for an Uber-like app using UML and lead the implementation using Firebase.
Built UI and functionality with the cross-platform framework, Flutter.
Implemented and manipulated Google Maps, Places, and Firebase APIs.
Architected and developed algorithms for finding nearby users, displaying them on a map, and requesting rides from them.
Managed the majority of communications between my team and the client.
Added the app to Test Flight so the client could test and give useful feedback.
Collaborated with senior developers, design teams, and project managers to help develop and deliver user-friendly and SEO optimized websites.
Added custom functionality to already existing e-commerce solutions in order to meet specific client needs - mostly PHP and jQuery.
Juggled multiple projects, support tickets, client training sessions, and also did some sales.
Closed or provided assistance on 50+ support tickets every month.
Trained clients to update content on content management systems to help reduce the number of support tickets received.
Operated remotely for almost two years while still in school.
Implemented payment systems on websites using multiple APIs such as Stripe and PayPal.
Conferred with management and development teams to prioritize needs, resolve conflicts, develop content criteria, and choose solutions.
Met with clients to discuss design and functionality options.
Developed automated Selenium test suites using Nightwatch.js to meet QA metrics.
Performed manual regression on IOS and Android applications.
Coordinated with a remote agile team of software engineers and a product manager.
Aside from being a software engineer, I really enjoy any type of recreational sport. A lot of the time, I find myself playing ultimate frisbee with friends or pickup basketball when I can find the time. I also really enjoy building things, I built my own coffee table and am currently on an endeavour to rebuild the back deck of my house. Aside from the more active things I do, I also really enjoy working on my laptop or computer as I've recently delved into Arch Linux and absolutely love it. I hope to build my own package for other Arch users to use one day.
When I'm not doing any of the before-mentioned activities, I often find myself reading articles about just about anything. However, my favorite thing to read about is space. I could spend hours reading and talking about space. My phone usually keeps me up to date on any big discoveries that happen off-planet.


Alexa::ASK::Skill AuthenticationConfiguration
The
AuthenticationConfiguration
property type specifies the Login with Amazon (LWA)
configuration used to authenticate with the Alexa service. Only Login with Amazon
security
profiles created through the Amazon Developer Console are supported for authentication. A Client ID, Client Secret, and Refresh Token
are required. You can generate a Client ID and Client Secret by creating a new security
profile on the Amazon Developer Portal or you can retrieve them from an existing
profile. You can then produce the refresh token by providing the Client ID and Client
Secret to
the generate-lwa-tokens command in the ASK CLI.
AuthenticationConfiguration
is a property of the Alexa::ASK::Skill
resource.
Syntax
To declare this entity in your AWS CloudFormation template, use the following syntax:
JSON
{ "ClientId" :
String
, "ClientSecret" :String
, "RefreshToken" :String
}
YAML
ClientId:
String
ClientSecret:String
RefreshToken:String
Properties
ClientId
-
Client ID from Login with Amazon (LWA).
Required: Yes
Type: String
Update requires: No interruption
ClientSecret
-
Client Secret from Login with Amazon (LWA).
Required: Yes
Type: String
Update requires: No interruption
RefreshToken
-
Refresh Token from Login with Amazon (LWA).
Required: Yes
Type: String
Update requires: No interruption


Tenacious Programming Professional and Web Developer, eager to apply technical know-how and a diverse taste profile to be an invaluable member of a team. Committed to tracking and eliminating bugs hindering user experiences. Adaptable and multi-talented earned through a manifold of varied disciplines within work environments. Excitedly pursuing new opportunities to expand the grasp on the Programming Life-cycle.


What are your Star Wars stats?
Just choose the day of your birthday to learn which characters, planets, and spaceships from the Star Wars galaxy align with you!
Just choose the day of your birthday to learn which characters, planets, and spaceships from the Star Wars galaxy align with you!


Hello there!
Welcome to DUI Clothing™! We are a Men's Clothing shop based in London, Ontario, Canada. Created in 2021, we are an ambicious project created by people who want to see a more stylish world. Hope you enjoy while you're here!
Welcome to DUI Clothing™! We are a Men's Clothing shop based in London, Ontario, Canada. Created in 2021, we are an ambicious project created by people who want to see a more stylish world. Hope you enjoy while you're here!
We have created special collections with
exclusive DUI Clothing™ products
selected for you.
Products with 50% off for you this week!


Preparation time
less than 30 mins
Cooking time
over 2 hours
Serves
Serves 4
Dietary
Heat the sugar and water in a saucepan until dissolved then boil the syrup until the mixture reaches the soft ball stage, 100C/220F (use a sugar thermometer to measure this).
Place the ground almonds, egg white and almond extract into a bowl. Pour over the sugar syrup and mix vigorously until the mixture forms a thick paste. Chill the marzipan mixture in the fridge for 1-2 hours, or until firm.
Meanwhile, preheat the oven to 210C/425F/Gas 7.
Roll the puff pastry out thinly on a floured surface. Cut out 4 x 12cm/5in circles, place onto a baking tray and score the centre of each circle with a knife. Brush each pastry circle with the beaten egg.
Roll the chilled marzipan out to 0.5cm/¼in thick. (If the marzipan is too hard to rollout, allow it to warm slightly at room temperature.) Cut out 4 x 11cm/4in circles and place each circle on top of a pastry circle.
Arrange the raspberries in concentric circles on top of each circle of marzipan so that all of the marzipan is covered. Sprinkle over the flaked almonds.
Transfer to the oven to bake for 15-18 minutes, or until the pastry is risen and golden-brown. Remove the tarts from the oven and dust with icing sugar immediately.
Meanwhile whisk the double cream in a bowl until stiff peaks form when the whisk is removed. Whisk in the icing sugar and vanilla extract.
For the raspberry purée, blend the raspberries and icing sugar in a food processor to a purée. Sieve the sauce into a bowl.
To serve, spoon some of the raspberry purée onto each of 4 serving plates and top with a tart. Top with a quenelle of the vanilla cream.


The World Wide Web is the largest computer network in the world. The web works as a series of four component parts.
You, your computer/browser, the Internet itself, and the servers all make up what is collectively known as the Internet.
Your browser is a program that runs on your computer to display files found on the web. Servers are computers that
host these files. Your browser makes a request to these servers using HTTP, the main protocol of the web.
This video explains this well.
HTML is an acronym for "Hypertext markup language." HTML code is the basis for almost every page on the web.
HTML consists of the text content of the page, the markup for that text, references to other documents, and links to
other pages on the web. HTML is coded using elements. HTML tags are a type of element that defines the format/display
of the content of that page.
HTML elements can be either inline of block. Block elements create an invisible box around a body of text. The break
tag is an inline element, while the paragraph tag is a block element.
Because computers do not think like we do, tiny mistakes in code, like not forgetting a closing tag, become big mistakes
for computers. Although a mistake may seem insignificant to us, it can yield an entire section of code meaningless to a
computer. Secondly, it is important to remember that eliminating repitition is fundamental to good coding. Reptition in your
HTML, CSS, or both can be detrimental to your webpage.
A house and a website may not seem very similar, but in reality, a house is a great analogy for a website. Think of the entire
house as the website itself. Now consider the two programming languages - CSS and HTML. If the website is the whole house
then the HTML is the structure - walls, rooms, etc. - and the CSS is the style of the home - color, decorations, etc.
Similarly, HTML is the structure of the webpage, while CSS is the formatting and style.
This video explains this concept.
To analyze the HTML structure of any webpage online, you can right click on the page and go to the "inspect element"option.
A new window will open on the page containing all the HTML code, as well as the stylings (CSS). If you click the triangles to the
left of the code and continue to do so for all of the triangles on the page, the DOM (Document Object Model) structure of the page
will appear. This is the tree like structure of the webpage.
Everything on a webpage is rectangular. Even circles and other shapes seen on a webpage are contained in boxes. We define
the boxes of a webpage using the "div" tag.
CSS stands for Cascading Style Sheets. CSS is a programming language that adds style to the structure of an HTML document.
A link to your CSS code should be put in the header section of HTML code. CSS properties can be added to HTML using selecotrs,
which are keywords that apply a CSS property to all that apply on that page. The CSS selectors can be a tag or a class. If the selector is
a tag, refer to it without a period before it. If the selector is a class it should be referred to with a period before it. The CSS properties
should be referred to in the format: "attribute.value."
CSS can be used to change text color, font, border radius, the margins of your page, the font weight, the text alignment, and much more.
In order to manipulate these properties, you must select the correct attribute and assign it a value.
Because every HTML document can be broken down into a series of boxes, and CSS can be used to manipulate these boxes, it is important
to define the parts of boxes found on the internet. All HTML boxes are composed of the content, padding, border, and margin. The content is
the text and imaging that appears within the box. The padding clears an area around the contnet. The border clears an area around
the padding, and the margin is the clear space between the boxes themselves.


Welcome to the CDN Index made by Night Uploader!
The user of this script was too lazy to change this text to fit their own taste :P
New files can be found in /New-Uploads.txt.
Below is a listing of files for this CDN in alphabetical order.
Some random information about this CDN.
© Copyright YOURNAMEHERE, 2014. All Rights Reserved. Some items have different copyrights. Please contact my at email.tld for information.


Snapshot
The web site is to classify the news in a new aggregator.
Let lego robots complete a series of tasks automatically.


|
ActiveTcl User Guide
|
||
fblocked - Test whether the last input operation exhausted all available input
fblocked channelId
The fblocked command returns 1 if the most recent input operation on channelId returned less information than requested because all available input was exhausted. For example, if gets is invoked when there are only three characters available for input and no end-of-line sequence, gets returns an empty string and a subsequent call to fblocked will return 1.
ChannelId must be an identifier for an open channel such as a Tcl standard channel (stdin, stdout, or stderr), the return value from an invocation of open or socket, or the result of a channel creation command provided by a Tcl extension.
gets, open, read, Tcl_StandardChannels
Copyright © 1996 Sun Microsystems, Inc. Copyright © 1995-1997 Roger E. Critchlow Jr.


artist, designer, developer, I like to learn every part of the process and something more and stuff so lik eyeah should not get so caught up on this par of it.


CANDIDATE, THE (director: Michael Ritchie; screenwriter: Jeremy Larner; cinematographer: John Korty/Victor Kemper; editors: Richard A. Harris/Robert Estrin; cast: Robert Redford (Bill McKay), Peter Boyle (Marvin Lucas), Melvyn Douglas (John J. McKay), Quinn K. Redeker (Jenkin), Don Porter (Senator Crocker Jarmon), Allen Garfield (Howard Klein), Karen Carlson (Nancy), Morgan Upton (Henderson), Michael Lerner (Corliss), Kenneth Tobey (Starkey); Runtime: 109; Warner Bros.; 1972)
Reviewed by Dennis Schwartz
An astute political film about an idealistic liberal lawyer concerned with community grass roots issues. Bill McKay (Robert Redford) is the son of the former legendary political machine-sponsored governor of California John J. McKay (Melvyn Douglas). Redford is talked into running for California senator against an incumbent Republican Reagan-like conservative, Crocker Jarmon (Don Porter). The film is so realistic, probably, because it was written by a Senator Eugene McCarthy speechwriter Jeremy Larner, who won the Oscar for his original screenplay. It is directed by Michael Ritchie (Downhill Racer), who does a good job keeping the film afloat with black humor and tension. It thankfully never sinks into melodrama because it stays with the campaign without padding on an unnecessary plot.
The only difficulty I had with the film, is that it is not easy to parody the political scene, which is already a parody of itself. But what the film successfully brings to the table, is it clearly shows how a candidate might start out sincere, hoping that the power of the job would allow him to do the things he wants to do to make things better in society, yet the candidate thinks he must compromise and play the political game in order to get elected. This intelligent film shows that better than any other political film I have seen thus far: it magnifies what the seduction of power can do to someone, even an idealist like the Redford character. The candidate, though, compromised, still remains a somewhat ambiguous sympathetic figure, someone who still might be effective as a senator, even though he is flawed.
The film opens, as there seems to be little hope for the Democrats to win in the senate race in California against an excellent campaigner and a veteran silver-tongued politician Senator Jarmon. Therefore, Democrat campaign manager, Marvin Lucas (Boyle), decides to take a chance and get a fresh face with blue blood political credentials to run for office, the handsome and articulate Bill McKay. He gets Democrat media consultant Howard Klein (Garfield) to run the TV and ad campaign, who is one of those loud-mouth, opinionated, irksome individuals, who always has to be busy doing something. When he is at his desk, he pounds his hammer on some walnuts while conducting business. McKay is a do-gooder, working out of a makeshift lawyer's office defending environmental and local community issues, and is not interested at first in the senate office. But Lucas pushes the right buttons, tells him he can say what he wants to and go where he wants to go, but by securing this powerful office he can be more influential in getting his political agenda across. In his understated salespitch to Redford, Lucas writes on the cover of the matchbook that he hands him: You lose. Which supposedly means, for the moment, what do you have to lose, just be yourself, no one expects you to win. Nancy (Carlson), the candidate's attractive wife, also, applies pressure on him as she encourages him to run, seeing herself in a more important light as the wife of a senator. Later, the matchbook message will mean that he lost his soul, as Redford tries to be humorous in a droll way and says the message means the results are of the early returns.
Behind in the polls by 14 points, his campaign is preaching to the choir until he is told by Lucas that he must now reach out to other voters, or else he will lose in a landslide. The change in McKay's message is not without misgivings on his part, but what the film does well is keep the focus on the campaign. Soon, his ratings go up in the polls while drawing women voters to him because of his virile looks. He also energizes the apathetic electorate with basically the same tired political rhetoric his opponent is saying, but he has charisma and it somehow sounds fresh coming from his lips. During the TV debate, Redford transposes his face on Jarmon's, and there is no distinction between the two of them, except he still suffers from the conflicts of his conscience and still thinks he can overcome the political scenario and do good on his promises. But this is shown as being rather dubious, as his father's old political ally, the labor leader Starkey (Tobey) promises to deliver the vote for him, with the tacit understanding of the favors he expects if his candidate should become senator.
When Redford wins in an upset but is perceived as having sold out for the victory, talking in meaningless soundbites to appeal to the masses, ... his appreciative father comes up to him and offers him the left-handed compliment, "Son, you're a politician." To further sink in what has happened to him amidst the hysteria of the victory celebration of the party faithful, he asks Lucas with a confused expression on his kisser, "What do we do now...?"
In "The Candidate," the Redford character has no one to blame but himself for his decisions. He was the one who sold himself out. It would be too easy to blame it on the system, which this film correctly doesn't do. This Hollywood film has passed the test of time and is still a good watch, especially, during an election year. And, even though the times have changed from the 1970s, the political process still looks the same, if that is possible to believe.
REVIEWED ON 11/14/2000 GRADE: B+
Dennis Schwartz: "Ozus' World Movie Reviews"
http://www.sover.net/~ozus
<EMAIL_ADDRESS>© ALL RIGHTS RESERVED DENNIS SCHWARTZ
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


--- layout: post authors: ["Greg Wilson"] title: "Reproducibility Workshop at XSEDE" date: 2014-03-07 time: "06:00:00" tags: ["Announcements"] ---
The reproducibility@XSEDE workshop is a full-day event scheduled for Monday, July 14, 2014 in Atlanta, Georgia. The workshop will take place in conjunction with XSEDE14, the annual conference of the Extreme Science and Engineering Discovery Environment, and will feature an interactive, open-ended, discussion-oriented agenda focused on reproducibility in large-scale computational science. We hope to help promote a culture of reproducibility within the broad community of stakeholders connected to computation-enabled research, and expect our work to lead to recommendations address to this community.
This event will build on the 2009 Yale Data and Code Sharing Roundtable, which culminated in a declaration "demanding a resolution to the credibility crisis from the lack of reproducible research in computational science". To find out more, please see the workshop website, or send questions to reproducibility@xsede.org.


WhatsApp for iOS can now play Netflix trailer videos
by RakaWhatsApp has quietly added a new feature to the WhatsApp iOS app. With the latest update installed, WhatsApp for iOS users can now play Netflix trailer videos right from the app, meaning that if someone sends you a Netflix trailer link, all you need to do is click on the link and WhatsApp will start to play the video without taking you to the Netflix app.
The feature is not new though. WhatsApp can play videos from various other sources and that includes YouTube, Facebook, Instagram and now, aside from these services, Netflix trailer videos, too can be played in WhatsApp. Interestingly enough, we haven’t heard any official announcement from WhatsApp about the addition of Netflix to the list of supported services.
The feature is currently available only in the iOS counterpart of the WhatsApp, but WhatsApp is expected to bring the feature to the WhatsApp for Android in the coming days.
You can update WhatsApp from the below link, or you can head over to Apple App Store
|
|
Download | WhatsApp Messenger Developer: WhatsApp Inc. Price: Free |
|
via WAB


About Me
Work Experience
June-September 2020
STEP Intern
Clobotics
June-September 2019
Computer Vision/Machine Learning Intern
Origin Labs
June-September 2018
Software Engineering Intern
Education
University of Washington 2020-2023 - Computer Science
Tesla STEM High School 2015-2019


Something wrong happened. Please contact webmaster or point of contact for this website.
Sorry for the inconvenience. Website will be fixed as soon as possible upon contect.


A piece based on eschewing prime harmonics 3, 5, and 7, instead using 11, 13, 17, and 19.
In 2011 I invented a tuning system based on the harmonic pun whereby movement by a 19th harmonic is almost exactly the same as a movement by an 11th, a 13th, and a 17th.
In other words, in pitch space where the octave is treated as harmonically neutral, where I can multiply either side of a harmonic ratio by any number of 2's and get a result that is considered essentially the same, then it's pretty interesting that (19 * 2^7) / 11 * 13 * 17 = 2432/2431 = 1.00041135335 ≈ 1.
More information here: https://cmloegcmluin.wordpress.com/2011/08/10/the-blumeyer-comma
I named this tiny interval the "Blumeyer comma", after myself, which feels a bit weird. Check it out, doing its thing at the very bottom of the list of Unnoticeable commas on the Xenharmonic Wiki: https://en.xen.wiki/w/Unnoticeable_comma
What's particularly interesting about this tuning is that it eschews intervals built from simpler prime harmonics. Prime harmonics are the fundamental building blocks of harmony, just as prime numbers are the fundamental building blocks of numbers per the Fundamental Theorem of Arithmetic. The lower, simpler ones are the most important and useful; most world traditions use the 2nd, 3rd, and 5th harmonics, or intervals designed to approximate them, extensively.
A precedent for setting a prime harmonic minimum exists, and it is called the Bohlen-Pierce tuning. It eschews the 2nd harmonic, the octave, from all of its harmonic ratios, whether in pure JI mode or a tempered version thereof.
So this tuning does not eschew 2 — it is a critical building block to the Blumeyer comma — but it does eschew 3, 5, and 7. As a result, for me anyway, it instills an unusual, otherworldly feeling.
In 2015, I wrote a piece using the Blumeyer comma. At the time, I didn't have a proper name for it; hence "The Blumeyer Comma JI Unpump".
I call it an "unpump" because rather than spiraling out in looping increments of the comma as JI pumps tend to do, I instead modulate by the tiny intervals in the tuning in order to return back to the home pitch as tempered pumps tend to do.
More info on comma pumps here: https://en.xen.wiki/w/Comma_pump
Here are two different maps of the bass to the track. One is simply overlaid on the previous diagram of the Blumeyer comma. The other shows it on a pitch circle around the octave.
The chords are built from the pitches directly connected to each of these bass notes but which were not captured along this path. I guess you could call these the "left-out" notes.
The harmony comes from choosing from left-out notes, too. But instead of building a stack of all such notes for each bass note, what I did was pick a single note, then connected them by moving step-wise through the left-out notes. How long I hold each harmony note just depends on how many steps it takes to get between one bass note's harmony note and its next's using the shortest possible path. Only one note has no neighbor left-out notes: the unison.
The lead voice simply tries to move by simple intervals, in almost all cases by either an 11th, 13th, 17th, or 19th harmonic (octave reduced).
As part of the Untwelve Microtonal Summer Camp 2016, set at the peaceful Circle Pines Center in Delton, Michigan, I got my comma pump piece performed and recorded. It was at this time that I gave it a real name, Tsraxcfaubdj.
The performers, to whom I am deeply grateful:
Jacob Barton: Udderbot
Joe Monzo: Voice
Stephen Weigel: Voice
Thomas Scheurich: Cello
The piece was played in double time. I prefer the original tempo, but still adore this rendition.
To help convince some of the 14 attendees of the camp to spend some of their precious time there practicing and recording Tsraxcfaubdj, I gave a presentation explaining the tuning behind it, which by that point I had named "Yer". After camp I edited together a video version of that presentation which you can check out here.
The name "Yer" comes from my name, too. I discovered that the tuning supported not just one but two commas. The second of these two I named the Blume comma: 2057:2048, or 11 * 11 * 17 / 2^11). I explain different slicings and dicings of the pitch system (as a Euler-Fokker Genus hypercube and its constituent cubic faces; Combination Product Sets and its constituent tetrahedral tetranies and octahedral hexanies) and break down some families of its 240 available comma pumps (which are zero comma pumps via comma shifts by the comma-wide intervals present in the tuning) and operations to derive variations within them. All the while in the background some pieces composed in Yer accompany my awful voice.
Tsraxcfaubdj was written in a spreadsheet, then painstakingly ported into the Reaper DAW using a retuning VST. The organization and inner workings of the spreadsheet are to me today, several years later now, inscrutable. I found I could not pick up working on it in its form there. So, I decided to recreate it here under the banner of Musical Patterns, covering its behavior with tests, modularizing its concerns, and generally represent it in a logical, unambiguous fashion which will allow to continue to contribute to it henceforth.
I do not have specific plans to extend or revise the piece at this time, but I am aware of avenues I'd like to explore in its vicinity, so you never know.


Home
Location and Hours
About Us
Merchandise
We are open 363 days of the year from 9-5!
Closed Thanksgiving and New years.


This shop is special to customers who seek for special senses. There are scents from all
around the world.
 Check our newest products


Arkansas Museum of Fine Arts (Arkansas Arts Center)
2020 - 2021
Design: Mobile-first responsive website, email campaigns, page layout for member-exclusive magazine
Tech: Figma, Adobe Creative Suite, InVision, HTML, CSS, WordPress
Work Experience:
- Managed launch of the organization's brand new website from the ground up, featuring the organization's first fully responsive design, an integrated searchable and sortable calendar of event listings, and robust SEO.
- Designed and implemented 50+ user-friendly page layouts to date using HTML and CSS to build and customize modules in a WordPress environment.
- Design email marketing campaigns, track week-over-week analytics to measure impact and reach.
- Design page layouts for member-exclusive quarterly print publication, Works.
- Strategic partner with leadership team to advise and plan for the future growth, functionality, and design of AMFA’s online presence through the website, mobile app, and email.
Metova, Inc.
2017 - 2020
Design: Retrowave-style company t-shirt, onboarding mobile app, icon pack for fleet management company, mobile-first responsive websites, Android apps for mobile devices and in-car equipment
Tech: Sketch, Figma, Adobe Creative Suite, Zeplin, InVision, HTML, CSS, WordPress, .NET, Android, Kotlin, XML, Java, SQL, Git
Work Experience:
- Developed process for design team to increase communication and accountability between all stakeholders and project teams from kickoff to delivery.
- Designed mobile app to gamify onboarding process for new hires.
- Designed responsive website for heavy machinery fleet management tracking and scheduling.
Client Industries: Healthcare and Telehealth, Heavy Equiptment Fleet Management, Connected Vehicle Navigation and Entertainment, Internet of Things
Tasha for Greenburgh Campaign
2020 - 2021
Design: Style guide, campaign website, ActBlue page, social media event graphics
Tech: Figma, Adobe Creative Suite, HTML, CSS, SquareSpace
Work Experience:
- Collaborated with the candidate, campaign staff, and other key stakeholders and volunteers to design for this mayoral campaign in upstate New York.
- Designed yard signs, letterhead, and event flyers for all social media platform.
- Developed style guide to share with fellow volunteers.
- Designed and built the ActBlue donations page and SquareSpace site for the campaign.
Indivisible - Little Rock & Central Arkansas
2020 - present
Design: Direct mail postcards
Tech: Figma, Adobe Creative Suite
Work Experience:
- Designed direct mail postcards sent to 10,000 voters, with the goal of highlighting their state lawmaker's voting record in the most recent legislative session.
- Collaborated with local and national stakeholders to determine which districts to engage
- Performed A/B testing to determine the most effective design.
Arkansas Hemp Association
2019
Design: Using the client's existing logo to create the brand identity, I created this web presence from scratch. I pulled colors from the logo to use throughout the site, repeated the circular motif, and found crisp, bright images to reflect the dawn of a new era in agriculture.
Tech: WordPress, CSS, HTML
Goal: To serve as a resource for advocates, growers, processers, and businesses to network and share knowledge, as well as to educate the public about this newly-legalized crop. This website is now defunct, check out select screenshots of page layouts on Figma.
Personal Projects
Election Graphics
2020
Design: Galvanized by the upcoming 2020 election, I created this series of graphics as an outlet for my anxiety and an exploration of creating graphics within the Biden campaign's style guide. I explored typography and illustration, and utilized the campaign's color palette and type guide, in these pieces inspired by a tweet by @jackantonoff (left), a frequent refrain on "Pod Save America" (center), and a candidate illustration (right).
Résumé
2018 - Present
Tech: HTML, CSS
Design: Originally built this as a PDF document, I focused on clean lines, clear separation, and a pop of one of my favorite colors. Although my most recent resume does not follow this format, it remains my favorites for it's strong columns and clear presentation of my skills and experience.
Goal: To recreate my favorite résumé as a responsive, mobile first, accessible website while learning BEM and SMACSS and applying knowledge of CSS flexbox
Paris
2018
Design: This small website is built to be very image-driven in order to encourage the user to explore the site and the city.
Goal: To build a fun little guide to the City of Lights, focusing on accessibility and responsiveness.


UH Game Day: University of Hawaii Rainbow Warriors at UNLV Rebels | Honolulu Star-Advertiser
San Jose State scored on all eight of its drives last week, but still came up short because half its possessions were “held” to field goals. Read more
Mahalo for reading the Honolulu Star-Advertiser!
You're reading a premium story. Read the full story with our Print & Digital Subscription.
Already a subscriber? Log in now to continue reading this story.
Print subscriber but without online access? Activate your Digital Account now.


We sell blockchain!
- empower synergistic infomediaries
- recontextualize cutting-edge models
- deliver customized ROI
- syndicate 24/365 metrics
- embrace world-class schemas
- deploy world-class platforms
- unleash user-centric eyeballs
- whiteboard intuitive e-tailers
- benchmark out-of-the-box paradigms
- generate visionary systems
- transform proactive technologies
- integrate killer markets
- grow viral channels
- mesh extensible action-items


{% extends 'hackathon/base.html' %} {% block head-content %} {% endblock %} {% block body %}
What can I ask about?
Ask about jobs, careers, courses, schools, pay, interview questions. Seriously ask anything you want.
We have experts in each career area (business, retail, computer, legal, education, health care, food services, sales, farming, construction, and more)
Where is it available?
Our HQ is in San Francisco., but we are available across the US.
What does it cost?
Texting is always free. Ask us about our premium services.