Teaching & Services
Teaching Assistant, VG100 Intro to Engineering
@ UM - SJTU JI, Shanghai, China
- Cooperated with other teaching assistants to grade assignments and provided feedback to students.
- Held office hours to help students perform better and learn more efficiently.
- Collected students' ideas and provided them for the instructors to further improve this course.
Vice President
@ UM - SJTU JI Student Union, Shanghai, China
- Took the overall responsibility of JISU and lead all the departments to hold events such as
sports competitions, town hall meeting and career orientation to improve JI and JI students’ life.
- Fostered the communication between the leadership and students of the institute.
Core Member
@ SJTU Student & Alumni Association at UM, Ann Arbor, USA
- Worked with both universities as well as industry partners to provide professional development resources, culture immersion programs, and networking opportunities.
- Helped build a community by holding various activities to strengthen bonds of its members.


from __future__ import print_function, division
from sympy.core.compatibility import range
from sympy.combinatorics.util import _distribute_gens_by_base
from sympy.combinatorics import Permutation
rmul = Permutation.rmul
[docs]def _cmp_perm_lists(first, second):
"""
Compare two lists of permutations as sets.
This is used for testing purposes. Since the array form of a
permutation is currently a list, Permutation is not hashable
and cannot be put into a set.
Examples
========
>>> from sympy.combinatorics.permutations import Permutation
>>> from sympy.combinatorics.testutil import _cmp_perm_lists
>>> a = Permutation([0, 2, 3, 4, 1])
>>> b = Permutation([1, 2, 0, 4, 3])
>>> c = Permutation([3, 4, 0, 1, 2])
>>> ls1 = [a, b, c]
>>> ls2 = [b, c, a]
>>> _cmp_perm_lists(ls1, ls2)
True
"""
return {tuple(a) for a in first} == \
{tuple(a) for a in second}
[docs]def _naive_list_centralizer(self, other, af=False):
from sympy.combinatorics.perm_groups import PermutationGroup
"""
Return a list of elements for the centralizer of a subgroup/set/element.
This is a brute force implementation that goes over all elements of the
group and checks for membership in the centralizer. It is used to
test ``.centralizer()`` from ``sympy.combinatorics.perm_groups``.
Examples
========
>>> from sympy.combinatorics.testutil import _naive_list_centralizer
>>> from sympy.combinatorics.named_groups import DihedralGroup
>>> D = DihedralGroup(4)
>>> _naive_list_centralizer(D, D)
[Permutation([0, 1, 2, 3]), Permutation([2, 3, 0, 1])]
See Also
========
sympy.combinatorics.perm_groups.centralizer
"""
from sympy.combinatorics.permutations import _af_commutes_with
if hasattr(other, 'generators'):
elements = list(self.generate_dimino(af=True))
gens = [x._array_form for x in other.generators]
commutes_with_gens = lambda x: all(_af_commutes_with(x, gen) for gen in gens)
centralizer_list = []
if not af:
for element in elements:
if commutes_with_gens(element):
centralizer_list.append(Permutation._af_new(element))
else:
for element in elements:
if commutes_with_gens(element):
centralizer_list.append(element)
return centralizer_list
elif hasattr(other, 'getitem'):
return _naive_list_centralizer(self, PermutationGroup(other), af)
elif hasattr(other, 'array_form'):
return _naive_list_centralizer(self, PermutationGroup([other]), af)
[docs]def _verify_bsgs(group, base, gens):
"""
Verify the correctness of a base and strong generating set.
This is a naive implementation using the definition of a base and a strong
generating set relative to it. There are other procedures for
verifying a base and strong generating set, but this one will
serve for more robust testing.
Examples
========
>>> from sympy.combinatorics.named_groups import AlternatingGroup
>>> from sympy.combinatorics.testutil import _verify_bsgs
>>> A = AlternatingGroup(4)
>>> A.schreier_sims()
>>> _verify_bsgs(A, A.base, A.strong_gens)
True
See Also
========
sympy.combinatorics.perm_groups.PermutationGroup.schreier_sims
"""
from sympy.combinatorics.perm_groups import PermutationGroup
strong_gens_distr = _distribute_gens_by_base(base, gens)
current_stabilizer = group
for i in range(len(base)):
candidate = PermutationGroup(strong_gens_distr[i])
if current_stabilizer.order() != candidate.order():
return False
current_stabilizer = current_stabilizer.stabilizer(base[i])
if current_stabilizer.order() != 1:
return False
return True
[docs]def _verify_centralizer(group, arg, centr=None):
"""
Verify the centralizer of a group/set/element inside another group.
This is used for testing ``.centralizer()`` from
``sympy.combinatorics.perm_groups``
Examples
========
>>> from sympy.combinatorics.named_groups import (SymmetricGroup,
... AlternatingGroup)
>>> from sympy.combinatorics.perm_groups import PermutationGroup
>>> from sympy.combinatorics.permutations import Permutation
>>> from sympy.combinatorics.testutil import _verify_centralizer
>>> S = SymmetricGroup(5)
>>> A = AlternatingGroup(5)
>>> centr = PermutationGroup([Permutation([0, 1, 2, 3, 4])])
>>> _verify_centralizer(S, A, centr)
True
See Also
========
_naive_list_centralizer,
sympy.combinatorics.perm_groups.PermutationGroup.centralizer,
_cmp_perm_lists
"""
if centr is None:
centr = group.centralizer(arg)
centr_list = list(centr.generate_dimino(af=True))
centr_list_naive = _naive_list_centralizer(group, arg, af=True)
return _cmp_perm_lists(centr_list, centr_list_naive)
[docs]def _verify_normal_closure(group, arg, closure=None):
from sympy.combinatorics.perm_groups import PermutationGroup
"""
Verify the normal closure of a subgroup/subset/element in a group.
This is used to test
sympy.combinatorics.perm_groups.PermutationGroup.normal_closure
Examples
========
>>> from sympy.combinatorics.named_groups import (SymmetricGroup,
... AlternatingGroup)
>>> from sympy.combinatorics.testutil import _verify_normal_closure
>>> S = SymmetricGroup(3)
>>> A = AlternatingGroup(3)
>>> _verify_normal_closure(S, A, closure=A)
True
See Also
========
sympy.combinatorics.perm_groups.PermutationGroup.normal_closure
"""
if closure is None:
closure = group.normal_closure(arg)
conjugates = set()
if hasattr(arg, 'generators'):
subgr_gens = arg.generators
elif hasattr(arg, '__getitem__'):
subgr_gens = arg
elif hasattr(arg, 'array_form'):
subgr_gens = [arg]
for el in group.generate_dimino():
for gen in subgr_gens:
conjugates.add(gen ^ el)
naive_closure = PermutationGroup(list(conjugates))
return closure.is_subgroup(naive_closure)
def canonicalize_naive(g, dummies, sym, *v):
"""
Canonicalize tensor formed by tensors of the different types
g permutation representing the tensor
dummies list of dummy indices
msym symmetry of the metric
v is a list of (base_i, gens_i, n_i, sym_i) for tensors of type `i`
base_i, gens_i BSGS for tensors of this type
n_i number ot tensors of type `i`
sym_i symmetry under exchange of two component tensors of type `i`
None no symmetry
0 commuting
1 anticommuting
Return 0 if the tensor is zero, else return the array form of
the permutation representing the canonical form of the tensor.
Examples
========
>>> from sympy.combinatorics.testutil import canonicalize_naive
>>> from sympy.combinatorics.tensor_can import get_symmetric_group_sgs
>>> from sympy.combinatorics import Permutation, PermutationGroup
>>> g = Permutation([1, 3, 2, 0, 4, 5])
>>> base2, gens2 = get_symmetric_group_sgs(2)
>>> canonicalize_naive(g, [2, 3], 0, (base2, gens2, 2, 0))
[0, 2, 1, 3, 4, 5]
"""
from sympy.combinatorics.perm_groups import PermutationGroup
from sympy.combinatorics.tensor_can import gens_products, dummy_sgs
from sympy.combinatorics.permutations import Permutation, _af_rmul
v1 = []
for i in range(len(v)):
base_i, gens_i, n_i, sym_i = v[i]
v1.append((base_i, gens_i, [[]]*n_i, sym_i))
size, sbase, sgens = gens_products(*v1)
dgens = dummy_sgs(dummies, sym, size-2)
if isinstance(sym, int):
num_types = 1
dummies = [dummies]
sym = [sym]
else:
num_types = len(sym)
dgens = []
for i in range(num_types):
dgens.extend(dummy_sgs(dummies[i], sym[i], size - 2))
S = PermutationGroup(sgens)
D = PermutationGroup([Permutation(x) for x in dgens])
dlist = list(D.generate(af=True))
g = g.array_form
st = set()
for s in S.generate(af=True):
h = _af_rmul(g, s)
for d in dlist:
q = tuple(_af_rmul(d, h))
st.add(q)
a = list(st)
a.sort()
prev = (0,)*size
for h in a:
if h[:-2] == prev[:-2]:
if h[-1] != prev[-1]:
return 0
prev = h
return list(a[0])
def graph_certificate(gr):
"""
Return a certificate for the graph
gr adjacency list
The graph is assumed to be unoriented and without
external lines.
Associate to each vertex of the graph a symmetric tensor with
number of indices equal to the degree of the vertex; indices
are contracted when they correspond to the same line of the graph.
The canonical form of the tensor gives a certificate for the graph.
This is not an efficient algorithm to get the certificate of a graph.
Examples
========
>>> from sympy.combinatorics.testutil import graph_certificate
>>> gr1 = {0:[1, 2, 3, 5], 1:[0, 2, 4], 2:[0, 1, 3, 4], 3:[0, 2, 4], 4:[1, 2, 3, 5], 5:[0, 4]}
>>> gr2 = {0:[1, 5], 1:[0, 2, 3, 4], 2:[1, 3, 5], 3:[1, 2, 4, 5], 4:[1, 3, 5], 5:[0, 2, 3, 4]}
>>> c1 = graph_certificate(gr1)
>>> c2 = graph_certificate(gr2)
>>> c1
[0, 2, 4, 6, 1, 8, 10, 12, 3, 14, 16, 18, 5, 9, 15, 7, 11, 17, 13, 19, 20, 21]
>>> c1 == c2
True
"""
from sympy.combinatorics.permutations import _af_invert
from sympy.combinatorics.tensor_can import get_symmetric_group_sgs, canonicalize
items = list(gr.items())
items.sort(key=lambda x: len(x[1]), reverse=True)
pvert = [x[0] for x in items]
pvert = _af_invert(pvert)
# the indices of the tensor are twice the number of lines of the graph
num_indices = 0
for v, neigh in items:
num_indices += len(neigh)
# associate to each vertex its indices; for each line
# between two vertices assign the
# even index to the vertex which comes first in items,
# the odd index to the other vertex
vertices = [[] for i in items]
i = 0
for v, neigh in items:
for v2 in neigh:
if pvert[v] < pvert[v2]:
vertices[pvert[v]].append(i)
vertices[pvert[v2]].append(i+1)
i += 2
g = []
for v in vertices:
g.extend(v)
assert len(g) == num_indices
g += [num_indices, num_indices + 1]
size = num_indices + 2
assert sorted(g) == list(range(size))
g = Permutation(g)
vlen = [0]*(len(vertices[0])+1)
for neigh in vertices:
vlen[len(neigh)] += 1
v = []
for i in range(len(vlen)):
n = vlen[i]
if n:
base, gens = get_symmetric_group_sgs(i)
v.append((base, gens, n, 0))
v.reverse()
dummies = list(range(num_indices))
can = canonicalize(g, dummies, 0, *v)
return can


|
tesseract
5.0.0-alpha-619-ge9db
|
Go to the source code of this file.
Classes | |
| class | PGEventHandler |
Namespaces | |
| tesseract | |
Variables | |
| BLOCK_LIST * | current_block_list |
| char * | editor_image_win_name = "EditorImage" |
| int | editor_image_xpos = 590 |
| int | editor_image_ypos = 10 |
| int | editor_image_height = 680 |
| int | editor_image_width = 655 |
| int | editor_image_word_bb_color = BLUE |
| int | editor_image_blob_bb_color = YELLOW |
| int | editor_image_text_color = WHITE |
| char * | editor_dbwin_name = "EditorDBWin" |
| int | editor_dbwin_xpos = 50 |
| int | editor_dbwin_ypos = 500 |
| int | editor_dbwin_height = 24 |
| int | editor_dbwin_width = 80 |
| char * | editor_word_name = "BlnWords" |
| int | editor_word_xpos = 60 |
| int | editor_word_ypos = 510 |
| int | editor_word_height = 240 |
| int | editor_word_width = 655 |
| double | editor_smd_scale_factor = 1.0 |
| BLOCK_LIST* current_block_list |
| int editor_dbwin_height = 24 |
"Editor debug window height"
Definition at line 135 of file pgedit.cpp.
| char* editor_dbwin_name = "EditorDBWin" |
"Editor debug window name"
Definition at line 132 of file pgedit.cpp.
| int editor_dbwin_width = 80 |
"Editor debug window width"
Definition at line 136 of file pgedit.cpp.
| int editor_dbwin_xpos = 50 |
"Editor debug window X Pos"
Definition at line 133 of file pgedit.cpp.
| int editor_dbwin_ypos = 500 |
"Editor debug window Y Pos"
Definition at line 134 of file pgedit.cpp.
| int editor_image_blob_bb_color = YELLOW |
"Blob bounding box colour"
Definition at line 127 of file pgedit.cpp.
| int editor_image_height = 680 |
"Editor image height"
| int editor_image_text_color = WHITE |
"Correct text colour"
Definition at line 129 of file pgedit.cpp.
| int editor_image_width = 655 |
"Editor image width"
| char* editor_image_win_name = "EditorImage" |
"Editor image window name"
Definition at line 120 of file pgedit.cpp.
| int editor_image_word_bb_color = BLUE |
"Word bounding box colour"
Definition at line 125 of file pgedit.cpp.
| int editor_image_xpos = 590 |
"Editor image X Pos"
Definition at line 121 of file pgedit.cpp.
| int editor_image_ypos = 10 |
"Editor image Y Pos"
Definition at line 122 of file pgedit.cpp.
| double editor_smd_scale_factor = 1.0 |
"Scaling for smd image"
| int editor_word_height = 240 |
"Word window height"
Definition at line 141 of file pgedit.cpp.
| char* editor_word_name = "BlnWords" |
| int editor_word_width = 655 |
"Word window width"
Definition at line 142 of file pgedit.cpp.
| int editor_word_xpos = 60 |
"Word window X Pos"
Definition at line 139 of file pgedit.cpp.
| int editor_word_ypos = 510 |
"Word window Y Pos"
Definition at line 140 of file pgedit.cpp.


2018 West Regional Conference
University of California, Santa Barbara
February 10, 2018 | Corwin Pavilion
About SASE Regionals
The 2018 SASE West Regional Conference is an event which invites company speakers to host professional development workshops and provides networking opportunities to members across the West Region.
The 2018 West Regional Conference theme — "Empowering You to Act" — aims to inspire students to motivate themselves and continue succeeding to their maximum potential. The event will not only prepare students for success for their careers, but also provide a hand to the community through local charities and community service.
Schedule
Concurrently
Accommodations
SASE UCSB has partnered with Kimpton Goodland to provide accommodations for you during your stay. We have pre-negotiated a rate of $159 per night* for the nights of February 9th and 10th. Includes complimentary wifi, parking, and coffee/tea service from 6-10 AM. To book, please either call the number listed below or use the link provided to book online. When booking over the phone, reference either SASE UCSB or booking code E99.
1-800-KIMPTON Book Online* Excludes taxes and other fees. This rate is good through January 19, 2018, 5 PM PST (or until 50 reservations have been made).
Transportation / Parking
Our team is hard at work sorting these details out. Please check back again soon for more information.
Facebook (SASEUCSB)
Instagram (@saseucsb)
Copyright © 2017 SASE UCSB.
Website created by Jayleen Li, Alexander Wu, & Ryan Tse


Document name:
index.bhtml
Conditional:
This is the main page.
Variable value:
Good!!!
Unicode:
Korea (한국)
| Ukraine (Україна)
Document name:
index.bhtml
Conditional:
This is the main page.
Variable value:
Good!!!
Unicode:
Korea (한국)
| Ukraine (Україна)


St-Activities Table
| Name | Type | Date | Distance | Time | Avg-Speed | Power | Normalized-Power |
|---|
Activity Data for STomassetti
List of all activities for the last year from Strava for the user: STomassetti
| Name | Type | Date | Distance | Time | Avg-Speed | Power | Normalized-Power |
|---|


A simple interface to build designs using the package 'DeclareDesign'. In one line of code, users can specify the parameters of individual designs and diagnose their properties. The designers can also be used to compare performance of a given design across a range of combinations of parameters, such as effect size, sample size, and assignment probabilities.
| Version: | 0.1.2 |
| Depends: | DeclareDesign (≥ 0.12.0), R (≥ 3.4.0), randomizr (≥ 0.16.1), fabricatr (≥ 0.6.0), estimatr (≥ 0.14.0) |
| Imports: | generics, rlang |
| Suggests: | testthat |
| Published: | 2018-11-12 |
| Author: | Graeme Blair [aut], Jasper Cooper [aut, cre], Alexander Coppock [aut], Macartan Humphreys [aut], Clara Bicalho [aut], Neal Fultz [aut], Lily Medina [aut] |
| Maintainer: | Jasper Cooper <jjc2247 at columbia.edu> |
| License: | MIT + file LICENSE |
| URL: | https://declaredesign.org/library/, https://github.com/DeclareDesign/DesignLibrary |
| NeedsCompilation: | no |
| Materials: | NEWS |
| CRAN checks: | DesignLibrary results |
| Reference manual: | DesignLibrary.pdf |
| Package source: | DesignLibrary_0.1.2.tar.gz |
| Windows binaries: | r-devel: DesignLibrary_0.1.2.zip, r-release: DesignLibrary_0.1.2.zip, r-oldrel: DesignLibrary_0.1.2.zip |
| OS X binaries: | r-release: DesignLibrary_0.1.2.tgz, r-oldrel: DesignLibrary_0.1.2.tgz |
| Old sources: | DesignLibrary archive |
| Reverse suggests: | DeclareDesign |
Please use the canonical form https://CRAN.R-project.org/package=DesignLibrary to link to this page.


I used to spend countless hours during highschool browsing car build threads on JDMST and ClubITR and browse various car blogs like JDMLifestyle or Justin Fox’s personal blog. These websites were so prevalent in the 2009~2013 era of the internet and I thought they were invaluable in cataloguing information - something that’s severely lacking in the current era of social media (Facebook is a terrible search engine and not everything is a Youtube Video). Almost all the image guides on OzHonda are now dead, and many guides suffer from link rot.
So I thought I should start a blog as well, as a way to keep track of the modifications and to log the cars’ history and subsequent evolution over time that I could look back on - or pass onto the next owner.
-
There and Back Again
-
Dyno Night
-
Small steps here and there
-
Final touches before leaving home
-
Intake & Exhaust Manifold, Shifter setup
-
Wheels
-
Charge Harness
-
Power Steering System
-
Harness Pt. 2- Conversion Harness, and Fuel System
-
Harness Pt. 1 - K20 Engine Harness Routing
-
Heater Hoses
-
Retaping the loom
-
Heart Transplant - K24 Install
-
Flywheel, Clutch, Gearbox
-
Installing the Motor Mounts
-
Prepping the Engine Bay
-
K24 Sneak Peek
-
Removing the B18B1
-
Compression Testing the B18B1
-
Fuel Pump - Walbro 255 & removing the immobiliser
-
Coilovers - BC Golds
-
Refreshing the front brakes
-
Integra Acquired


Toggle navigation
Resume
Skills
Cornel Janssen
Portfolio
Contact
Contact Information
name:
Email:
Content:
Send Email


Welcome to Ovatik Technology
We are the energetic, dynamic scholars in the IT world expertise its services in multi domains specially Java, Android, i-phone, Cloud Computing, .Net, PHP. Our journey towards the technological world started in the year 2011 and incorporated as Flyingedge soln (p) ltd.
We are a team of professionals committed to establishing long-term relationships with our Clients and Business Partners. Compelled to have an in-depth understanding of our client’s needs and concerns, we provide total Business Solutions with an uncompromising level of excellence and integrity. The on time delivery and on budget execution has kept reliable trust on our clients. It primarily focuses on Software Development so as to flourish clients beyond their expectations.
Our Location
services..
that we are providing
UI/UX Design
User interfaces (UI) and User experience (UX) are the key features of web development. we especially care for website development user interface wise and make it more comfortable for users We focus on Story writing Interface design Web analytics Web animation and graphics dashboard design and development Manual and automated testing Best product development
Mobile Web Development
Mobile web development refers to access the internet through mobile. Traditionally users access internet through fixed-line services on large-screen laptops and desktop computers. But now-a-days users accessing internet by portable and wireless devices like smart phone, tablets. Mobile Web access today still suffers from interoperability and usability problems. internet through portable and wireless devices
cloud computing
Cloud computing is the use of computing resources (hardware and software) that are delivered as a service over a network (typically the Internet). The name comes from the common use of a cloud-shaped symbol as an abstraction for the complex infrastructure it contains in system diagrams. Cloud computing entrusts remote services with a user’s data, software and computation
Mobile Web Development
SEO stands for search motor optimization. Seek motor Optimization is among the most money-making manners of trading. A site correctly optimized furthermore nearly like likely will be validated with the increased grades. This means that it should function in all the navigators of W3C-compliant, significance that your site can be looked by the utmost potential number of tourists.


What we do
At Chef Portfolio, we bring chef closer to their clients by providing an online platform. We do this by providing cool templates for the chefs to share their recipes and the how-to.
At Chef Portfolio, we are passionate about food and appreciate others who share same passion. Food is memories, food is health and health is life.
As a chef, you'll create an account, upload recipes and how it is made and share it with friends and fans. As a food lover, you can browse through all the recipes and check how it is made.


ggplot2
: Part ISlides by Roger D. Peng https://www.coursera.org/specializations/jhu-data-science
install.packages()
“In brief, the grammar tells us that a statistical graphic is a mapping from data to aesthetic attributes (colour, shape, size) of geometric objects (points, lines, bars). The plot may also contain statistical transformations of the data and is drawn on a specific coordinate system”
plot
function (or similar)text
, lines
, points
, axis
)xyplot
, bwplot
, etc.)qplot()
plot
function in base graphics systemqplot()
qplot()
hides what goes on underneath, which is okay for most operationsggplot()
is the core function and very flexible for doing things qplot()
cannot dolibrary(ggplot2)
str(mpg)
'data.frame': 234 obs. of 11 variables:
$ manufacturer: Factor w/ 15 levels "audi","chevrolet",..: 1 1 1 1 1 1 1 1 1 1 ...
$ model : Factor w/ 38 levels "4runner 4wd",..: 2 2 2 2 2 2 2 3 3 3 ...
$ displ : num 1.8 1.8 2 2 2.8 2.8 3.1 1.8 1.8 2 ...
$ year : int 1999 1999 2008 2008 1999 1999 2008 1999 1999 2008 ...
$ cyl : int 4 4 4 4 6 6 6 4 4 4 ...
$ trans : Factor w/ 10 levels "auto(av)","auto(l3)",..: 4 9 10 1 4 9 1 9 4 10 ...
$ drv : Factor w/ 3 levels "4","f","r": 2 2 2 2 2 2 2 1 1 1 ...
$ cty : int 18 21 20 21 16 18 18 18 16 20 ...
$ hwy : int 29 29 31 30 26 26 27 26 25 28 ...
$ fl : Factor w/ 5 levels "c","d","e","p",..: 4 4 4 4 4 4 4 4 4 4 ...
$ class : Factor w/ 7 levels "2seater","compact",..: 2 2 2 2 2 2 2 2 2 2 ...
qplot(displ, hwy, data = mpg)
qplot(displ, hwy, data = mpg, color = drv)
qplot(displ, hwy, data = mpg, geom = c("point", "smooth"))
qplot(hwy, data = mpg, fill = drv)
qplot(displ, hwy, data = mpg, facets = . ~ drv)
qplot(hwy, data = mpg, facets = drv ~ ., binwidth = 2)
str(maacs)
'data.frame': 750 obs. of 5 variables:
$ id : int 1 2 3 4 5 6 7 8 9 10 ...
$ eno : num 141 124 126 164 99 68 41 50 12 30 ...
$ duBedMusM: num 2423 2793 3055 775 1634 ...
$ pm25 : num 15.6 34.4 39 33.2 27.1 ...
$ mopos : Factor w/ 2 levels "no","yes": 2 2 2 2 2 2 2 2 2 2 ...
qplot(log(eno), data = maacs)
qplot(log(eno), data = maacs, fill = mopos)
qplot(log(eno), data = maacs, geom = "density")
qplot(log(eno), data = maacs, geom = "density", color = mopos)
qplot(log(pm25), log(eno), data = maacs)
qplot(log(pm25), log(eno), data = maacs, shape = mopos)
qplot(log(pm25), log(eno), data = maacs, color = mopos)
qplot(log(pm25), log(eno), data = maacs, color = mopos,
geom = c("point", "smooth"), method = "lm")
qplot(log(pm25), log(eno), data = maacs,
geom = c("point", "smooth"),
method = "lm", facets = . ~ mopos)
qplot()
function is the analog to plot()
but with many built-in featuresinstall.packages('swirl')
load library('swirl')
run install_from_swirl("Exploratory Data Analysis")
Enter swirl: swirl()
Select “1: Exploratory Data Analysis”
and then “8: GGPlot2 Part1”


Edit order
Information
Product name
Product Size
Quantity
Status
Pending
Shipping
Completed
Cancel
Send
Cancel


Pit Test Coverage Report
Package Summary
org.apache.commons.imaging.formats.tiff.datareaders
Number of Classes
Line Coverage
Mutation Coverage
3
73%
199/273
31%
95/305
Breakdown by Class
Name
Line Coverage
Mutation Coverage
DataReader.java
85%
60/71
70%
38/54
DataReaderStrips.java
90%
90/100
38%
46/122
DataReaderTiled.java
48%
49/102
9%
11/129
Report generated by
PIT
1.3.2


{% extends "base.html" %} {% block container %}
Mute Unmute Click to join your conference
Note: this room is only available for 24 hours upon creation for security reasons. You can create a new room here.


My goal as a specialist in GIS and Archaeology is to use the latest developments in GIS, remote sensing, 3D scanning, photogrammetry, and similar technologies to help preserve our shared heritage and cultural resources from the Lesser Antilles to the Caribbean and around the world. My most recent project was in 2018 when I did a 9-month survey of sites in Martinique and St. Lucia containing pre-Historic cupules, petroglyphs, and historic engravings, making the first-ever database of 3D photogrammetric models, GPS coordinates, photos, and measurements of these sites.
My other research projects include methods for the digitization and vectorization of archaeological records and maps from before the advent of modern computer technology, predictive archaeological modeling to discover new archaeological sites, studying human influence and error in archaeological excavation, experimental archaeology, designing and developing inexpensive and easy-to-use lidar scanners to make the 3D digital preservation of culturally relevant sites accessible to all, and the translation of poetry from the Lesser Antilles for anglophone readers.


-regtest is very much needed. it uses the ~/.komodo/regtest data. without -regtest it doesn't know it's in regtest mode. regtest mode is handy for app developers because app/front-end developers are not sys.admins or backend architect-types.
yes regtest mode is needed for the python integration testing duke is working on and also for enabling app developers & students to "start kmd and call rpc from their apps in less than 10 minutes without needing to install a full blockchain node on their workstation AND most importantly being able to generate blocks at their own devleopment pace"
s/seems to break/breaks. it breaks the generation of coins in regtest mode - so being broken cannot test AC smart contracts like CCfaucet because no coins to transfer to faucet.
to quote @dukeleto from about 5 hours earlier
we can test very complex stuff with the Python test framework. There is also C++ unit tests, but those are kind of annoying to write and annoying to run and therefore less pragmatic for us. We will get more ROI from Python tests
for instance, in the framework, there is already functions to call so you can spin up N nodes and mine certain amounts of blocks on each and have them be in a very particular state, just before your test runs, things like that
and
C++ are "unit tests" where Python are called "QA" tests which some people would call "integration" tests
because they test multiple things at once, not just individual functions. the line is blurry
it's easy to describe complex stuff in Python, it's flexible, and easy to write + maintain tests in it. It's considered an additional layer on the c++ unit tests. The c++ unit tests would be like "let's test the foo RPC function with 99 different kinds of function arguments to do the right thing every time"
where Python is like "make sure this bug doesn't happen when this complex situation arises"
hope that helps a bit why regtest mode is needed for other type of dev


Gesture-Based Audio Mixing wearable technology
Our team was always interested in new ways to interact with the environment. We started off with the idea to use a tactile sensor to read the texture of a surface that a user was touching in order to produce a sound. After doing some research, we realized that sensing surface texture was still a relatively new technology and it is not easy for us to get hands on an tactile sensor. Thus we changed our focus away from tactile and more towards a dancing or gesture focused sound creation device.
During our preliminary research we found products which did similar things, for example the MYO Gesture Control Armband, which was used on stage by DJ Armin Van Buuren, as well as Disney Fantasia: Music Evolved, an interaction performance for Fantasia Kinect game.
Drawing inspirations from the two, We decided to design new ways for DJ to interact with music when performing on stage.
Our final prototype uses a MPU6050 sensor with Arduino. Accelerometer data was collected and analysed in order to determine the user's gesture, therefore changes the states in the program to manipulate music.
Process of figuring out the algorithm
We followed a tutorial that walk us through the installation and required libraries of the MPU-6050 sensor, and demostrates the sensor by visualization in Processing. We used this visualization to make sense of the data, as the raw output of MPU-6050 is quite complicated. After some testing, we decided to use "readable_real_accel", the acceleration components with gravity removed, so that we can minimize the interference of gravity on our gesture regocnition.
From there we began experimenting with the data to test the limits of the sensors and eventually found a method we felt accurately detected when a user has moved the device a direction. By taking the aggregate accelerometer data and summing it we have a strong indication of when the user has made a significant movement. This method also allows us to adjust the threshold for detection "significant" motion to adjust for a user's personal preference. We then take the largest absolute value of the 3 axes to calculate which direction the user is currently moving.
This method fails to adjust for a constant gravity (which the accelerometer does read) which can switch axes as the user turns their arm. The tradeoff is that it is extremely easy to implement and saves us a lot of development time otherwise spent modeling the users arm to make decisions off of or implementing and training a machine learning algorithm.
Using state machines
Once we had the program reading in user movements consistently we began setting it to buffer in each user movement and search a dictionary of known combinations for a match. When a match is found the program either enters the state for that key (for continuous operations such as changing volume) or executes the action directly (for binary actions like play and pause).
Currently the system exists such that a base music track plays and there are 5 options for tracks you can add to it. The aggregate of what is currently playing is called the "mix" and acts as the base state when you load into the program. Users can select a track or the whole mix and then select which action they wish to perform. For the continuous modulations users select the action they wish to perform and then use a back and forth or up and down motion much like a slider to select the desired value of the variable. For further details on which motions do what, see the Gesture Map documentation provided below.
We designed gestures for each of the tracks and modes. Each gesture is identified by 3 movements, as indicated by the arrows shown below.
The gestures are designed to mimic the way the numbers are written. See below for the gestures to switch between tracks:
The gestures to enter different mixing modes are designed in a similar fashion: the gesture for pan mode and volume mode are basically writting the letter "n" for "pan" and "u" for "volume"; the gesture for scratch mode is designed to mimic the back and forth horizontal action of scratching.
The gestures are all mapped to their corresnponding modes. However due to time constraints, we were only able to finish 3 out of 8 mixing modes as shown above.
[1] K. M, "Myo gesture control Armband," in MYO, 2013. [Online]. Available: www.myo.com/. Accessed: Jul. 25, 2016.
[2] H. Morita, S. Hashimoto, and S. Ohteru, "A computer music system that follows a human conductor," Computer, vol. 24, no. 7, pp. 44–53, Jul. 1991.
[3] admin, "Understanding audio effects: An overview of types and uses," in Mixing and Mastering, Dubspot Blog, 2016. [Online]. Available: blog.dubspot.com/understanding-audio-effects-an-overview/. Accessed: Jul. 25, 2016.
[3] Jason, "Arduino MPU 6050 - best IMU sensor Tutorial," in Arduino projects, DIY Hacking, 2014. [Online]. Available: diyhacking.com/arduino-mpu-6050-imu-sensor-tutorial/. Accessed: Jul. 25, 2016.
[4] J. Tidey, "In the studio: Audio effects explained (includes audio samples)," 2014. [Online]. Available: www.prosoundweb.com/article/in_the_studio_audio_effects_explained_includes_audio_samples/. Accessed: Jul. 25, 2016.
[5] Arduino, "Arduino playground - MPU-6050," in Arduino Playground, 2016. [Online]. Available: playground.arduino.cc/Main/MPU-6050. Accessed: Jul. 25, 2016.
Libraries / Software Used:Arduino - www.arduino.cc
Processing - processing.org
Minim - code.compartmental.net/tools/minim
I2C - github.com/jrowberg/i2cdevlib
VirtualDJ - www.virtualdj.com


I have been busting my chops at Coding Dojo learning HTML, CSS, JQuery, JavaScript, the full stack baby!
Seriously. You say you need a flashy design or do you want Meat and Potatoes? You need a database hooked up to the site?

HTML, CSS, JavaScript, JQuery PHP, Python C#, Java, C++ T-SQL, SQL Server
Case Western Reserve University, Master of Science in MIS
Cleveland, OH June 2000
Boston University, Bachelor of Arts in Economics
Boston, MA June 1996
2012-2015
Self Employed
Technical Consultant
2006-2012
US Navy
Enlisted Electrician
2004-2006
Cross Country TravCorps
Financial Analyst
2002-2004
Smith Barney
Financial Analyst
2000-2002
Me.Net
Business Analyst
1998-1999
Mass Dept of Revenue
Web Developer


Huawei’s new MateBook D laptops come with AMD or Intel + NVIDIA chips (and Windows 10)
by Brad LinderHuawei’s latest laptops come with a choice of 14 or 15 inch displays, Intel or AMD chips, and prices that start at around $570.
They also come with Windows 10. A year or so ago that wouldn’t have been a question. But US trade restrictions had put that in question… until a few days ago when the US government gave Microsoft a license to sell software to Huawei.
So the new Huawei MateBook D 14 and MateBook D 15 will indeed both ship with Windows 10 when they go on sale in China December 12th. There’s no word on if or when they’ll be available for purchase in the US or other markets.
The Huawei MateBook D 14 measures about 0.6 inches thick, weighs about 3 pounds, while the 15.6 inch model is 0.7 inches thick and 4.2 pounds.
Oddly the smaller model has a bigger battery (56 Wh vs 42 Wh), possibly to help keep the size down.
Other features are pretty much the same on both models. They both feature 1920 x 1080 pixel, 250-nit matte IPS displays with slim bezels, pop-up webcams that are hidden in the backlit keyboard, a fingerprint sensor in the power button, and stereo 2W speaker.s
Both support 802.11ac WiFI and Bluetooth 5.0 and both feature ports that include:
- 1 x USB 3.0 Type-A
- 1 x USB 2.0 Type-A
- 1 x USB Type-C
- 1 x HDMI
- 1 x 3.5mm audio
Huawei will offer the following configuration options for both the MateBook D 14 and the MateBook D 15:
- Intel Core i5-10210U/NVIDIA GeForce MX 250/8GB RAM/256GB SSD + 1TB HDD
- Intel Core i5-10210U/NVIDIA GeForce MX 250/16GB RAM/256GB SSD + 1TB HDD
- Intel Core i7-10510U/NVIDIA GeForce MX 250/8GB RAM/256GB SSD + 1TB HDD
- AMD Ryzen 5 3500U/8GB RAM/512GB SSD
- AMD Ryzen 5 3500U/16GB RAM/512GB SSD
Huawei MateBook D14
Huawei MateBook D15
via GizmoChina, GSM Arena, and MySmartPrice


Toggle navigation
Home
(current)
Calendar
Modules
Goals and Resources
Exercises
Studios
Labs
Extensions
Videos
No videos


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/Strong.20Induction.html ---
Does anyone know how to use strong induction on a term that does not appear in the goal? For example, given variable {P : list ℕ → Prop}
, I want to prove that ∀ (l : list ℕ), P l
. Here are some failed attempts:
lemma needs_induction (l : list ℕ) : P l := begin induction l.length, -- failed to find expression in the target sorry end lemma needs_induction (l : list ℕ) : P l := @nat.strong_induction_on P (l.length) sorry -- type mismatch lemma needs_induction_hack (l : list ℕ) : (λ n, n = l.length → P l) l.length := nat.strong_induction_on (l.length) begin assume n IH n_eq_length, -- l is not generalised in IH sorry end lemma needs_induction_fix (l : list ℕ) : P l := needs_induction_hack l rfl
One way is to prove forall n l (h : l.length = n), P l
Then apply it to _ l rfl
You can do this in tactic mode using generalize e : l.length = n, induction n generalizing l
You can also use the equation compiler or well_founded.fix
variable {P : list ℕ → Prop} lemma needs_induction : ∀ (l : list ℕ), P l | l := sorry using_well_founded { rel_tac := λ _ _, `[exact ⟨_, measure_wf list.length⟩] } lemma needs_induction₂ (l : list ℕ) : P l := well_founded.fix (measure_wf list.length) _ l
Cool, thank you all! well_founded.fix
is the thing I was looking for - the trick by Mario cannot be done with strong induction, or am I wrong?
lemma needs_induction (l : list ℕ) : P l := begin generalize hn : l.length = n, induction n using nat.strong_induction_on generalizing l, end
That seems pretty hard to figure out. Is this documented somewhere? Can you name the inductions variables and assumptions?
yes, in the usual way (with
)
I couldn't get it to work
I don't use the using
clause very often because it usually fails
there is an order to the clauses, try reordering them if there is a parse error
Indeed, I manage to find the correct order by looking at the tactic definition...
that works too
For the record, the order is "using" then "with" then "generalizing"
We need to invent a mnemonic
U Won't Get it right
It's tempting to say we need a tactic to do that (and the obvious beta reduction in the induction hypothesis), but it's not so easy to see what would be the general pattern...
There is an equality hypothesis in cases
, but it is deliberately omitted in induction
because it's usually the wrong thing
Are you replying to something here?
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC


Leafs tie can to Babcock
by Wayne MooreMike Babcock is out as head coach of the Toronto Maple Leafs.
The firing was announced Wednesday afternoon by team president Brendan Shanahan.
Babcock lasted just 23 games into a season of high hopes for a Leafs team expected to challenge for a Stanley Cup.
Instead, the club has stumbled, losing six straight. they are fifth in the Atlantic Division with a pedestrian 9-10-4 record.
"Today, we made the decision to relieve Mike Babcock of his coaching duties," said Shanahan is a news release.
"Over parts of the last five seasons, Mike has played an integral part in changing the direction of our franchise. Mike's commitment and tireless work ethic has put our organization in a better place, and we are extremely grateful and appreciative of the foundation he has helped us build here."
Babcock was hired in May of 2015. During his four plus seasons, the Leafs amassed a record of 173-133-44.
The team made the playoffs the past three seasons, but failed to get out of the first round each time.
Toronto Marlies head coach Sheldon Keefe will take over the head coaching reigns.
The Leafs are in the midst of a western road trip that still has stops in Arizona Thursday and Colorado Saturday.


--- layout: default ---
I am a product designer at Industry Dive in Washington, DC, while pursuing a Master of Human Computer Interaction at Iowa State University. In my free time, I peruse CodePen, eat under the guise of a food photography hobby and specialize in the UX of nachos. Intro tagline by IDEO, found in Don Norman's "The Design of Everyday Things." Reach out at jordane.branch@gmail.com!


opencl.get_platforms()
Returns a sequence with the available platforms.
platform:get_info(name)
Queries information about the platform.
name
can be any of the following, in which case the function returns:
platform:get_devices([device_type])
Returns a sequence of devices available on the platform.
device_type
can be one or a sequence of the following:
If device_type
is omitted, the function returns all devices not of type "custom".
device:create_sub_devices(name, value)
Partitions the compute units of the device and returns a sequence of sub-devices.
name
specifies the partition type, where value
specifies
This function is available with OpenCL 1.2.
device:get_info(name)
Queries information about the device.
name
can be any of the following, in which case the function returns:
__constant
qualifier;char
vector;short
vector;int
vector;long
vector;float
vector;double
vector;half
vector;char
vector;short
vector;int
vector;long
vector;float
vector;double
vector;half
vector;opencl.create_context(devices)
Creates and returns a context given a sequence of devices.
context:get_info(name)
Queries information about the context.
name
can be any of the following, in which case the function returns:
context:create_buffer([flags, ]size[, host_ptr])
Creates and returns a buffer object of the given size in bytes.
flags
can be one or a sequence of the following:
host_ptr
;host_ptr
;mem:create_sub_buffer([flags, ]create_type, create_info)
Creates and returns a buffer object from an existing buffer object.
create_type
can be one of the following:
"region": creates a sub-buffer from a region of the given buffer.
create_info
specifies a sequence with the origin and size of the region in bytes.
This function is available with OpenCL 1.1.
mem:get_info(name)
Queries information about the memory object.
name
can be any of the following, in which case the function returns:
context:create_program_with_source(source)
Creates and returns a program from source code.
source
specifies a string that contains the OpenCL C source code.
program:build([[devices, ]options])
Compiles and links an executable from program source or binary. An optional argument devices
specifies a sequence of devices that the program is built for; otherwise, if devices
is omitted, the program is built for all devices in the context. A second, optional argument options
specifies a string that contains compiler options.
program:get_info(name)
Queries information about the program.
name
can be any of the following, in which case the function returns:
program:get_build_info(device, name)
Query build information for a device about the program.
name
can be any of the following, in which case the function returns:
program:create_kernel(name)
Returns a kernel object for the kernel with the given name.
program:create_kernels_in_program()
Returns a sequence of kernel objects in the program.
kernel:set_arg(index, [size, ]value)
Sets the value of the kernel argument at the given 0-based index
.
For __global
or __constant
arguments, value
is a memory object, or nil.
For arguments of type sampler_t
, value
specifies a sampler object.
For __local
arguments, size
specifies the amount of local memory in bytes.
For other arguments, value
is a non-scalar C data object that contains size
bytes.
kernel:get_info(name)
Queries information about the kernel.
name
can be any of the following, in which case the function returns:
kernel:get_arg_info(index, name)
Queries information about the kernel argument at the given 0-based index
.
name
can be any of the following, in which case the function returns:
This function is available with OpenCL 1.2.
kernel:get_work_group_info([device, ]name)
Query work group information for a device about the kernel.
device
may be omitted if the kernel is associated with a single device.
name
can be any of the following, in which case the function returns:
context:create_command_queue(device[, properties])
Creates and returns a command queue on the given device.
properties
can be one or a sequence of the following:
queue:get_info(name)
Queries information about the command queue.
name
can be any of the following, in which case the function returns:
queue:enqueue_ndrange_kernel(kernel, global_offset, global_size[, local_size[, events]])
Enqueues a command that executes a kernel, and returns an event object for the command.
global_size
is a sequence that specifies the number of global work items for each dimension. global_offset
is a sequence that specifies the corresponding offsets of the global IDs; or nil, in which case the offsets default to {0, …, 0}.
local_size
is a sequences that specifies the number of work items per work-group for each dimension; or nil, in which case the work-group size is chosen by the implementation.
If events
is specified, the command is executed after the given events have completed.
queue:enqueue_map_buffer(buffer, blocking, flags[, offset, size[, events]])
Enqueues a command that maps a region from a buffer object into host memory, and returns a pointer to the mapped memory region and an event object for the command. If blocking
is true, the function waits for the command to complete; otherwise, if false, the function returns immediately. The command maps the buffer region specified by offset
and size
in bytes (default values are 0 and the size of the buffer).
flags
can be one or a sequence of the following:
If events
is specified, the command is executed after the given events have completed.
queue:enqueue_unmap_mem_object(mem, ptr[, events])
Enqueues a command that unmaps a mapped memory region for the given memory object, and returns an event object for the command.
If events
is specified, the command is executed after the given events have completed.
queue:enqueue_read_buffer(buffer, blocking, [offset, size,] ptr[, events])
Enqueues a command that reads from a buffer object to host memory, and returns an event object for the command. If blocking
is true, the function waits for the command to complete; otherwise, if false, the function returns immediately. The command reads from the buffer region specified by offset
and size
in bytes (default values are 0 and the size of the buffer). The command writes to the host memory region specified by ptr
.
If events
is specified, the command is executed after the given events have completed.
queue:enqueue_write_buffer(buffer, blocking, [offset, size,] ptr[, events])
Enqueues a command that writes to a buffer object from host memory, and returns an event object for the command. If blocking
is true, the function waits for the command to complete; otherwise, if false, the function returns immediately. The command writes to the buffer region specified by offset
and size
in bytes (default values are 0 and the size of the buffer). The command reads from the host memory region specified by ptr
.
If events
is specified, the command is executed after the given events have completed.
queue:enqueue_copy_buffer(src_buffer, dst_buffer[, src_offset, dst_offset, size[, events]])
Enqueues a command that copies from a source buffer to a destination buffer, and returns an event object for the command. The command copies size
bytes from the source buffer region specified by src_offset
in bytes to the destination buffer region specified by dst_offset
in bytes (default values are 0 for src_offset
and dst_offset
, and the size of the source buffer for size
).
If events
is specified, the command is executed after the given events have completed.
queue:enqueue_fill_buffer(buffer, pattern, pattern_size[, offset, size[, events]])
Enqueues a command that fills a buffer with a constant value, and returns an event object for the command. The command reads pattern_size
bytes from the buffer pointed to by pattern
, and fills the buffer region specified by offset
and size
in bytes (default values are 0 and the size of the buffer), where offset
and size
must be multiples of pattern_size
.
If events
is specified, the command is executed after the given events have completed.
This function is available with OpenCL 1.2.
queue:enqueue_marker_with_wait_list([events])
Enqueues a command that waits for the given events to complete, and returns an event object for the command. If events
is omitted, the command waits for all previously enqueued commands.
This function is available with OpenCL 1.2.
queue:enqueue_marker()
Enqueues a command that waits for all previously enqueued commands to complete, and returns an event object for the command.
This function has been deprecated in OpenCL 1.2.
queue:enqueue_barrier_with_wait_list([events])
Enqueues a command that waits for the given events to complete, and returns an event object for the command. If events
is omitted, the command waits for all previously enqueued commands.
The command blocks execution of all subsequently enqueued commands.
This function is available with OpenCL 1.2.
queue:enqueue_barrier()
Enqueues a command that for all previously enqueued commands to complete.
The command blocks execution of all subsequently enqueued commands.
This function has been deprecated in OpenCL 1.2.
queue:enqueue_wait_for_events(events)
Enqueues a command that waits for the given events to complete.
The command blocks execution of all subsequently enqueued commands.
This function has been deprecated in OpenCL 1.2.
queue:flush()
Submits all previously enqueued commands to the device. The function ensures that the commands will eventually be executed, which is useful when the enqueued commands are being waited on by commands in a different queue.
queue:finish()
Blocks until all previously enqueued commands have completed.
opencl.wait_for_events(events)
Blocks until the commands associated with the given events have completed.
event:get_info(name)
Queries information about the event.
name
can be any of the following, in which case the function returns:
event:get_profiling_info(name)
Queries profiling information about the command associated with the event.
The function returns a 64-bit integer with a device time in nanoseconds.
name
can be any of the following, in which case the function returns


I think I want to do my project for the ISEA 2016 symposium! More specifically, the "Combining Art and Gaming" theme, if I understood the prompt correctly. It seems really vague, so I am having some trouble deciding what I want to do.


Home
Blog
Reflection Blog
Time Management & Habits
CSS, HTML & The DOM, #1.
CSS, HTML & The DOM, #2.
Emotional Intelligence
Design to Web Blog
Meditation Process
Javascript Basics
Daily Mindfulness
Self Confidence
Problem Solving
Testing
Control
Motivation
Scope
Connecting
Leadership


Depei Zhang
Time complexity: O(n)
Leetcode runtime & memory (cpp): 16 ms (99.48%) & 14.6 MB
Solution:
P2: LC684. Redundant Connection
Time complexity: O(n)
Leetcode runtime & memory (cpp): 4 ms (98.46%) & 10.7 MB
Solution:
Time complexity: O(n + e)
Leetcode runtime & memory (cpp): 4 ms (99.73%) & 10.8 MB
Solution:
P4: LC990. Satisfiability of Equality Equations
Time complexity: O(n)
Leetcode runtime & memory (cpp): 4 ms (97.46%) & 9.9 MB
Solution:
P5: LC310. Minimum Height Trees
Time complexity: O(n + e)
Leetcode runtime & memory (cpp): 40 ms (99.59%) & 23.9 MB
Solution:
P6: LC329. Longest Increasing Path in a Matrix
Time complexity: O(m * n)
Leetcode runtime & memory (cpp): 20 ms (100.00%) & 13.1 MB
Solution:


Start with the "Review" tab; see plots 5--8. Use "brush" to zoom to problems. Look for general consistency with past projects.
Use the "Known Problems" -> "DP overshoots/SS" tab to check for overshooting regions (usually) following rapid descents and regions where the measurements indicate significant (more than a few %) supersaturation. Consider saving flags for these regions so they can be identified later, either by setting the measurement missing or by including a quality flag for the measurement.
It may be useful to check the "Known Problems" -> "in-cloud check" tab again to consider the agreement between temperature and dewpoint for measurements in cloud.
The "Known Problems" -> "check DP cavity P" tab should be used to see if the cavity pressures are similar to those expected. Significant departures from the predictions based on past projects are reasons to suspect the dew point measurements.
As with all measurements, it may be useful to check the "Known Problems" -> "out of range, frozen, spikes' tab also.


| I l@ve RuBoard |
When people discuss COM, they are often talking about only one side of COM—using automation objects. Automation objects are objects that expose a programmable interface that can be used by another program or environment. Examples of automation objects are Microsoft Office, the Netscape browser, or programs you write yourself in any language, such as Visual Basic, Python, Delphi, C++, and so forth.
Information about COM objects is stored in the Windows registry. Details about the object's class are stored, so that when that particular object needs to be created, the correct class is located and used. Although the term "class" doesn't refer to a Python (or C++) class, the concept is identical: the class defines the implementation, and the object is an instance of the class. Classes are registered with a unique (but complex) class ID (CLSID) and a friendly (but not guaranteed unique) program ID (ProgID). The CLSID is a globally unique identifier (GUID), as discussed later in this chapter, while the ProgID for an object is a short string that names the object and typically creates an instance of the object. For example, Microsoft Excel defines its ProgID as Excel.Application, Microsoft Word defines Word.Application, and so forth.
Python programs use the win32com.client.Dispatch() method to create COM objects from a ProgID or CLSID. For example, you could use this code to create an Excel object:
>>> import win32com.client >>> xl = win32com.client.Dispatch("Excel.Application") >>>
or to create a Microsoft Word object:
>>> import win32com.client >>> wd = win32com.client.Dispatch("Word.Application") >>>
So what to do with these objects? One of COM's greatest strengths is also one of its greatest weaknesses. Each COM object can define its own object model, that is, the methods and properties the object exposes to allow it to perform its task. The problem with this approach is that many COM objects present a unique object model, and if you learn how to use Microsoft Office using COM, the next COM object you need to use could define a different model. Microsoft is addressing this issue in its own products by attempting to define a similar object model across applications: the interface to Microsoft Excel is similar to the interface for Microsoft Word. However, the COM objects you need may present a completely different interface. The only solution to this problem is documentation; you must locate and read the documentation on the object model for the COM object you wish to use.
If you view the documentation for Microsoft Office, notice that both Excel.Application and Word.Application have a Visible property. Let's look at this property for Microsoft Excel:
>>> xl.Visible 0 >>>
Excel isn't visible, explaining why you can't see an instance of Excel running on your PC. (It's there, though!)
Let's set the Visible property to true:
>>> xl.Visible = 1 >>>
Excel now appears on the display. If you try the same thing with the Microsoft Word object, you get the same results:
>>> wd.Visible >>> 0 >>> wd.Visible = 1 >>>
Python manages COM lifetimes automatically for you; when your xl variable is no longer used, Excel automatically closes. In Python, the simplest way to remove this variable is to assign it to another value. If you use the following code, notice that Excel vanishes from the screen; it knows there are no longer any programs referring to it:
>>> xl = None >>>
For more information on using COM objects from Python, please see Chapter 12.
| I l@ve RuBoard |


Dual Captions for YouTube
Status:
OFF
ON
ERROR
1
On the video, click on the
CC
button to start captions.
OK
2
Select language for second captions:
3
Controls
TURN OFF
TURN ON
Options
Extra space
Captions may have a small delay.
Report a bug
here
.


Preparation time
less than 30 mins
Cooking time
10 to 30 mins
Serves
Serves 1
Preheat the oven to 180C/350F/Gas 4.
For the stuffed pepper, place the whole green pepper half on a baking tray and drizzle with two tablespoons of the oil. Season with salt and freshly ground black pepper and transfer to the oven to roast for 8-10 minutes, or until tender.
Heat the remaining oil and fry the onion and garlic for 3-4 minutes, or until softened. Add the chopped green pepper half, tomato, cooked rice and sage and warm through for 4-5 minutes, then stir in the parmesan. Stuff the roasted pepper half with the rice mixture.
For the mussel and basil sauce, tap the mussels against a hard surface and discard any that do not open.
Heat the oil in a pan and gently fry the onions and garlic for 5-6 minutes, or until softened. Pour in the white wine and bring to a simmer, then add the mussels and cover with a lid for 4-5 minutes, or until the mussels have opened. Discard any unopened mussels, then stir in the cream and parsley. Remove the cooked mussels from the pan and reduce the sauce down by about a third. Stir in the basil, remove the mussels from their shells and return to the sauce. Discard the shells.
Serve the stuffed pepper in a shallow dish with the mussel and basil sauce spooned around the edge.


--- layout: page title: Portfolio permalink: /portfolio/ --- {% assign projects = site.projects | sort: 'order' | reverse %} {% for project in projects %}
{{ project.content }}
Click for mobile view
Click for desktop view


Side
Before the Sn@il
The Italian word chiocciola literally translates as "snail," a passive, sluggish creature that hides in gardens and loves the rain.
Side
Before the Sn@il
The Italian word chiocciola literally translates as "snail," a passive, sluggish creature that hides in gardens and loves the rain.


What we do
Since 2019, we’ve built, monetized and sold 5 in-house products, been a part
of dozens of projects that
evolved
from humble startup to epic
acquisition/IPO and helped hundreds of forward-thinking companies create
better
customer experiences for millions of users.
We have gone an extra mile to offer consultation services for
anyone
who requires direction in the market.
We offer fancy wears of your choice and one thing very clear is that we never
disappoint!As a result, we
have a deep understanding
of how to accomplish the business needs of both product and marketing
departments
by improving the user experience.Check below:
Ladies Shoe Wear
Suit Lovers
Men Shoe Wear
We’ve used this knowledge to pioneer a one-of-a-kind service model that allows us to
perform as an in-house
UX team for our clients.


closed
by Trey Pendragon at 2021-01-29 22:25:17.referenced
by Trey Pendragon at 2021-01-29 22:25:17.merged
by Trey Pendragon at 2021-01-29 22:25:17.closed
by Trey Pendragon at 2021-01-29 22:25:17.head_ref_deleted
by Trey Pendragon at 2021-01-29 22:25:19.renamed
by Eliot Jordan at 2021-01-29 22:05:26.labeled
by Eliot Jordan at 2021-01-29 22:06:19.referenced
by Trey Pendragon at 2021-01-29 22:11:30.closed
by Trey Pendragon at 2021-01-29 22:47:28.referenced
by Trey Pendragon at 2021-01-29 22:47:28.merged
by Trey Pendragon at 2021-01-29 22:47:28.closed
by Trey Pendragon at 2021-01-29 22:47:29.head_ref_deleted
by Trey Pendragon at 2021-01-29 22:47:29.referenced
by Axa Mei Liauw at 2021-01-30 12:33:51.merged
by Axa Mei Liauw at 2021-01-30 12:33:51.closed
by Axa Mei Liauw at 2021-01-30 12:33:51.head_ref_deleted
by Axa Mei Liauw at 2021-01-30 12:33:52.labeled
by None at 2021-01-29 22:11:32.labeled
by None at 2021-01-29 22:12:03.labeled
by None at 2021-01-29 22:12:46.labeled
by None at 2021-01-29 22:13:21.labeled
by None at 2021-01-29 22:13:38.Would be great if this could happen sooner rather than later, but since it's not happening now, not a deal breaker.
labeled
by None at 2021-01-29 22:14:14.unlabeled
by None at 2021-01-29 22:15:53.labeled
by None at 2021-01-29 22:17:48.labeled
by None at 2021-01-29 22:18:18.Vacillating on whether this is release blocking issue...does need to happen sooner rather than later.
I'd recommend against totally new features blocking release, since they have the most surprising things that need to change with them.
labeled
by None at 2021-01-29 22:17:03.labeled
by Trey Pendragon at 2021-01-29 23:06:48.Closed via https://github.com/pulibrary/figgy/pull/4395
closed
by Trey Pendragon at 2021-01-29 23:08:43.Of ~63k Agent records, ~50k are linked to components/Archival Object records. The remaining 13k are linked to 2638 unique collections/Resource records
Addressing the original question (redundant display), I wonder whether this could be addressed by a few small display changes.
In a result screen looking like this:
I feel like we could gain a lot by 1) repeating the search term directly above the search results, in black (it's currently showing in the facet button up and off to the left, gray) 2) stating "n search result(s)" (perhaps with "in" or ":") right above the collection link 3) adding in the entity's role with the target of the link, whether that target is a collection or a component, e.g. "creator of"
Thinking out loud, I'm also wondering whether things would get clearer--perhaps not--if we unlinked the collection name at the top of the group?
labeled
by None at 2021-01-29 22:13:06.head_ref_force_pushed
by Kevin Reiss at 2021-01-30 01:39:52.referenced
by Axa Mei Liauw at 2021-01-30 01:46:44.merged
by Axa Mei Liauw at 2021-01-30 01:46:44.closed
by Axa Mei Liauw at 2021-01-30 01:46:44.head_ref_deleted
by Axa Mei Liauw at 2021-01-30 01:46:48.


7h ago via Reuters
Apple's new iPads sport modest upgrades but short on 'wow'
Faster, slimmer iPads come with modest improvements, such as a fingerprint sensor, but some analysts say it offers few other features to wow consumers ahead of a holiday shopping season
16h ago via MarketWatch
What to watch for in Apple’s results
Apple Inc. is scheduled to release its fiscal fourth-quarter results after the close of trading Monday.
2h ago via Bloomberg
Apple’s Cook Raises Bar With New Holiday Product Lineup
Tim Cook is ready to tackle the holiday season with a full product array including new iPads. His challenge now is luring the hordes of buyers that analysts are projecting.
4h ago via Bloomberg
Amex web page promotes Apple Pay, adds directions for linking cards
Financial services and credit card issuer American Express has posted a new web page on its site, extolling the benefits of Apple Pay and instructing users on how to add their cards to the Passbook-based payment system.


Find What..?
lyrics..artists..albums
{{category.type}}
close
{{error}}
{{artist.artist_name}}
Ratting: {{artist.artist_rating}}
Also known as:
- {{othername}}
- No other Name
Genres: {{ artist.primary_genres.music_genre.music_genre_name ? artist.primary_genres.music_genre.music_genre_name : 'No Genre Listed'}}
Albums
Related Artist


About
Projects
Colin Mullaney
Interests
Contact
Colin Mullaney
About
Projects
Interests
Contact
Cooking
Painting


public interface SaslListener
| Modifier and Type | Method and Description |
|---|---|
void |
onSaslChallenge(Sasl sasl,
Transport transport)
Called when a sasl-challenge frame has arrived and its effect
applied, indicating the challenge sent by the 'server' peer.
|
void |
onSaslInit(Sasl sasl,
Transport transport)
Called when a sasl-init frame has arrived and its effect
applied, indicating the selected mechanism and any hostname
and initial-response details from the 'client' peer.
|
void |
onSaslMechanisms(Sasl sasl,
Transport transport)
Called when a sasl-mechanisms frame has arrived and its effect
applied, indicating the offered mechanisms sent by the 'server' peer.
|
void |
onSaslOutcome(Sasl sasl,
Transport transport)
Called when a sasl-outcome frame has arrived and its effect
applied, indicating the outcome and any success additional-data
sent by the 'server' peer.
|
void |
onSaslResponse(Sasl sasl,
Transport transport)
Called when a sasl-response frame has arrived and its effect
applied, indicating the response sent by the 'client' peer.
|
void onSaslMechanisms(Sasl sasl, Transport transport)
sasl
- the Sasl objecttransport
- the related transportvoid onSaslInit(Sasl sasl, Transport transport)
sasl
- the Sasl objecttransport
- the related transportvoid onSaslChallenge(Sasl sasl, Transport transport)
sasl
- the Sasl objecttransport
- the related transportvoid onSaslResponse(Sasl sasl, Transport transport)
sasl
- the Sasl objecttransport
- the related transport


{% extends "_base.html" %} {% block title %}SSO account deactivated{% endblock %} {% block header %} {% endblock %} {% block body %}
No account found
Your account might have been deactivated by the server administrator. You can either try to create a new account or contact the server’s administrator.


--- title: Quote of the day - Burning Bridges comments: true tags: - Quote of the Day blogger_orig_url: http://stickmanscorral.blogspot.com/2011/08/quote-of-day-burning-bridges.html ---


Get Involved
ManageIQ is open source and open for contributions. There are many ways to get involved, and everyone is invited to connect, discuss, develop and collaborate in the ManageIQ community!
Contributors to the ManageIQ repositories:
♟ manageiq ♟ manageiq-ui-classic ♟ manageiq-ui-service ♟ manageiq-appliance ♟ manageiq-appliance-build ♟ manageiq-content ♟ manageiq-decorators ♟ manageiq-gems-pending ♟ manageiq-providers-amazon ♟ manageiq-providers-azure ♟ manageiq-providers-lenovo ♟ manageiq-providers-hawkular ♟ manageiq-api-client ♟ manageiq-pods ♟ manageiq_docs ♟ integration_tests ♟ react-ui-components ♟ ui-components ♟ manageiq.org ♟ font-fabulous ♟ guidesDiscuss
Join the active ManageIQ community on ManageIQ Talk forum with your questions and discussions, or chat with us anytime on Gitter (sign in with your GitHub account).
Check out the ManageIQ blog and comment on the latest community news.
Community Events
Browse the Events Calendar and learn where you can meet up with other members of the community.
Connect
Find us in your favorite social channel so you can be in the loop with announcements and happenings.
Peruse and enjoy the slides and
recordings from events and Sprint reviews.Develop
Access the source code and developer guides to get going. Refer to the above engagement channels if you need some assistance!
Collaborate
The ManageIQ Depot is a place for sharing and downloading extensions such as policies and reports.
In addition, you don't have to be a developer to be able to contribute. Filing issues/bugs is a great way to help. The ManageIQ project also welcomes translations!
Let’s Meet
Here are some opportunities to meet with members of the community to learn and share about ManageIQ, whether online or in person, at international conferences or local meetups. Materials from past events will be made available here as well.
Sprint reviews
There is a ManageIQ Sprint review every 2 weeks open to the community. To join the online video conference, please use this Bluejeans link.
You can import the ManageIQ community calendar to be notified about ManageIQ events and Sprint reviews.


|
VK
|
Interface used to represet different modes of operation. More...
#include <IRunMode.h>
Public Typedefs | |
| typedef LRESULT (__stdcall * | KeyboardHookProc) (int, WPARAM, LPARAM) |
| typedef LRESULT (__stdcall * | MouseHookProc) (int, WPARAM, LPARAM) |
Public Member Functions | |
| virtual void | Run () = 0 |
| virtual bool | RequiresConnection () |
| Specifies whether the TCP Thread should be run. | |
Public Attributes | |
| KeyboardHookProc | keyhookproc |
| Pointer to the kyboard hook function. | |
| MouseHookProc | mousehookproc |
| Pointer to the mouse hook function. | |
Interface used to represet different modes of operation.


4.2. Writing a recursive function¶
4.2.1. Writing a recursive function¶
Solving a “big” problem recursively means to solve one or more smaller versions of the problem, and using those solutions of the smaller problems to solve the “big” problem. In particular, solving problems recursively means that smaller versions of the problem are solved in a similar way. For example, consider the problem of summing values of an array. What’s the difference between summing the first 50 elements in an array versus summing the first 100 elements? You would use the same technique. You can even use the solution to the smaller problem to help you solve the larger problem.
Here are the basic four steps that you need to write any recursive function.
Now le’t see some different ways that we could write Sum
recursively.
Example 4.3.1
Our example for summing the first \(n\) numbers of an array could have been written just as easily using a loop. Here is an example of a function that is more naturally written using recursion.
The following code computes the Fibonacci sequence for a given number.
The Fibonacci Sequence is the series of numbers: 1, 1, 2, 3, 5, 8,
13, 21, 34, …
Any number in the sequence is found by adding up the two numbers
before it.
The base cases are that Fibonacci(0) = 1
and
Fibonacci(1) = 1
.
long Fibonacci(int n) {
if (n < 2) {
return 1;
}
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
long Fibonacci(int n) {
if (n < 2) {
return 1;
}
return Fibonacci(n - 1) + Fibonacci(n - 2);
}


A small library for manipulating the favicon, in particular adding alert bubbles and changing images. Tinycon gracefully falls back to a number in title approach for browers that don't support canvas or dynamic favicons.
Basic Usage
Tinycon adds a single object to the global namespace and does not require initialisation.
$("#btntest-tinycon1").on("click",function(){ Tinycon.setBubble(7); }); $("#btntest-tinycon2").on("click",function(){ Tinycon.setBubble(53); }); $("#btntest-tinycon3").on("click",function(){ Tinycon.setBubble(107); });
Options
Tinycon can take a range of options to customise the look.
- width: the width of the alert bubble
- height: the height of the alert bubble
- font: a css string to use for the fontface (recommended to leave this)
- colour: the foreground font colour
- background: the alert bubble background colour
- fallback: should we fallback to a number in brackets for browsers that don't support canvas/dynamic favicons? Boolean, or use the string 'force' to ensure a title update even in supported browsers.
- abbreviate: should tinycon shrink large numbers such as 1000 to an abbreviated version (1k). Boolean, defaults to true
Tinycon.setOptions({ width: 7, height: 9, font: '10px arial', colour: '#ffffff', background: '#549A2F', fallback: true });


&$905;
>%TREE%
Sender:
%writer%
Send Time:
%post_date%
Recipient:
%char_name%
Delete Intended Time:
%del_date%
&$413; :
%title%
%CONTENT%


GitHub repository for this is here.
Enter your RF data into the textbox below. Your data should comprise a comma separated list of durations in microseconds (μs) for which the 433.92MHz RF band was either high or low according to your OOK receiver. A JSON array will work just fine too.
To read more about LightwaveRF decoding, view Benjie's blog posts.


|
Contiki 2.5
|
The Announcement primitive does local area announcements. More...
Data Structures | |
| struct | announcement |
| Representation of an announcement. More... | |
Files | |
| file | announcement.c |
Implementation of the announcement primitive. | |
| file | announcement.h |
Header file for the announcement primitive. | |
Application API | |
| void | announcement_register (struct announcement *a, uint16_t id, announcement_callback_t callback) |
| Register an announcement. | |
| void | announcement_remove (struct announcement *a) |
| Remove a previously registered announcement. | |
| void | announcement_remove_value (struct announcement *a) |
| Remove the value of an announcement. | |
| void | announcement_set_value (struct announcement *a, uint16_t value) |
| Set the value of an announcement. | |
| void | announcement_bump (struct announcement *a) |
| Bump an announcement. | |
| void | announcement_listen (int periods) |
| Listen for announcements for a specific amount of announcement periods. | |
System API | |
| enum | |
| typedef void(* | announcement_observer )(uint16_t id, uint8_t has_value, uint16_t newvalue, uint16_t oldvalue, uint8_t bump) |
| void | announcement_init (void) |
| Initialize the announcement module. | |
| void | announcement_register_listen_callback (void(*callback)(int time)) |
| Register a listen callback with the announcement module. | |
| void | announcement_register_observer_callback (announcement_observer observer) |
| Register an observer callback with the announcement module. | |
| struct announcement * | announcement_list (void) |
| Get the list of registered announcements. | |
| void | announcement_heard (const rimeaddr_t *from, uint16_t id, uint16_t value) |
| Inform the announcement module of an incoming announcement. |
The Announcement primitive does local area announcements.
An announcement is an (ID, value) tuple that is disseminated to local area neighbors. An application or protocol can explicitly listen to announcements from neighbors. When an announcement is heard, a callback is invoked.
Announcements can be used for a variety of network mechanisms such as neighbor discovery, node-level service discovery, or routing metric dissemination.
Application programs and protocols register announcements with the announcement module. An announcement back-end, implemented by the system, takes care of sending out announcements over the radio, as well as collecting announcements heard from neighbors.
| void announcement_bump | ( | struct announcement * | a | ) |
Bump an announcement.
| a | A pointer to a struct announcement that has previously been registered |
This function is called to inform the announcement module that a particular announcement has changed in a way that it should be bumped. When an announcement is bumped, the announcement back-end may send out a new announcement to neighbors.
Definition at line 106 of file announcement.c.
| void announcement_heard | ( | const rimeaddr_t * | from, |
| uint16_t | id, | ||
| uint16_t | value | ||
| ) |
Inform the announcement module of an incoming announcement.
| from | The address of the sender of the announcement |
| id | The identifier of the announcement |
| value | The value of the announcement |
This function is called by the back-end to inform the announcement module that an announcement from a neighbor has been heard.
Definition at line 141 of file announcement.c.
References list_head(), list_item_next(), and NULL.
| void announcement_init | ( | void | ) |
Initialize the announcement module.
This function initializes the announcement module, and is called by the system at boot up.
Definition at line 57 of file announcement.c.
References list_init().
| struct announcement * announcement_list | ( | void | ) | [read] |
Get the list of registered announcements.
This function returns the list of registered announcements. This function is used by the back-end to compile announcement packets from the registered announcements.
The announcement list is an ordinary Contiki list, as defined by the list module.
Definition at line 135 of file announcement.c.
References list_head().
| void announcement_listen | ( | int | periods | ) |
Listen for announcements for a specific amount of announcement periods.
| periods | The number of periods to listen for announcement |
This function starts to listen for announcements for the specified amount of announcement periods. This function is called to ensure that the announcement module hears announcements from neighbors. The announcement module may hear announcements even if listening is not explicitly enabled, but with listening enabled, more announcements will be heard.
Definition at line 115 of file announcement.c.
| void announcement_register | ( | struct announcement * | a, |
| uint16_t | id, | ||
| announcement_callback_t | callback | ||
| ) |
Register an announcement.
| a | A pointer to a struct announcement |
| id | The identifying number of the announcement |
| callback | A pointer to a callback function that is called when an announcement is heard |
This function registers an announcement with the announcement module. The state of the announcement is held in a struct announcement variable, which is passed as an argument to this function. This variable must be allocated by the caller. An announcement is identified with a 16-bit number, which is passed as a parameter to the function. The announcement also has an initial value, that can later be changed with announcement_set_value().
Definition at line 63 of file announcement.c.
References list_add().
| void announcement_register_listen_callback | ( | void(*)(int time) | callback | ) |
Register a listen callback with the announcement module.
| callback | A pointer to a callback function |
This function is called by the back-end to register a listen callback with the announcement module. The listen callback function is called by the announcement module as part of the announcement_listen() function.
Definition at line 123 of file announcement.c.
| void announcement_register_observer_callback | ( | announcement_observer | observer | ) |
Register an observer callback with the announcement module.
| observer | A pointer to an observer function |
This function is callback by the back-end to register an observer callback with the announcement module. The observer callback is called by the announcement module when an announcement is registered, removed, or have its identifier or value updated.
The back-end may chose to send out a new announcement message with the updated values.
Definition at line 129 of file announcement.c.
| void announcement_remove | ( | struct announcement * | a | ) |
Remove a previously registered announcement.
| a | A pointer to a struct announcement that has previously been registered |
This function removes an announcement that has previously been registered with announcement_register().
Definition at line 77 of file announcement.c.
References list_remove().
| void announcement_remove_value | ( | struct announcement * | a | ) |
Remove the value of an announcement.
| a | A pointer to a struct announcement that has previously been registered |
This function removes the value of an announcement that has previously been registered with announcement_register().
Definition at line 83 of file announcement.c.
| void announcement_set_value | ( | struct announcement * | a, |
| uint16_t | value | ||
| ) |
Set the value of an announcement.
| a | A pointer to a struct announcement that has previously been registered |
This function sets the value of an announcement that has previously been registered with announcement_register().
Definition at line 93 of file announcement.c.


with Lisa Williams lisatmh AT gmail dot com @lisawilliams
More on me and my workSlides and Additional Resources This slide deck can always be found at:
https://lisawilliams.github.io/email/
Extra resources on a slide's topic can be found clicking the down arrow on a slide.
You found me! Now try pressing ESC.
This presentation was made using Reveal.js, a framework for making HTML slide presentations; Reveal.js is a Node.js application.
For more details, visit the repository for this application at https://github.com/lisawilliams/email
You can always find this presentation and its resources at http://lisawilliams.github.io/email


Blog Index
Polynomials and Macros December 28, 2016
Create points
The next block
(def grid-points (for[dx (range 3 18 5) dy (range 3 18 5)][dx dy]))
(defn point-set[n]
(set (take n (repeatedly #(rand-nth grid-points)))))
(defn random-connection[points]
(vec (take 2 (repeatedly #(rand-nth (vec points))))))
(defn build-glyph[np nl]
(let[ps (point-set np)]
(take nl (repeatedly #(random-connection ps)))))
(defn glyph[np nl]
())
fesfa
esfa
Conclusions
In this exercise, I explained efficient polynomial evaluation and tried a few techniques to see if some were noticeably different than others.