Using Sisy¶
Quick overview of Sisy’s architecture¶
Task objects¶
The heart of Sisy is the sisy.models.Task
model class, whose instances
embody and keep track of the tasks that Sisy will (attempt to) run on your behalf.
The class allows a variety of different ways to schedule task execution, using its
various fields.
Task functions¶
Each task ultimately runs a function that you provide, which takes one argument.
This argument, which must be named message
, receives a dict
object with
two keys: task
, and message
. The value of the task
key is the
Task
object administrating the current task run, and the message
object is the message dictionary received by the Channels consumer function on the
current worker, which kicked off the execution of the task run.
Heartbeat worker¶
The sisy package has a long-lived management command named sisy_heartbeat
, which
provides the periodic “heartbeat” messages that allow Sisy to do its job. This management
command does not daemonize itself; therefore it can easily be run as a supervisor
program or a honcho process. The author usually
runs the heartbeat command on the same physical hardware as the daphne
interface server,
since the heartbeat command takes very little resources and may be considered as
application-wide infrastructure, like the interface server. There only needs to be one
heartbeat worker across the entire application.
Storing user data in the task object¶
Task
objects have a property named userdata
, which is a dict
object of JSON-serializable data. Sisy does not do anything with this object; it is
there for the user to store application data. The data is automatically encoded and
decoded to and from the Task
object’s _extra_data
field, and so is
available to task functions when they run, both for reading and writing. It is best
to limit the size of data stored in this field, as the JSON is encoded/decoded on
each access, and so there might be a significant performance and/or memory penalty
incurred if the data is too large.
Creating and running tasks¶
sisy.models.task_with_callable()
¶
This helper function is the standard way of creating a task, since creating the detailed information that the Task object needs (from scratch, via the constructor method) can be tedious.
The basic form of creating and running a Sisy Task
is the following:
from sisy.models import task_with_callable
def my_task_function(message):
do_something_here()
task = task_with_callable(my_task_function)
# Run the task every five seconds, but only during the hours
# of midnight, 3am, 6am, and 9am.
task.schedule = '*/5 0,3,6,9 * * *'
task.save()
This is only the most basic form, but is the recommended method. The
sisy.models.task_with_callable()
method is the most convenient way to start
a task that has already been directly linked to a function. But you can
also specify the various parameters directly in the constructor.
The callable object that is passed to sisy.models.task_with_callable()
can be specified as
an actual callable object, or as a string representing the full dotted Python path
to the callable object.
The callable object must take only one parameter, which must be named message
.
This parameter will receive a dictionary containing two keys: task
, and message
,
whose values are (respectively) the Task
object for this task, and the Channels message dictionary
that was received by the consumer function on the worker process.
Helper functions¶
There are also a few helper functions in the sisy.models
module that
make common scenarios easier to use.
sisy.models.Task.run_iterations()
¶
This helper class function allows the developer to specify that the task should run a given number of times, and then be deleted.
sisy.models.Task.run_once()
¶
This helper class function allows the developer to specify that the task should run once, immediately, and then be deleted.
What can be a task function?¶
There are several types of callables that are supported by Sisy:
- bare functions
- class methods
- static methods
- instance methods
The first three types are fairly simple; just pass the object or the dotted-path
string to task_with_callable()
, and the task will be created. The
Task
object is passed back to you, so that you can adjust its settings
if desired. You need to save()
the object before it will become active.
from sisy.models import task_with_callable
class Foo:
@classmethod
def DoSomethingClassy(cls, message):
pass
task = task_with_callable(Foo.DoSomethingClassy)
# Set it to run during business hours on weekdays, once an hour on the hour
task.schedule = '0 9-17 * * mon-fri'
task.save()
Instance methods, however, are somewhat more complicated because of the fact that they can only be called when they are bound to a specific instance. Because Sisy’s tasks can be run on any worker process (potentially on completely different hardware and even a different platform,) we cannot know what the internal state of an object instance is, in order to run it on that remote worker. The only case where this state can be reliably available to us is with our Django model objects, and so those objects are the only ones on which Sisy supports calling instance methods:
from django.db import models
from django.utils import timezone
# Import our creation function
from sisy.models import task_with_callable
class ModelFoo(models.Model):
"""A very silly example model class"""
name = models.CharField(max_length=127)
latest_run = models.DateTimeField(null=True)
def doSomething(self, message):
"""Do something very noddy, just for an example"""
self.latest_run = timezone.now()
self.save()
def create_task_for_a_ModelFoo():
"""Create a Sisy task for the first ModelFoo we can grab"""
# Grab the first ModelFoo in the list
a_foo = ModelFoo.objects.all()[0]
# Make a task with that ModelFoo's doSomething instance method
task = task_with_callable(a_foo.doSomething)
# Set it to run every five minutes
task.schedule = '*/5 * * * *'
# Save the task to activate it
task.save()
The preceding (silly) example will create a task that runs every five minutes, calling
the doSomething
method on the ModelFoo
object that was retrieved in the
create_task_for_a_ModelFoo
function.
Execution options¶
Repeating tasks¶
The original intent of Sisy (evidenced by the choice of name, referencing the tragic figure of Sisyphus) was to make it easy to run repeating tasks in background workers, much like the classic Unix*cron* utility. In fact, Sisy uses the same basic syntax as cron:
The schedule string is divided into five (or, optionally, six) fields denoting different spans of time:
| field | time period | Ranges |
| 1 | minutes | *, 0-59, */x, x-y, x,y,z… |
| 2 | hours | *, 0-23, */x, x-y, x,y,z… |
| 3 | day of month | *, 0-31, */x, x-y, “l” (for Last), x,y,z… |
| 4 | month | *, 1-12, */x, x-y, x,y,z… |
| 5 | day of week | *, 0-7 (both 0 and 7 are Sunday), “mon” - “sun” |
| 6* | seconds | *, 0-59, */x, x-y, x,y,z… |
*Field 6 is an extension, not supported by basic cron.
Each field supports various forms of specification; some are common to all of the fields, but some are field-specific.
Common formats¶
- *
- Denotes “all” or “every”. Will allow the task to run at any value of the field.
- */x
- Denotes “every x”, such as
*/5 * * * *
for “every 5 minutes.” - x-y
- Denotes a span of values (e.g. “0-7” or “mon-fri”.)
- x,y
- Denotes a series of values (e.g.
0,5,20,25 * * * *
) - x1-y1,x2-y2
- Denotes a combination of the above specs; a series of spans of values (e.g.
0-10,20-30 * * * *
)
Field-specific formats¶
- Day of month (field 3)
- Supports the use of “l” (lowercase L) to denote the “l”ast day of the month
- Day of week (field 5)
- If a numeric spec is used, both
0
and7
may be used to denote Sunday. Also, the abbreviated (English) text names of the days may be used:mon
,tue
,wed
,thu
,fri
,sat
,sun
.
Combining the formats¶
The power of the format comes from combining the different fields in different specifications. Some examples:
"* * * * *"
- This is the most basic specification (and the default), which would match any time. By default, Sisy runs its heartbeat process once per minute, so this spec would run once per minute. This matches the behavior of the Unix cron utility.
"30 0 * * *"
- This specification would cause the task to be run at 00:30 (30 minutes after midnight) on every day of the month, in every month, on any day of the week.
"*/5 * * * *"
- This spec would run every five minutes, on all days, at all hours. The
*/x
form indicates “every x”. "0-10,15-20 * * * *"
- This spec would run on minutes 0 through 10 and 15 through 20 of every hour of every day.
0,15,30,45 9-17 * * mon-fri
- This spec would run every fifteen minutes, from 9am to 5pm on Monday through Friday.
For further reference on the format, see the documentation for croniter, the Python package which Sisy relies on to process it, or search Google for something like “crontab format”.
Start and end dates¶
Start and end dates can be specified for a task, and the task runner will pay attention to these, not running any task whose start and end dates are after or before the current time respectively. If a task completes a run and its next run would be scheduled after the specified end date, the task will be submitted for deletion.
from django.utils.timezone import datetime, get_current_timezone
from sisy.models import task_with_callable
from myapp.utils import limited_time_offer_function
TZ = get_current_timezone()
task = task_with_callable(
limited_time_offer_function,
schedule='0 7-19 * * *', # only run 7am - 7pm
start_running=datetime(2018,1,1, 0,0, tz=TZ), # first run would be New Year's Day, 0:00 local time
end_running=datetime(2018,2,14, 0,0, tz=TZ), # last run would be 7pm local time on Feb. 13th
)
task.save()
Specified iteration counts¶
Tasks can also be specified with an iteration count, in order to limit the
number of times the task will be run. The task still runs according to the
schedule
attribute of the task object, but will be deleted after the
specified number of runs (whether successful or not.)
Note
In the case of an ambiguity between the iteration count and the end date, the end date will take priority, and the task will be deleted if that end date will occur before the task’s next scheduled run, even if the iteration count is still above zero.
from sisy.models import Task
from myapp.utils import first_ten_customers_function
task = Task.run_iterations(
first_ten_customers_function,
schedule='0 7-19 * * *', # only run 7am - 7pm
iterations=10,
)
One-shot task runs¶
As a special case of specified iteration counts,
Sisy can be called in a one-shot mode by using the sisy.models.Task.run_once()
function. This takes a function and an optional JSON-serializable dictionary of user data,
and submits it to the worker channel once, immediately, bypassing the schedule
parameter of the task object, and deleting the task object immediately afterwards.
This can be quite handy for odd jobs.
from sisy.models import Task
from myapp.utils import one_time_only_function
Task.run_once(one_time_only_function)
For even lazier developers, you don’t even have to import the function; just use the dotted path.
from sisy.models import Task
Task.run_once('myapp.utils.one_time_only_function')
Scheduling a one-shot run for some future time¶
Because a task will not be considered runnable until its start_running
date
has passed, a one-shot run can be scheduled for a future time by providing a
future datetime object to the optional delay_until
parameter on the
Task.run_once()
class method:
from sisy.models import Task
from django.utils.timezone import now
from datetime import timedelta
def do_this_later(message):
print("Finally!")
three_days_from_now = now() + timedelta(days=3)
Task.run_once(do_this_later, delay_until=three_days_from_now)
The delay_until
parameter is also available on the Task.run_iterations()
method, since the Task.run_once()
method is just a shortcut to that method.
Warning
Please note that the delay_until
parameter must be an “aware” datetime; that is,
it must include timezone information. django.utils.timezone.now
is a good source
of such a datetime (as in the above sample code), or one may be constructed by providing
a timezone (such as one obtained from django.utils.timezone.get_current_timezone()
) in the
tz
parameter to the constructor of datetime.datetime
. See snippet below for an example.
from datetime import datetime, timedelta
from django.conf import settings
from django.utils import timezone
from sisy.models import Task
OUR_TIMEZONE = timezone.get_current_timezone()
def do_this_later(message):
print("This should happen much later...")
later = datetime.now(tz=OUR_TIMEZONE) + timedelta(days=3)
Task.run_once(do_this_later, delay_until=later)


Open forkify_mvc.html for the markup/code | Images are taken from: JS Course by Jonas Schmedtmann
We will build our project using the MVC architecture which stands for Model, View & Controller architecture. We logically build our app by separating concerns for the Model (data) and View (front-end related) using our Controller (where everything inter-mingles) as shown in the image above. Now to logically separate code Model, View & Controller, we will use the ES6 Modules to our advantage and make our codebase easy to read and access.


A jQuery plugin to build custom HTML5 video players.
The main features of this plugin include the ability to customize the player controls and the ability to choose different quality versions of the same video.
To download this plugin, go to http://github.com/vebersol/jQPlayer/
Video by Topic Simple
Developed by: Vinícius Ebersol
Layout and concept: Thiago Reis


Java 8 finally brings lambda syntax to Java.
Lambdas don't do anything that you couldn't have also done with anonymous nested classes, but lambdas do it...
Many lambda-friendly utilities have entered the core libraries along with them.
This session will focus on the difference between the "old" and "new" way of doing the same thing.
Java 8 adds the ability to declare a default implementation for an interface method.
This lets you add new methods to interfaces without breaking downstream implementations, as long as you can define their behavior in terms of existing methods.
public interface Doi {
/**
* @return a DOI name such as "10.1371/journal.pone.0000000"
*/
String getDoiName();
}
public interface Doi {
/**
* @return a DOI name such as "10.1371/journal.pone.0000000"
*/
String getDoiName();
default URI getAsUri() {
return URI.create("doi:" + getDoiName());
}
}
Interfaces with default
methods are similar to abstract classes. The differences are that
interfaces:
final
This looks spookily like multiple inheritance. Because interfaces inherit only multiple behaviors, not multiple states, it avoids the nastiest problems.
The compiler will throw an error if one class implements two interfaces, and each one provides a different
default
body for the same method signature.
Java is still a statically typed language. Every value must have a declared type.
A lambda expression's type is inferred from syntax.
The inferred type must be a functional interface.
An interface is functional if it has exactly one non-default
,
non-static
method.
(Object
methods (e.g., equals
, hashCode
, toString
) don't
count.)
@FunctionalInterface
annotation
You can use the
@FunctionalInterface
annotation to mark interfaces that meet the definition of functional.
It works like @Override
: it is never required (even if you actually use lambdas with that
interface), but the compiler will complain if you put it somewhere invalid.
You generally want to use it only on interfaces that you actually expect to get anonymous implementations. It can be misleading otherwise.
Don't put it on interfaces that you expect to add methods to one day – for example, a
*Service
class from our codebases.
Runnable
has been part of the language since 1.0, and meets the definition of functional. It didn't need the @FunctionalInterface
annotation to make it so.
package java.lang;
/**
* The Runnable interface should be implemented by any
* class whose instances are intended to be executed by a thread...
*/
public interface Runnable {
/**
* When an object implementing interface Runnable is
* used to create a thread, starting the thread causes the object's
* run method to be called in that separately executing
* thread...
* @see java.lang.Thread#run()
*/
public abstract void run();
}
Some of us have already implemented
HibernateCallback
,
a functional interface from Spring, many times.
package org.springframework.orm.hibernate3;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import java.sql.SQLException;
public interface HibernateCallback<T> {
T doInHibernate(Session session)
throws HibernateException, SQLException;
}
Java 8 provides some very flexible new ones.
@FunctionalInterface public interface Predicate<T> {
boolean test(T t);
}
@FunctionalInterface public interface Function<T, R> {
R apply(T t);
}
@FunctionalInterface public interface Consumer<T> {
void accept(T t);
}
@FunctionalInterface public interface Supplier<T> {
T get();
}
@FunctionalInterface
public interface Consumer<T> {
void accept(T t);
public static void main(String[] args) {
Consumer<String> printTrimmed = (String s) -> {
String trimmed = s.trim();
System.out.println(trimmed);
};
}
}
You can return things.
@FunctionalInterface
public interface Predicate<T> {
boolean test(T t);
public static void main(String[] args) {
Predicate<Integer> isEven = (Integer n) -> {
int modulus = n % 2;
return (modulus == 0);
};
}
}
If it is a single return statement, you can leave off the braces and write only the returned expression.
@FunctionalInterface public interface Predicate<T> {
boolean test(T t);
public static void main(String[] args) {
Predicate<Integer> isEven = (Integer n) -> {
return (n % 2 == 0);
};
}
}
@FunctionalInterface public interface Predicate<T> {
boolean test(T t);
public static void main(String[] args) {
Predicate<Integer> isEven = (Integer n) -> (n % 2 == 0);
}
}
If the argument type can be inferred, you can leave it off.
@FunctionalInterface public interface Predicate<T> {
boolean test(T t);
public static void main(String[] args) {
Predicate<Integer> isEven = (Integer n) -> (n % 2 == 0);
}
}
@FunctionalInterface public interface Predicate<T> {
boolean test(T t);
public static void main(String[] args) {
Predicate<Integer> isEven = n -> (n % 2 == 0);
}
}
If it uses only a single method call, you can make it even terser with method reference syntax.
@FunctionalInterface public interface Function<T, R> {
R apply(T t);
public static void main(String[] args) {
Function<String, Integer> getLength = s -> s.length();
}
}
@FunctionalInterface public interface Function<T, R> {
R apply(T t);
public static void main(String[] args) {
Function<String, Integer> getLength = String::length;
}
}
You can even use a method reference on a particular instance.
@FunctionalInterface public interface Supplier<T> {
T get();
public static void main(String[] args) {
String theValue = "resonance cascade";
Supplier<Integer> getValueLength = () -> theValue.length();
}
}
@FunctionalInterface public interface Supplier<T> {
T get();
public static void main(String[] args) {
String theValue = "resonance cascade";
Supplier<Integer> getValueLength = theValue::length;
}
}
Lambdas can be inlined.
This is usually good style (but, as always, break things apart when they need to be clearer).
List<ArticleIdentity> getIdentities(List
 articles) {
Function
 extractId =
article -> ArticleIdentity.create(article.getDoi());
return Lists.transform(articles, extractId);
}
List<ArticleIdentity> getIdentities(List
 articles) {
return Lists.transform(articles,
article -> ArticleIdentity.create(article.getDoi()));
}
Your IDE is your best friend while learning new syntax.
My process for learning all of this, when I needed to supply a lambda value to something, was:
new
..." and let IntelliJ auto-complete an old-fashioned anonymous class.
It shows you explicit types for all parameters and the return value.
Alt+Enter
and convert it to a lambda.Alt+Enter
again and convert the lambda to a method reference, if possible. List<String> getDois(List
 articles) {
return Lists.transform(articles,
new Function
() {
@Override
public String apply(Article article) {
return article.getDoi();
}
});
}
List<String> getDois(List
 articles) {
return Lists.transform(articles, article -> article.getDoi());
}
List<String> getDois(List
 articles) {
return Lists.transform(articles, Article::getDoi);
}
A nice design pattern for surrounding a segment of code with guaranteed "before" and "after" steps.
public class NaiveService {
private final DataSource dataSource;
/**
* @param resourceName name of resource you want
* @return stream to resource
* (YOU MUST CLOSE THIS! TRY-FINALLY!
* SEVEN YEARS' BAD LUCK IF YOU DON'T!)
*/
public InputStream getResource(String resourceName) {
return dataSource.open(resourceName);
}
}
public class IncompetentClient {
private final NaiveService service;
public Model servePage(String pageName) {
Model model = new Model();
InputStream resource = service.getResource(pageName);
byte[] data = ByteStreams.toByteArray(resource);
model.addAttribute("data", data);
return model; // ...oops, forget something?
}
}
public class CynicalService {
private final DataSource dataSource;
public void getResource(String resourceName,
Consumer<InputStream> callback) {
try (InputStream resource = dataSource.open(resourceName)) {
callback.accept(resource);
}
}
}
public class IncompetentClient {
private final CynicalService service;
public Model servePage(String pageName) {
Model model = new Model();
service.getResource(pageName, resource -> {
byte[] data = ByteStreams.toByteArray(resource);
model.addAttribute("data", data);
});
return model;
}
}
Optional
classOptional
is a utility class that helps prevent null pointer exceptions.
Its purpose is to explicitly mark a value that, logically, may be either present or absent.
It works by convention:
we NEVER allow null
to be assigned to a variable of the Optional
type.
Optional
objects are immutable.
Optional
instances| Method | Use it if... |
|---|---|
Optional.of(x) |
x is definitely not null |
Optional.ofNullable(x) |
x may be null |
Optional.empty() |
The value is always logically absent |
Optional
instances| Method | Use it if... |
|---|---|
boolean isPresent() |
Checks whether it is present. |
T get() |
Gets value only if present. Throws an exception otherwise. |
T orElse(T other) |
Gets value, or a default. orElse(null) is common. |
Optional
has several lambda-licious utility methods that capture the most commons use patterns.
If you get comfortable with them, you'll almost never have to write if (optional.isPresent())
.
The simplest is ifPresent
, which takes the if
body as a Consumer
.
private final Optional<Issue> currentIssue;
public void addTo(Volume volume) {
if (currentIssue.isPresent()) {
volume.getIssues().add(currentIssue.get());
}
}
private final Optional<Issue> currentIssue;
public void addTo(Volume volume) {
currentIssue.ifPresent(issue -> {
volume.getIssues().add(issue);
});
}
orElse
provides a default value.
private final Issue defaultIssue;
private final Optional<Issue> currentIssue;
public void addTo(Volume volume) {
volume.getIssues().add(
currentIssue.isPresent() ? currentIssue.get() : defaultIssue);
}
private final Issue defaultIssue;
private final Optional<Issue> currentIssue;
public void addTo(Volume volume) {
volume.getIssues().add(currentIssue.orElse(defaultIssue));
}
What if getting the default value is expensive?
Use lazy evaluation with a Supplier
!
private final Optional<Issue> currentIssue;
public void addTo(Volume volume) {
Issue next = currentIssue.isPresent() ? currentIssue.get()
: fetchDefaultIssue();
volume.getIssues().add(next);
}
private final Optional<Issue> currentIssue;
public void addTo(Volume volume) {
Issue next = currentIssue.orElseGet(() -> fetchDefaultIssue());
volume.getIssues().add(next);
}
orElseThrow
takes an exception supplier. This is the best way to indicate that you
expect a value to be present. It is clearer than relying on get()
's exception.
String unpackName(Optional<String> name) {
if (name.isPresent()) {
return name.get();
} else {
throw new IllegalArgumentException("Name must be present");
}
}
String unpackName(Optional<String> name) {
return name.orElseThrow(() ->
new IllegalArgumentException("Name must be present"));
}
Use map
to apply an operation to an Optional
object's value, leaving it empty if it
is empty.
Optional<String> makeAttribution(Optional<String> name) {
return name.isPresent()
? Optional.of("By: " + name.get())
: Optional.empty();
}
Optional<String> makeAttribution(Optional<String> name) {
return name.map(nameValue -> "By: " + nameValue);
}
map
and orElse
chain nicely.
String makeAttribution(Optional<String> name) {
return name.isPresent()
? "By: " + name.get()
: "(anonymous)";
}
String makeAttribution(Optional<String> name) {
return name.map(nameValue -> "By: " + nameValue)
.orElse("(anonymous)");
}
Use filter
to apply a condition.
private final Optional<Issue> currentIssue;
Optional<Issue> getCurrentImageIssue() {
if (currentIssue.isPresent()) {
return (currentIssue.get().getImageUri() != null)
? currentIssue : Optional.empty();
} else {
return Optional.empty();
}
}
private final Optional<Issue> currentIssue;
Optional<Issue> getCurrentImageIssue() {
return currentIssue.filter(issue -> issue.getImageUri() != null);
}
Use flatMap
to capture conditional logic by mapping onto another Optional
.
private final Optional<Issue> currentIssue;
Optional<String> getCurrentImageUri() {
return currentIssue.isPresent()
? Optional.ofNullable(currentIssue.get().getImageUri())
: Optional.empty();
}
private final Optional<Issue> currentIssue;
Optional<String> getCurrentImageUri() {
return currentIssue.flatMap(image ->
Optional.ofNullable(currentIssue.get().getImageUri()));
}
private final Map<Category, Double> weights;
public double lookUpWeight(Category category) {
return weights.containsKey(category) ?
weights.get(category) : 0.0;
}
private final Map<Category, Double> weights;
public double lookUpWeight(Category category) {
return weights.getOrDefault(category, 0.0);
}
private final CategoryService categoryService;
private final Map<Category, Double> memo;
public double getWeight(Category category) {
if (memo.containsKey(category)) {
return memo.get(category);
}
double weight = categoryService.lookUpWeight(category);
memo.put(category, weight);
return weight;
}
private final CategoryService categoryService;
private final Map<Category, Double> memo;
public double getWeight(Category category) {
return memo.computeIfAbsent(category,
categoryService::lookUpWeight);
}
Comparator<ArticlePerson> personOrder =
(ArticlePerson o1, ArticlePerson o2) -> {
int cmp = o1.getSurnames().compareTo(o2.getSurnames());
if (cmp != 0) return cmp;
cmp = o1.getGivenNames().compareTo(o2.getGivenNames());
if (cmp != 0) return cmp;
return o1.getSuffix().compareTo(o2.getSuffix());
};
Comparator<ArticlePerson> personOrder =
Comparator.comparing(ArticlePerson::getSurnames)
.thenComparing(ArticlePerson::getGivenNames)
.thenComparing(ArticlePerson::getSuffix);
This is the best part.
Streams are a more sophisticated way to think about iteration.
You declare a chain of operations that will be applied to every element in the stream.
If you only do one piece of homework on this subject, check out the stream documentation.
Advantages of streaming over conventional iteration:
Some stream methods are intermediate operations that set up new streams.
Others are terminal operations that consume the stream to give you a result value.
Intermediate operations...
Collector
s
Stream.collect
is a terminal operation that gathers the stream elements, for example, into a
collection or map.
It needs to be passed a Collector
object, which provides reduction operations that will be
efficient even when parallelized.
 In an intermediate operation, the side effect would be wrong.
Generally, use forEach
as little as possible. Most everything you want to do has its own terminal
operation.
List<ArticleView> createViews(Collection
 articles) {
List<ArticleOutputView> views = new ArrayList<>();
for (Article article : articles) {
views.add(new ArticleOutputView(article));
}
return views;
}
List<ArticleOutputView> createViews(Collection
 articles) {
return articles.stream()
.map(ArticleOutputView::new)
.collect(Collectors.toList());
}
List
 getResearchArticles(Collection
 articles) {
List
 researchArticles = new ArrayList<>();
for (Article article : articles) {
if (article.getTypes().contains("research-article")) {
researchArticles.add(article);
}
}
return researchArticles;
}
List
 getResearchArticles(Collection
 articles) {
return articles.stream()
.filter(article ->
article.getTypes().contains("research-article"))
.collect(Collectors.toList());
}
We can chain operations together.
List<ArticleView> getResearchViews(Collection
 articles) {
List<ArticleView> researchArticleViews = new ArrayList<>();
for (Article article : articles) {
if (article.getTypes().contains("research-article")) {
ArticleView view = new ArticleView(article);
researchArticleViews.add(view);
}
}
return researchArticleViews;
}
List<ArticleView> getResearchViews(Collection
 articles) {
return articles.stream()
.filter(article ->
article.getTypes().contains("research-article"))
.map(ArticleView::new)
.collect(Collectors.toList());
}
flatMap
can change the number of elements in a stream. It transforms each element into a new
mini-stream.
List<ArticleAuthor> getAllAuthors(Collection
 articles) {
List<ArticleAuthor> authors = new ArrayList<>();
for (Article article : articles) {
for (ArticleAuthor author : article.getAuthors()) {
authors.add(author);
}
}
return authors;
}
List<ArticleAuthor> getAllAuthors(Collection
 articles) {
return articles.stream()
.flatMap(article -> article.getAuthors().stream())
.collect(Collectors.toList());
}
private boolean isFamousEnough(ArticleAuthor author) {...}
List<ArticleAuthor> getFamousAuthors(Collection
 articles) {
Set<ArticleAuthor> famousAuthors = new HashSet<>();
for (Article article : articles) {
if (article.getTypes().contains("research-article")) {
for (ArticleAuthor author : article.getAuthors()) {
if (isFamousEnough(author)) {
famousAuthors.add(author);
}
}
}
}
List<ArticleAuthor> sorted = new ArrayList<>(famousAuthors);
sorted.sort(Comparator.comparing(ArticleAuthor::getSurnames));
return sorted;
}
private boolean isFamousEnough(ArticleAuthor author) {...}
List<ArticleAuthor> getFamousAuthors(Collection
 articles) {
return articles.stream()
.filter(article ->
article.getTypes().contains("research-article"))
.flatMap(article ->
article.getAuthors().stream())
.distinct() // instead of adding to a HashSet
.filter(this::isFamousEnough)
.sorted(Comparator.comparing(ArticleAuthor::getSurnames))
.collect(Collectors.toList());
}
int computeSum(Collection<Integer> numbers) {
int sum = 0;
for (Integer number : numbers) {
sum += number;
}
return sum;
}
int computeSum(Collection<Integer> numbers) {
IntStream intStream = numbers.stream().mapToInt(Integer::intValue);
return intStream.sum();
}
int computeSum(Collection<Integer> numbers) {
return numbers.stream().mapToInt(Integer::intValue).sum();
}
Define your own reductions!
int computeProduct(Collection<Integer> numbers) {
int product = 1;
for (Integer number : numbers) {
product *= number;
}
return product;
}
int computeProduct(Collection<Integer> numbers) {
return numbers.stream().mapToInt(Integer::intValue)
.reduce(1, (x, y) -> x * y);
}
Article findCorrection(Collection
 articles) {
for (Article article : articles) {
if (article.getTypes().contains("correction")) {
return article;
}
}
throw new IllegalArgumentException("Correction not found");
}
Article findCorrection(Collection
 articles) {
Optional
 correction = articles.stream()
.filter(article ->
article.getTypes().contains("correction"))
.findAny();
return correction.orElseThrow(() ->
new IllegalArgumentException("Correction not found"));
}
Stream
and Optional
chain together very naturally.
Article findCorrection(Collection
 articles) {
for (Article article : articles) {
if (article.getTypes().contains("correction")) {
return article;
}
}
throw new IllegalArgumentException("Correction not found");
}
Article findCorrection(Collection
 articles) {
return articles.stream()
.filter(article ->
article.getTypes().contains("correction"))
.findAny().orElseThrow(() ->
new IllegalArgumentException("Correction not found"));
}
Questions?
These slides use reveal.js.
This work is licensed under a Creative Commons Attribution 4.0 International License.


--- title: Badge minver: 0.10.0 also: guides/react-compatibility/#significant-white-space: Significant White Space (React Compatibility) components/badge/test.html: Testing - Badge --- {% extends 'component.njk' %} {% set contentClasses = 'docs-badge' %} {% block page_header %}
Badges are inline elements that communicate change to an area of the site.
They are implemented by applying the .hxBadge
CSS class
to a <span>
element.
Badges may be used with a hyperlink to bring attention to new items at the destination.
Badges can be combined with icons to create a compact notification.
Badges may be used in tabs to bring attention to new items in unselected tabs.


This project was how the first few weeks of the class were spent. The Mayfield football team had asked the Engineering class to look at data gathered from opposing teams during the pre-season games and use it to attempt to determine how they would play in the real games. Here is the data sorted out into an excel spreadsheet table:
What we did with the data was up to each student but I personally decided to try to make a chart of all the plays possible and given the conditions determine what plays are likely to be executed.
I didn't get an example photo though as I didn't get very far due to time constraints and how little I knew about how to use Excel spreadsheets.


An NLIDB is an application that allows the user to access and/or retrieve important information from a database without any otherwise required technical knowledge.


{% extends "base.html" %} {% block content %}
A simple, unsecure OpenID Connect (OIDC) Provider, useful for locally testing another application that is an OpenID Connect Relying Party.
Utilizes django-oidc-provider, providing a simply containerized wrapper with the minimal set of templates and configuration to quickly get started.
Start by creating a Client in the Admin.
Admin .well-known OpenID config


Our fully-qualified electricians are experts in residential electrical works and bring a friendly and flexible approach to our domestic customers. We undertake all works in domestic settings and are available for emergency call outs. Contact us now to arrange an appointment or discuss your needs.
- Appliance circuits
- Ceiling fan installation
- Electrical code updates
- Data/communication lines
- Dedicated computer circuits
- Electric water heaters
- Emergency standby generators
- Exhaust fans
- Generator service & maintenance
- Gutter Deicing
- Home safety inspections
- Hot tubs and spas
- Post Lights
- Security Lighting
- Service panel upgrades & replacements
- Smoke detectors
- Whole House Surge protectors
- USB Outlets
- Under Counter Lighting


TN-01 TN-02 TN-03 TN-04 TN-05 TN-06 TN-07 TN-08 TN-09
TN – Sen. Lamar Alexander (R) and Sen. Marsha Blackburn (R)
Committees
Lamar Alexander is the #8 Republican on the Senate Energy Subcommittee on Energy
Lamar Alexander is the #2 Republican on the Senate Appropriations Subcommittee on Commerce, Justice, Science, and Related Agencies
Lamar Alexander is the #3 Republican on the Senate Committee on Appropriations
Lamar Alexander is the #1 Republican on the Senate Appropriations Subcommittee on Energy and Water Development
Lamar Alexander is the #10 Republican on the Senate Committee on Energy and Natural Resources
Marsha Blackburn is the #9 Republican on the Senate Committee on Commerce, Science, and Transportation
HEP Grants
In the past 8 years, this state has received: 33 HEP grants, totalling $6,130,000
Institution Amount ($)
---------------------------------- ------------
University of Tennessee 3,237,000
UNIVERSITY OF TENNESSEE, KNOXVILLE 1,465,000
Vanderbilt University 855,000
VANDERBILT UNIVERSITY 480,000
Pronova Solutions LLC 93,000
ProNova Solutions LLC 0
SC Contracts
In the past 8 years, this state has received: 902 Office of Science contracts, totalling $16,091,197,537
Vendor Amount ($) Item
----------------------------------------------- -------------- -------------------------------------------------------------------------------
UT BATTELLE LIMITED LIABILITY COMPANY 11,148,220,377 OPER OF GOVT R&D GOCO FACILITIES
URS 1,460,826,275 OTHER ENVIRONMENTAL SERVICES
OAK RIDGE ASSOCIATED UNIVERSITIES INCORPORATED 1,068,587,126 EDUCATION/TRAINING- OTHER
OAK RIDGE ASSOCIATED UNIVERSITIES, INCORPORATED 1,017,464,272 EDUCATION/TRAINING- OTHER
WASTREN ADVANTAGE, INC. 239,339,610 HOUSEKEEPING- WASTE TREATMENT/STORAGE
TENNESSEE VALLEY AUTHORITY 203,778,362 UTILITIES- ELECTRIC
NATIONAL STRATEGIC PROTECTIVE SERVICES, LLC 180,169,412 HOUSEKEEPING- GUARD
ISOTEK SYSTEMS LIMITED LIABILITY COMPANY 177,071,563 MAINT-REP-ALT/EPG - NUCLEAR
JOHNSON CONTROLS GOVERNMENT SYSTEMS LLC 75,268,124 CONTRUCT/ALL OTHER NON-BLDG FACS
G4S GOVERNMENT SOLUTIONS INC 43,717,754 HOUSEKEEPING- GUARD
PROFESSIONAL PROJECT SERVICES, INC. 37,455,779 SUPPORT- PROFESSIONAL: ENGINEERING/TECHNICAL
INFORMATION INTERNATIONAL ASSOCIATES, INC. 36,344,418 IT AND TELECOM- OTHER IT AND TELECOMMUNICATIONS
SEC FEDERAL SERVICES CORPORATION 29,886,873 SALVAGE- DEMOLITION OF BUILDINGS
MUTUAL TELECOM SERVICES INC. 28,298,080 IT AND TELECOM- TELECOMMUNICATIONS AND TRANSMISSION
CH2M HILL CONSTRUCTORS, INC. 24,200,000 ARCHITECT AND ENGINEERING- CONSTRUCTION: WASTE TREATMENT AND STORAGE FACILITIES
ATMOS ENERGY MARKETING, LLC 22,077,476 UTILITIES- GAS
NORTH WIND SOLUTIONS, LLC 20,294,528 OPERATION OF WASTE TREATMENT AND STORAGE FACILITIES
ALLIANT ALLIANCE, LLC 19,846,227 IT AND TELECOM- OTHER IT AND TELECOMMUNICATIONS
BEI-JES OAK RIDGE, LLC 16,235,056 SUPPORT- ADMINISTRATIVE: OTHER
CENTERPOINT ENERGY SERVICES, INC. 16,174,911 UTILITIES- GAS
and 420 other firms.
NSF MPS Grants
In the past 8 years, this state has received: 391 NSF MPS grants, totalling $64,249,229
Institution Amount ($)
----------------------------------------------- ------------
UNIVERSITY OF TENNESSEE 26,281,866
VANDERBILT UNIVERSITY, THE 24,791,669
FISK UNIVERSITY 2,394,472
UNIVERSITY OF MEMPHIS, THE 2,392,128
MIDDLE TENNESSEE STATE UNIVERSITY 1,712,454
UNIVERSITY OF MEMPHIS 1,188,963
TENNESSEE TECHNOLOGICAL UNIVERSITY 860,027
MULTIPLE RECIPIENTS 793,000
OAK RIDGE ASSOCIATED UNIVERSITIES, INCORPORAT 754,304
THE VANDERBILT UNIVERSITY 718,933
EAST TENNESSEE STATE UNIVERSITY 630,641
PII REDACTED 350,000
VANDERBILT UNIVERSITY 287,080
AUSTIN PEAY STATE UNIVERSITY 276,082
U OF TENNESSEE KNOXVILLE 265,878
TENNESSEE STATE UNIVERSITY 257,110
RHODES COLLEGE (TENNESSEE), INC. 163,775
REDACTED DUE TO PII 100,000
OAK RIDGE ASSOCIATED UNIVERSITIES, INCORPORATED 30,847
SULI/CCI Interns
From 2014-2016 (only years available), this state had 115 SULI/CCI interns
# Interns Program College
----------- --------- --------------------------------------
49 SULI University of Tennessee, Knoxville
18 SULI Tennessee Technological University
11 SULI University of Tennessee at Chattanooga
8 CCI Pellissippi State Community College
6 CCI Roane State Community College
5 SULI Middle Tennessee State University
3 SULI Vanderbilt University
3 SULI Christian Brothers University
2 SULI East Tennessee State University
2 SULI The University of Memphis
2 CCI Volunteer State Community College
1 SULI Cumberland University
1 SULI Pellissippi State Community College
1 SULI Sewanee: The University of the South
1 SULI The University of Tennessee-Knoxville
1 SULI Austin Peay State University
1 CCI Northeast State Community College
TN-01 – Rep. David P. Roe (R) – Wikipedia
Committees
David P. Roe is not on any of our key committees.
HEP Grants
This district received no SC HEP grants from 2012-2019
SC Contracts
In the past 8 years, this district has received: 4 Office of Science contracts, totalling $169,125
Vendor Amount ($) Item
-------------------------------------- ------------ ---------------------------------------------------
COOKS AIR CONDITIONING & HEATING, INC. 154,774 INSTALLATION OF EQUIPMENT- MISCELLANEOUS
GEO SERVICES, LLC 5,626 SPECIAL STUDIES/ANALYSIS- ENVIRONMENTAL ASSESSMENTS
B & H SALES 5,260 HAND TOOLS, EDGED, NONPOWERED
WATER SOLUTIONS ENGINEERING, LLC 3,465 WATER PURIFICATION EQUIPMENT
NSF MPS Grants
In the past 8 years, this district has received: $630,641 in NSF MPS grants.
Year Institution Amount ($)
------ ------------------------------- ------------
2017 EAST TENNESSEE STATE UNIVERSITY 59,298
2015 EAST TENNESSEE STATE UNIVERSITY 86,660
2014 EAST TENNESSEE STATE UNIVERSITY 108,260
2013 EAST TENNESSEE STATE UNIVERSITY 220,375
2012 EAST TENNESSEE STATE UNIVERSITY 156,048
SULI/CCI Interns
From 2014-2016 (only years available), this district had 3 SULI/CCI interns
Term Name College Host Lab Program
----------- ------------------------ --------------------------------- ----------------------------- ---------
Summer 2016 John Deakins Northeast State Community College Oak Ridge National Laboratory CCI
Summer 2014 Zachary Richard Gable East Tennessee State University Oak Ridge National Laboratory SULI
Spring 2014 April Elizabeth Parkison East Tennessee State University Oak Ridge National Laboratory SULI
TN-02 – Rep. Tim Burchett (R) – Wikipedia
Committees
Tim Burchett is not on any of our key committees.
HEP Grants
In the past 8 years, this district has received: $4,795,000 in SC HEP grants.
Institution Amount ($) Start End Principal Investigator Project Title
---------------------------------- ------------ ------- ------- ---------------------------- ---------------------------------------------------------------------------------------------
ProNova Solutions LLC 0 2016 2018 Derenchuk, Vladimir (Laddie) Compact, low-cost, light-weight, superconducting, ironless cyclotrons for hadron radiotherapy
University of Tennessee 250,000 2016 2017 Cousineau, Maria-Helene Laser Stripping for High Intensity Synchrotrons
Pronova Solutions LLC 93,000 2015 2016 Derenchuk, Vladimir (Laddie) Compact, Low-Cost, Light-Weight, Superconducting, Ironless Cyclotrons For Hadron Radiotherapy
University of Tennessee 1,696,000 2015 Ongoing Kamyshkov, Yuri Elementary Particle Interactions
University of Tennessee 550,000 2014 Ongoing Cousineau, Marie-Helene Laser Stripping for High Intensity Synchrotrons
University of Tennessee 349,000 2014 2016 Kamyshkov, Yuri Neutrino Interactions
University of Tennessee 392,000 2014 2016 Spanier, Stefan Elementary Particle Interactions with CMS at LHC
UNIVERSITY OF TENNESSEE, KNOXVILLE 275,000 2013 2014 Cousineau Laser Stripping for High Intensity Proton Beams
UNIVERSITY OF TENNESSEE, KNOXVILLE 338,000 2013 2014 Kamyshkov Neutrino Interactions
UNIVERSITY OF TENNESSEE, KNOXVILLE 178,000 2013 2014 Spanier Elementary Particle Interactions with CMS at LHC
UNIVERSITY OF TENNESSEE, KNOXVILLE 674,000 2012 2014 Kamyshkov Elementary Particle Interactions
SC Contracts
In the past 8 years, this district has received: 89 Office of Science contracts, totalling $224,103,846
Vendor Amount ($) Item
------------------------------------------- ------------ ---------------------------------------------------------------------------------
NATIONAL STRATEGIC PROTECTIVE SERVICES, LLC 178,822,409 HOUSEKEEPING- GUARD
NORTH WIND SOLUTIONS, LLC 20,294,528 OPERATION OF WASTE TREATMENT AND STORAGE FACILITIES
WYANDOTTE SERVICES 11,265,853 SUPPORT- PROFESSIONAL: OTHER
SYNERGY SOLUTIONS, INCORPORATED 2,951,509 SUPPORT- PROFESSIONAL: OTHER
TRIBALCO, LLC 2,823,116 RADIO AND TELEVISION COMMUNICATION EQUIPMENT, EXCEPT AIRBORNE
AMARC LLC 2,090,863 SUPPORT- PROFESSIONAL: ENGINEERING/TECHNICAL
PREMIERE BUILDING MAINTENANCE CORPORATION 1,752,668 HOUSEKEEPING- CUSTODIAL JANITORIAL
PROFESSIONAL PROJECT SERVICES, INC. 1,165,000 SUPPORT- PROFESSIONAL: ENGINEERING/TECHNICAL
EAST TENNESSEE MECHANICAL CONTRACTORS, INC. 441,602 MAINTENANCE OF HIGHWAYS/ROADS/STREETS/BRIDGES/RAILWAYS
GRIDIRON CONSTRUCTION COMPANY, LLC 230,520 CONSTRUCTION OF OTHER ADMINISTRATIVE FACILITIES AND SERVICE BUILDINGS
OFFICE LEADER CORP. 222,914 OFFICE FURNITURE
BURNETT, ROBERT 206,792 INSTALLATION OF EQUIPMENT- ELECTRICAL AND ELECTRONIC EQUIPMENT COMPONENTS
STRATA G, LLC 164,426 SPECIAL STUDIES/ANALYSIS- ENVIRONMENTAL ASSESSMENTS
DEEP WEB TECHNOLOGIES, INC. 162,000 SUPPORT- ADMINISTRATIVE: INFORMATION RETRIEVAL
COHNREZNICK LLP 150,000 SUPPORT- MANAGEMENT: AUDITING
SHOFFNER MECHANICAL SERVICES, INC. 149,437 MAINT/REPAIR/REBUILD OF EQUIPMENT- ELECTRIC WIRE AND POWER DISTRIBUTION EQUIPMENT
AEROSTAR SES LLC 130,882 CONSTRUCTION OF OFFICE BUILDINGS
HONEYWELL PRODUCTS INC 122,618 MISCELLANEOUS ALARM, SIGNAL, AND SECURITY DETECTION SYSTEMS
K.C. ELECTRICAL CONSTRUCTION, INC. 81,885 INSTALLATION OF EQUIPMENT- ELECTRICAL AND ELECTRONIC EQUIPMENT COMPONENTS
CATALYST TECHNOLOGY GROUP USA, INC. 80,272 ADPE SYSTEM CONFIGURATION
and 37 other firms.
NSF MPS Grants
In the past 8 years, this district has received: $25,458,130 in NSF MPS grants.
Year Institution Amount ($)
------ ------------------------ ------------
2019 UNIVERSITY OF TENNESSEE 147,145
2018 UNIVERSITY OF TENNESSEE 4,563,326
2017 PII REDACTED 150,000
2017 UNIVERSITY OF TENNESSEE 4,259,610
2016 UNIVERSITY OF TENNESSEE 2,530,678
2015 U OF TENNESSEE KNOXVILLE 265,878
2015 UNIVERSITY OF TENNESSEE 2,409,280
2014 UNIVERSITY OF TENNESSEE 4,539,105
2013 UNIVERSITY OF TENNESSEE 3,497,607
2012 UNIVERSITY OF TENNESSEE 3,095,501
SULI/CCI Interns
From 2014-2016 (only years available), this district had 59 SULI/CCI interns
Term Name College Host Lab Program
----------- -------------------------- ------------------------------------- ----------------------------------- ---------
Summer 2016 Harrison Smith Pellissippi State Community College Oak Ridge National Laboratory CCI
Summer 2016 Gerald Liso University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2016 Roman Jennings Sherrod University of Tennessee, Knoxville Princeton Plasma Physics Laboratory SULI
Summer 2016 Alec Michael Affolter University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2016 Victoria Brooks University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2016 Tommy Cianciolo University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2016 Parker James Dulin University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2016 Dallas Hamlin University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2016 Joseph Nathaniel Huber University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2016 Nicholas Daniel Kelley University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2016 Megan Landon University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2016 Christopher Muir University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2016 Lucas Nicely University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2016 Mason Stuart Taylor University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2016 Joseph Warner University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2016 Nabeel Jaser Pellissippi State Community College Oak Ridge National Laboratory CCI
Summer 2015 Demetrios Richard Obenour University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2015 Ryan Prout Pellissippi State Community College Oak Ridge National Laboratory CCI
Summer 2015 Harrison Smith Pellissippi State Community College Oak Ridge National Laboratory CCI
Summer 2015 Benjamin Taylor Pellissippi State Community College Oak Ridge National Laboratory CCI
Summer 2015 Andrew Demitte Valesky Pellissippi State Community College Oak Ridge National Laboratory CCI
Summer 2015 Josh Turan University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2015 Matthew Benjamin Seals University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2015 Grant James Powell University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2015 Nicholas Glenn Combs University of Tennessee, Knoxville Brookhaven National Laboratory SULI
Summer 2015 Robert Terry Moncrief III University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2015 Johan Anantharaj University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2015 James William Kemp University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2015 Amy Albaugh University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2015 Michael Wilder University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2015 Sarah Ann Bleakney University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2015 Aaron Michael Browne University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2015 David Herberich University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2014 Jessica Linn Robins University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2014 David Lu University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2014 Amy Albaugh University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2014 Pranshu Bansal University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2014 Justine Katherine Barry University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2014 Jacob Ray Clower University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2014 Vasile Tudor Garbulet University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2014 Seth Aaron Newport Pellissippi State Community College Oak Ridge National Laboratory CCI
Summer 2014 Samuel Jones The University of Tennessee-Knoxville Oak Ridge National Laboratory SULI
Summer 2014 Duncan Alexander Greeley University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2014 William Hawks University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2014 Davis Raymond Hu University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2014 Mitchell Shope University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2014 Matthew Benjamin Seals University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2014 Benjamin Tyler White University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Summer 2014 Daniel Scott Williams University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Spring 2016 Josh Turan University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Spring 2016 Johnson Luma University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Spring 2016 Brooke Butler University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Spring 2016 Clinton Bocephus Carbonell Pellissippi State Community College Oak Ridge National Laboratory CCI
Spring 2015 Christi Renea Johnson University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Fall 2015 Case Taylor Collins University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Fall 2015 Michael Ryan Smith University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Fall 2015 Josiah Philip Brandt University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
Fall 2014 Tommy Allen Hardin Pellissippi State Community College Oak Ridge National Laboratory SULI
Fall 2014 Angela Nichole Belic University of Tennessee, Knoxville Oak Ridge National Laboratory SULI
TN-03 – Rep. Charles J. “Chuck” Fleischmann (R) – Wikipedia
Committees
Charles J. “Chuck” Fleischmann is the #3 Republican on the House Appropriations Subcommittee on Energy and Water Development
Charles J. “Chuck” Fleischmann is the #12 Republican on the House Committee on Appropriations
HEP Grants
This district received no SC HEP grants from 2012-2019
SC Contracts
In the past 8 years, this district has received: 809 Office of Science contracts, totalling $15,866,770,489
Vendor Amount ($) Item
----------------------------------------------- -------------- -------------------------------------------------------------------------------
UT BATTELLE LIMITED LIABILITY COMPANY 11,148,220,377 OPER OF GOVT R&D GOCO FACILITIES
URS 1,460,826,275 OTHER ENVIRONMENTAL SERVICES
OAK RIDGE ASSOCIATED UNIVERSITIES INCORPORATED 1,068,587,126 EDUCATION/TRAINING- OTHER
OAK RIDGE ASSOCIATED UNIVERSITIES, INCORPORATED 1,017,464,272 EDUCATION/TRAINING- OTHER
WASTREN ADVANTAGE, INC. 239,339,610 HOUSEKEEPING- WASTE TREATMENT/STORAGE
TENNESSEE VALLEY AUTHORITY 203,778,362 UTILITIES- ELECTRIC
ISOTEK SYSTEMS LIMITED LIABILITY COMPANY 177,071,563 MAINT-REP-ALT/EPG - NUCLEAR
JOHNSON CONTROLS GOVERNMENT SYSTEMS LLC 75,268,124 CONTRUCT/ALL OTHER NON-BLDG FACS
G4S GOVERNMENT SOLUTIONS INC 43,717,754 HOUSEKEEPING- GUARD
INFORMATION INTERNATIONAL ASSOCIATES, INC. 36,344,418 IT AND TELECOM- OTHER IT AND TELECOMMUNICATIONS
PROFESSIONAL PROJECT SERVICES, INC. 36,290,779 SUPPORT- PROFESSIONAL: ENGINEERING/TECHNICAL
SEC FEDERAL SERVICES CORPORATION 29,886,873 SALVAGE- DEMOLITION OF BUILDINGS
MUTUAL TELECOM SERVICES INC. 28,298,080 IT AND TELECOM- TELECOMMUNICATIONS AND TRANSMISSION
CH2M HILL CONSTRUCTORS, INC. 24,200,000 ARCHITECT AND ENGINEERING- CONSTRUCTION: WASTE TREATMENT AND STORAGE FACILITIES
ATMOS ENERGY MARKETING, LLC 22,077,476 UTILITIES- GAS
ALLIANT ALLIANCE, LLC 19,846,227 IT AND TELECOM- OTHER IT AND TELECOMMUNICATIONS
BEI-JES OAK RIDGE, LLC 16,235,056 SUPPORT- ADMINISTRATIVE: OTHER
CENTERPOINT ENERGY SERVICES, INC. 16,174,911 UTILITIES- GAS
OAK RIDGE, CITY OF 15,710,362 UTILITIES- WATER
TRIBALCO, LLC 10,008,432 RADIO AND TELEVISION COMMUNICATION EQUIPMENT, EXCEPT AIRBORNE
and 391 other firms.
NSF MPS Grants
In the past 8 years, this district has received: $1,694,874 in NSF MPS grants.
Year Institution Amount ($)
------ ----------------------------------------------- ------------
2018 UNIVERSITY OF TENNESSEE 41,615
2017 OAK RIDGE ASSOCIATED UNIVERSITIES, INCORPORATED 30,847
2017 UNIVERSITY OF TENNESSEE 41,111
2016 OAK RIDGE ASSOCIATED UNIVERSITIES, INCORPORAT 144,147
2015 OAK RIDGE ASSOCIATED UNIVERSITIES, INCORPORAT 38,776
2015 UNIVERSITY OF TENNESSEE 536,997
2014 OAK RIDGE ASSOCIATED UNIVERSITIES, INCORPORAT 41,488
2013 UNIVERSITY OF TENNESSEE 290,000
2012 OAK RIDGE ASSOCIATED UNIVERSITIES, INCORPORAT 529,893
SULI/CCI Interns
From 2014-2016 (only years available), this district had 17 SULI/CCI interns
Term Name College Host Lab Program
----------- --------------------------- -------------------------------------- -------------------------------------- ---------
Summer 2016 Andrew D Drake University of Tennessee at Chattanooga Oak Ridge National Laboratory SULI
Summer 2016 Kathleen Abigail Garrabrant University of Tennessee at Chattanooga Oak Ridge National Laboratory SULI
Summer 2016 Mary Adkisson Roane State Community College Oak Ridge National Laboratory CCI
Summer 2016 Taylor Brandon Lyon University of Tennessee at Chattanooga Oak Ridge National Laboratory SULI
Summer 2016 Tyler Johns University of Tennessee at Chattanooga Oak Ridge National Laboratory SULI
Summer 2016 Kailey Danielle Pemberton Roane State Community College Oak Ridge National Laboratory CCI
Summer 2015 Elizabeth M. Tuggle University of Tennessee at Chattanooga Oak Ridge National Laboratory SULI
Summer 2015 Eric Nolan Roane State Community College Oak Ridge National Laboratory CCI
Summer 2015 Kailey Danielle Pemberton Roane State Community College Oak Ridge National Laboratory CCI
Summer 2015 Lake Thomas Lowe Roane State Community College Lawrence Livermore National Laboratory CCI
Summer 2014 John Patrick O'Brien University of Tennessee at Chattanooga Oak Ridge National Laboratory SULI
Summer 2014 Jeffrey Burks Roane State Community College Oak Ridge National Laboratory CCI
Spring 2015 Dustin Taylor Jones University of Tennessee at Chattanooga Oak Ridge National Laboratory SULI
Spring 2015 Rachel LeeAnn Terry University of Tennessee at Chattanooga National Renewable Energy Laboratory SULI
Spring 2014 Jackson Anthony Stone University of Tennessee at Chattanooga Oak Ridge National Laboratory SULI
Fall 2014 Rachel LeeAnn Terry University of Tennessee at Chattanooga National Renewable Energy Laboratory SULI
Fall 2014 Caleb Michael Wickersham University of Tennessee at Chattanooga Oak Ridge National Laboratory SULI
TN-04 – Rep. Scott DesJarlais (R) – Wikipedia
Committees
Scott DesJarlais is not on any of our key committees.
HEP Grants
This district received no SC HEP grants from 2012-2019
SC Contracts
This district received no SC contracts from 2012-2019
NSF MPS Grants
In the past 8 years, this district has received: $2,042,345 in NSF MPS grants.
Year Institution Amount ($)
------ --------------------------------- ------------
2018 MIDDLE TENNESSEE STATE UNIVERSITY 351,470
2017 MIDDLE TENNESSEE STATE UNIVERSITY 509,982
2016 MIDDLE TENNESSEE STATE UNIVERSITY 619,877
2016 UNIVERSITY OF TENNESSEE 319,842
2015 MIDDLE TENNESSEE STATE UNIVERSITY 155,175
2014 MIDDLE TENNESSEE STATE UNIVERSITY 20,950
2013 MIDDLE TENNESSEE STATE UNIVERSITY 55,000
2013 UNIVERSITY OF TENNESSEE 3,938
2012 UNIVERSITY OF TENNESSEE 6,111
SULI/CCI Interns
From 2014-2016 (only years available), this district had 6 SULI/CCI interns
Term Name College Host Lab Program
----------- -------------------------- ------------------------------------ ------------------------------ ---------
Summer 2016 Josie Simone Lyon Middle Tennessee State University Oak Ridge National Laboratory SULI
Summer 2015 Andy Nicholas Black Middle Tennessee State University Oak Ridge National Laboratory SULI
Summer 2015 Grayson McKenzie Dubois Middle Tennessee State University Oak Ridge National Laboratory SULI
Summer 2015 Josie Simone Lyon Middle Tennessee State University Oak Ridge National Laboratory SULI
Summer 2014 Abigail Brita Tate Brudvig Sewanee: The University of the South Oak Ridge National Laboratory SULI
Fall 2015 Ashley Lyon Middle Tennessee State University Brookhaven National Laboratory SULI
TN-05 – Rep. Jim Cooper (D) – Wikipedia
Committees
Jim Cooper is not on any of our key committees.
HEP Grants
In the past 8 years, this district has received: $1,335,000 in SC HEP grants.
Institution Amount ($) Start End Principal Investigator Project Title
--------------------- ------------ ------- ------- ------------------------ --------------------------------------------------------------------------
Vanderbilt University 92,000 2018 Ongoing Kephart, Thomas Explorations in Theoretical High Energy Physics
Vanderbilt University 83,000 2018 Ongoing Scherrer, Robert Theoretical Studies in Dark Energy and Dark Matter
Vanderbilt University 0 2014 2015 Weiler, Thomas THEORETICAL INVESTIGATIONS IN ELEMENTARY PARTICLE PHYSICS
Vanderbilt University 680,000 2014 Ongoing Weiler, Thomas Theoretical Investigations in Elementary Particle and Cosmological Physics
VANDERBILT UNIVERSITY 480,000 2012 2014 Weiler, Kephart Theoretical Investigations in Elementary Particle Physics
SC Contracts
In the past 8 years, this district has received: 1 Office of Science contracts, totalling $132,506
Year Vendor Amount ($) Item
------ ------------------ ------------ ----------------------------------
2014 ROGERS GROUP, INC. 132,506 CONSTRUCTION OF PARKING FACILITIES
NSF MPS Grants
In the past 8 years, this district has received: $29,542,264 in NSF MPS grants.
Year Institution Amount ($)
------ -------------------------- ------------
2019 VANDERBILT UNIVERSITY, THE 473,784
2018 VANDERBILT UNIVERSITY, THE 1,470,223
2018 REDACTED DUE TO PII 100,000
2018 FISK UNIVERSITY 197,565
2017 VANDERBILT UNIVERSITY, THE 2,794,895
2017 PII REDACTED 200,000
2017 FISK UNIVERSITY 196,675
2016 VANDERBILT UNIVERSITY, THE 2,497,741
2015 VANDERBILT UNIVERSITY 287,080
2015 VANDERBILT UNIVERSITY, THE 4,755,897
2015 FISK UNIVERSITY 158,932
2014 VANDERBILT UNIVERSITY, THE 1,292,913
2014 MULTIPLE RECIPIENTS 89,000
2014 FISK UNIVERSITY 1,390,000
2013 VANDERBILT UNIVERSITY, THE 5,420,848
2013 THE VANDERBILT UNIVERSITY 364,517
2013 TENNESSEE STATE UNIVERSITY 257,110
2013 MULTIPLE RECIPIENTS 265,000
2012 MULTIPLE RECIPIENTS 439,000
2012 VANDERBILT UNIVERSITY, THE 6,085,368
2012 THE VANDERBILT UNIVERSITY 354,416
2012 FISK UNIVERSITY 451,300
SULI/CCI Interns
From 2014-2016 (only years available), this district had 3 SULI/CCI interns
Term Name College Host Lab Program
----------- ------------- --------------------- ------------------------------------- ---------
Summer 2016 Timothy Jiang Vanderbilt University Oak Ridge National Laboratory SULI
Summer 2015 Sirui Ma Vanderbilt University Oak Ridge National Laboratory SULI
Summer 2014 Michelle Roh Vanderbilt University Lawrence Berkeley National Laboratory SULI
TN-06 – Rep. John W. Rose (R) – Wikipedia
Committees
John W. Rose is not on any of our key committees.
HEP Grants
This district received no SC HEP grants from 2012-2019
SC Contracts
This district received no SC contracts from 2012-2019
NSF MPS Grants
In the past 8 years, this district has received: $860,027 in NSF MPS grants.
Year Institution Amount ($)
------ ---------------------------------- ------------
2018 TENNESSEE TECHNOLOGICAL UNIVERSITY 134,849
2017 TENNESSEE TECHNOLOGICAL UNIVERSITY 159,849
2016 TENNESSEE TECHNOLOGICAL UNIVERSITY 154,849
2015 TENNESSEE TECHNOLOGICAL UNIVERSITY 410,480
SULI/CCI Interns
From 2014-2016 (only years available), this district had 21 SULI/CCI interns
Term Name College Host Lab Program
----------- ------------------------ ---------------------------------- ------------------------------------- ---------
Summer 2016 Jameson Landon Tyler Tennessee Technological University Oak Ridge National Laboratory SULI
Summer 2016 Michaela Stockdale Tennessee Technological University Oak Ridge National Laboratory SULI
Summer 2016 Michael David Roberts Tennessee Technological University Oak Ridge National Laboratory SULI
Summer 2016 Ian Louis Gwaltney Tennessee Technological University Oak Ridge National Laboratory SULI
Summer 2016 Austin Joseph Garrabrant Tennessee Technological University Oak Ridge National Laboratory SULI
Summer 2015 Andrew Pachuilo Tennessee Technological University Oak Ridge National Laboratory SULI
Summer 2015 Michael David Roberts Tennessee Technological University Oak Ridge National Laboratory SULI
Summer 2015 Andrew Wilson Tennessee Technological University Pacific Northwest National Laboratory SULI
Summer 2015 Taylor Hidalgo Tennessee Technological University Oak Ridge National Laboratory SULI
Summer 2015 Rebecca Neuenschwander Tennessee Technological University Oak Ridge National Laboratory SULI
Summer 2014 Andrew D Drake Volunteer State Community College Oak Ridge National Laboratory CCI
Summer 2014 Jesse Schmitz Volunteer State Community College Oak Ridge National Laboratory CCI
Summer 2014 Benjamin Mark Rogers Tennessee Technological University Oak Ridge National Laboratory SULI
Summer 2014 April Elizabeth Parkison Tennessee Technological University Oak Ridge National Laboratory SULI
Summer 2014 Matilda Lane Tennessee Technological University Oak Ridge National Laboratory SULI
Summer 2014 Christa Nicole Cody Tennessee Technological University Oak Ridge National Laboratory SULI
Summer 2014 Tandy Carmichael Tennessee Technological University Oak Ridge National Laboratory SULI
Spring 2014 Mariatou Sisay Tennessee Technological University Pacific Northwest National Laboratory SULI
Spring 2014 Benjamin Mark Rogers Tennessee Technological University Argonne National Laboratory SULI
Fall 2015 Dustin Ray Morris Tennessee Technological University Oak Ridge National Laboratory SULI
Fall 2015 Nathan Paul Riggsbee Cumberland University Oak Ridge National Laboratory SULI
TN-07 – Rep. Mark E. Green (R) – Wikipedia
Committees
Mark E. Green is not on any of our key committees.
HEP Grants
This district received no SC HEP grants from 2012-2019
SC Contracts
In the past 8 years, this district has received: 1 Office of Science contracts, totalling $3,708
Year Vendor Amount ($) Item
------ ---------------- ------------ ---------------
2013 ASE DIRECT, INC. 3,708 OFFICE SUPPLIES
NSF MPS Grants
In the past 8 years, this district has received: $200,000 in NSF MPS grants.
Year Institution Amount ($)
------ ---------------------------- ------------
2014 AUSTIN PEAY STATE UNIVERSITY 200,000
SULI/CCI Interns
From 2014-2016 (only years available), this district had 1 SULI/CCI intern
Term Name College Host Lab Program
----------- ----------------------- ---------------------------- ------------------------------ ---------
Summer 2014 Christopher Robyn Hayes Austin Peay State University Brookhaven National Laboratory SULI
TN-08 – Rep. David Kustoff (R) – Wikipedia
Committees
David Kustoff is not on any of our key committees.
HEP Grants
This district received no SC HEP grants from 2012-2019
SC Contracts
This district received no SC contracts from 2012-2019
NSF MPS Grants
In the past 8 years, this district has received: $76,082 in NSF MPS grants.
Year Institution Amount ($)
------ ---------------------------- ------------
2017 AUSTIN PEAY STATE UNIVERSITY 76,082
SULI/CCI Interns
This district had no SULI/CCI interns from 2014-2016 (only years available)
TN-09 – Rep. Steve Cohen (D) – Wikipedia
Committees
Steve Cohen is the #12 Democrat on the House Committee on Science, Space, and Technology
Steve Cohen is the #7 Democrat on the House Committee on Science, Space, and Technology; Subcommittee on Research and Technology
HEP Grants
This district received no SC HEP grants from 2012-2019
SC Contracts
In the past 8 years, this district has received: 3 Office of Science contracts, totalling $17,863
Year Vendor Amount ($) Item
------ --------------------------- ------------ -----------------------------------------------------
2015 INTERACTIVE SOLUTIONS, INC. 6,434 IT AND TELECOM- TELECOMMUNICATIONS NETWORK MANAGEMENT
2014 INTERACTIVE SOLUTIONS, INC. 5,943 TELEPHONE AND TELEGRAPH EQUIPMENT
2013 INTERACTIVE SOLUTIONS, INC. 5,486 TELEPHONE AND TELEGRAPH EQUIPMENT
NSF MPS Grants
In the past 8 years, this district has received: $3,744,866 in NSF MPS grants.
Year Institution Amount ($)
------ -------------------------------- ------------
2018 UNIVERSITY OF MEMPHIS, THE 557,903
2017 RHODES COLLEGE (TENNESSEE), INC. 114,000
2017 UNIVERSITY OF MEMPHIS, THE 504,999
2016 UNIVERSITY OF MEMPHIS, THE 145,000
2015 UNIVERSITY OF MEMPHIS 40,000
2015 UNIVERSITY OF MEMPHIS, THE 444,312
2014 UNIVERSITY OF MEMPHIS, THE 739,914
2013 UNIVERSITY OF MEMPHIS 579,963
2012 RHODES COLLEGE (TENNESSEE), INC. 49,775
2012 UNIVERSITY OF MEMPHIS 569,000
SULI/CCI Interns
From 2014-2016 (only years available), this district had 5 SULI/CCI interns
Term Name College Host Lab Program
----------- --------------------------- ----------------------------- ---------------------------------------------- ---------
Summer 2016 Christopher Xavien Chattman The University of Memphis Thomas Jefferson National Accelerator Facility SULI
Summer 2015 Christopher Xavien Chattman The University of Memphis Thomas Jefferson National Accelerator Facility SULI
Summer 2014 Amanda Duckhorn Christian Brothers University Argonne National Laboratory SULI
Summer 2014 George Edward Gallarno Christian Brothers University Oak Ridge National Laboratory SULI
Summer 2014 Rebekah Herrman Christian Brothers University Oak Ridge National Laboratory SULI


A fatal exception 0x1337 has occurred at ./app.js:1. The current website will be terminated.
Please enable Javascript in your browser settings! This website will not work without it!
Press F5 to continue _


Chemists create new route to PHAs: Naturally degradable bioplastics
Chemical catalysis for an existing class of biomaterials
| Source: | Colorado State University |
| Summary: | A new study demonstrates a chemical catalysis path for making an existing class of biomaterials called PHAs — already gaining momentum in industrial settings — even more commercially viable and structurally diverse. |
A tide of public momentum is swelling against the crisis of petroleum-based plastics, which are sitting in our landfills, floating in our oceans, and showing up in our air and even our food.
Meanwhile, in a Colorado State University chemistry laboratory, polymer scientists are toiling toward what they think is a viable solution. Every day, they are working on new chemistry for sustainable materials that could compete with, and eventually even replace, the hard-to-recycle, non-degradable commodity plastics that have overwhelmed our environment for decades.
Eugene Chen, professor in the Department of Chemistry, has led a new study demonstrating a chemical catalysis path for making an existing class of biomaterials — already gaining momentum in industrial settings — even more commercially viable and structurally diverse. The results are published in the journal Science, and the paper includes first author Xiaoyan Tang and graduate student co-authors Andrea Westlie and Eli Watson.
In recent years, Chen has focused some of his lab's efforts on a set of biomaterials called PHAs, or polyhydroxyalkanoates. They're a class of polyesters, produced by bacteria, that are biodegradable to a degree not seen in commercial plastics. They beat out "compostable" bioplastics made out of polylactic acid (PLA) by degrading naturally in oceans and landfills, whereas PLA needs to be composted industrially. Some see PHAs as a beacon in a dark, plastics-filled world, with companies already trying to create an industry around such bio-based materials.
But PHAs have their limitations. They are made in bioreactors where communities of bacteria convert biorenewable carbon feedstocks, such as sugars, into the simplest form of PHA, called poly(3-hydroxybutyrate), or P3HB. Different carbon sources and bacteria can also make other PHA derivatives. These biosynthesis setups are currently expensive, relatively slow and hampered by their limited scalability and productivity.
In their Science paper, Chen and colleagues attack those limitations one by one, offering a novel, chemical synthetic pathway for making conventional and new PHAs with enhanced, tunable, mechanical and physical properties. These are the very characteristics that made petroleum plastics so ubiquitous in our world.
The CSU polymer chemists report that their new polymerization methodology is enabled by catalysts that directly polymerize a bio-sourced monomer called 8DL that exists in a form called stereo-isomers. The catalyzed polymerization produces orderly, crystalline, so-called "stereosequenced" PHAs. In the lab, the researchers showed their materials' ductility and toughness, and their ability to tune the structure and function of their materials.
"We wanted to solve the bottleneck issue," Chen said. "How can we develop the chemical catalysis pathway to this fantastic class of biodegradable plastics so that you have, basically, scalability, fast production and tunability to make different PHAs? ... That was the motivation."
This work built on previously published research that appeared in Nature Communications. Then, the researchers used their chemical synthesis pathway to make P3HB, one of 150 PHA biomaterials. But P3HB is relatively brittle, making it impractical for many petroleum plastics applications of today.
Chen stresses that he is not an expert in biosynthetic pathways for making PHAs. However, his lab is offering the technologically advantageous chemical catalysis approach to both existing and new PHA materials — which could play a big role in solving the plastics crisis of our generation.
make a difference: sponsored opportunity
Story Source:
Materials provided by Colorado State University.
Note: Content may be edited for style and length.
Journal Reference:
- Xiaoyan Tang, Andrea H. Westlie, Eli M. Watson, Eugene Y.-X. Chen. Stereosequenced crystalline polyhydroxyalkanoates from diastereomeric monomer mixtures. Science, 2019; 366 (6466): 754 DOI: 10.1126/science.aax8466
Cite This Page:
| MLA | Colorado State University. "Chemists create new route to PHAs: Naturally degradable bioplastics: Chemical catalysis for an existing class of biomaterials." ScienceDaily. ScienceDaily, 21 November 2019. <www.sciencedaily.com/releases/2019/11/191121121806.htm>. |
| APA | Colorado State University. (2019, November 21). Chemists create new route to PHAs: Naturally degradable bioplastics: Chemical catalysis for an existing class of biomaterials. ScienceDaily. Retrieved November 21, 2019 from www.sciencedaily.com/releases/2019/11/191121121806.htm |
| Chicago | Colorado State University. "Chemists create new route to PHAs: Naturally degradable bioplastics: Chemical catalysis for an existing class of biomaterials." ScienceDaily. www.sciencedaily.com/releases/2019/11/191121121806.htm (accessed November 21, 2019). |


The Utopian proof of concept, first ran as a fork of Busy.org and then spread across different frontends, has proved Utopian has the potential to grow into a sustainable business. It is time for Utopian to make a shift, from a POC to a full-featured product, Utopian V2, scheduled for early Q2 2019.
During the last few months, Utopian has focused on evaluating and creating a strong business model and product specs, merging together all the lessons we’ve learned and feedback we’ve received from our community and partners during the past year.
We have collected almost 70K contributions for over 8k open source repositories, and delivered incentives worth millions of dollars. We are proud to say no competition in the blockchain space can yet show these numbers.
Utopian V2: The Social Platform for Collaboration and Collective Funding of Open Source Innovation.
We have great confidence in the product we’re building, and we’re ready to take the next step, seeking investors for the A round of the Utopian company.
Our Key Advantages
- Truly customized for the unique needs of the open source ecosystem
- Supporting a broad spectrum of professions
- Integrated quality assurance
- Incentivised knowledge sharing
- STEEM-based incentives (employing our delegated stake on the blockchain)
- Multi-currency support
- Existing network of partners
- Engaged and active contributor community
We couldn’t be prouder to mention our team as definitely the most important key advantage.
The Utopian core team has, collectively, over 130 years of experience in building and managing innovative online solutions and businesses.
Our community of reviewers, made up of 50 members across the world, speaking 29 languages.
1M USD for year 2019
We believe any serious startup which wants to get global success has to find ways to build a solid financial base. We have considered many options, including launching a token, crowdfunding, and others. While we’re still considering executing these in the near future, we strongly believe seeking standard investments is the best choice for us at this moment.
Utopian is seeking a 1M investment round for the year 2019.
If you would like to invest in Utopian and receive our investor pitch deck, please get in touch with us<EMAIL_ADDRESS>This page is synchronized from the post: Utopian is ready to seek investors. 1M USD goal for year 2019


Forgot Password. Register
Copyright © 2017 FumiWare. All rights reserved. Interface is based on Gentelella Alela.
Existing user? Log in
Register with Facebook account
Already a member ? Log in


Version
Thanks for choosing to use SilverStripe! Please follow the instructions below and you should be up in running in no time.
If you get stuck, head over to the installation forum, or check out our list of suggested web hosts known to work with SilverStripe.


Today Prize: {{events.product_name}}
RULES: the first one to Bid win the Prize
Finished! click on Winnerboard
Zpulse


WITNESS LIST Urban Affairs Committee May 3, 2005-8:00A HB 3545 For: Garver, C.M. Mike (Buffalo Bayou Partnership Ann Olson) Olson, Anne (Buffalo Bayou Partnership) Wallace, Barron (Buffalo Bayou Partnership) HB 3558 For: Hall, Randal (Grace M. Lewis Family Trust by Sonrisa Development as Manager) Lary, Trey (Grace M. Lewis Family Trust) SB 787 For: Roberts, Arthur (TX Assoc. of Business, TX Chamber of Commerce Executives)


| Apache Struts 2 Documentation > Home > Guides > Tag Developers Guide > Struts Tags > Tag Reference > Generic Tag Reference > param |
| Please make sure you have read the Tag Syntax document and understand how tag attribute syntax works. |
This tag can be used to parameterize other tags.
The include tag and bean tag are examples of such tags.The parameters can be added with or without a name as key. If the tag provides a name attribute the parameters are added using the {@link Component#addParameter(String, Object) addParamter} method. For unnamed parameters the Tag must implement the UnnamedParametric interface defined in this class (e.g. The TextTag does this).
This tag has the following two paramters.
Note:
When you declare the param tag, the value can be defined in either a value attribute or
as text between the start and end tag. Struts behaves a bit different according to these two situations.
This is best illustrated using an example:
<param name="color">blue</param> <-- (A) -->
<param name="color" value="blue"/> <-- (B) -->
In the first situation (A) the value would be evaluated to the stack as a java.lang.String object.
And in situation (B) the value would be evaluated to the stack as a java.lang.Object object.
For more information see WW-808.
Name |
Required |
Default |
Evaluated |
Type |
Description |
|---|---|---|---|---|---|
| id | false | true | String | id for referencing element. For UI and form tags it will be used as HTML id attribute | |
| name | false | true | String | Name of Parameter to set | |
| value | false | The value of evaluating provided name against stack | true | String | Value expression for Parameter to set |
<pre> <ui:component> <ui:param name="key" value="[0]"/> <ui:param name="value" value="[1]"/> <ui:param name="context" value="[2]"/> </ui:component> </pre>
where the key will be the identifier and the value the result of an OGNL expression run against the current ValueStack.


Like Robert De Niro in The Irishman, these answers have undergone de-aging technology--in each, the substring AGE has been replaced with a single letter. In order of the given blanks:
| STONED | STONE AGE | D |
| OUTRE | OUTRAGE | E |
| PASS AWAY | PASSAGEWAY | A |
| DAMN | DAMAGE | N |
| STORM | STORAGE | M |
| ANT | AGENT | A |
| ERR | EAGER | R |
| COURT | COURAGE | T |
| WIRED | WAGERED | I |
| LINENS | LINEAGES | N |
The answer is DEAN MARTIN.
Each of these answers is something that's made of two pieces or parts joined together or mixed in some way. Enter their component parts in the blanks and read the highlighted letters.
| SEMICOLON | COMMA | PERIOD | M | I |
| CONGRESS | SENATE | HOUSE OF REPRESENTATIVES | S | T |
| CRYPTIC CLUE | DEFINITION | WORDPLAY | E | R |
| SLOWBRO | SHELLDER | SLOWPOKE | D | E |
| CZECHOSLOVAKIA | CZECH REPUBLIC | SLOVAKIA | B | O |
| GRINDHOUSE | PLANET TERROR | DEATH PROOF | R | A |
| CENTAUR | HORSE | MAN | H | N |
| SCREWDRIVER | ORANGE JUICE | VODKA | A | D |
| TEST SOLUTION BEES IGNORE | AVIATION LAWS | TEST SOLUTION PLEASE IGNORE | O | O |
| TABLE SALT | CHLORINE | SODIUM | L | M |
| BENNIFER | BEN AFFLECK | JENNIFER LOPEZ | A | N |
The indicated letters, reading across in order, spell MISTER DEBORAH NADOOLMAN. Deborah Nadoolman is a costume designer married to director JOHN LANDIS.
This meta was a lot of fun to brainstorm, and I think I captured a wide array of different "types" of combinations or partnerships. Test Solution Bees Ignore is a puzzle solving teams that's well represented on the puzzle Discord I mostly wrote this set for; including them was incredibly indulgent on my part.
This meta is all about false feminines and false diminutives--that is, words that transform into other real words when you incorrectly apply a grammatical transformation. The transformations used are:
| OUT | OUTLET |
| GAUNT | GAUNTLET |
| CHER | CHESS |
| NEEDLER | NEEDLESS |
| BITTERN | BITTERNESS |
| PAL | PALETTE |
| MARION | MARIONETTE |
Reading the indicated letters, acrostic-style, gives MILTON BERLE.
I had a hard time brainstorming answers for this meta, especially after I decided I wanted to make the lengths within each category unique; ideally, each answer would have contributed a single letter to the final answer. I didn't make any effort into making meta answers thematic, instead just assigning answers based on what letters I could extract, but as a coincidence, Milton Berle was known for performing in a dress, making him somewhat apt for the false feminines meta.
Quentin Tarantino is a (widely-rumored) foot fetishist, so this meta's all about removing shoes. Index by the number of pictures into each unshod answer.
| BON MOT | BOOT | 2 | M |
| SLIP OF PAPER | SLIPPER | 4 | A |
| MUGGLE | MULE | 1 | G |
| BILLY GOAT | BOAT | 5 | G |
| SNEAKIER | SNEAKER | 1 | I |
| CLOTHESPEG | CLOG | 3 | E |
| HENRI BECQUEREL | HEEL | 7 | Q |
MAGGIE Q is the answer.
I only know that mule is a type of shoe from other puzzles, but it was one of the first I thought of while writing this. It turns out that, as far as I could tell in my research, "mule" just means that it doesn't have a back, so many slippers and clogs are also mules, but I think the examples of those I found are unambiguous. I believe MUGGLE was still the hardest answer in this (otherwise pretty easy) meta to place, so my apologies to anyone who bashed their head against it.
Much like Jojo Rabbit, these answers all feature a repeated bigram, two letters, than a double letter. (For the regex-inclined, they match the pattern /.*(..)\1..(.)\2.*/
).
| PAPA | RA | ZZ | I | |
| PAPA | LL | OO | KS | |
| TH | ISIS | TH | EE | ND |
| CHE | ESES | OU | FF | LE |
| BARK | ISIS | WI | LL | IN |
| THESORC | ERER | SA | PP | RENTICE |
The numbers given an ordering for the letters in the central, non-repeated bigram; in order, those give RAOUL WALSH.
Hoo boy--this meta turned out much more constrained than I expected. Ideally I would have used both letters from every answer, but it just wasn't possible. PAPAL LOOKS isn't a real phrase, like, at all, but I really, really needed the two Ls. I believe some solvers got stuck because they noticed the repeated bigrams but not the double letters; in retrospect, just focusing on those probably would have been better.
Each two-word answer represents a playing card: One word in every answer can form a two-word phrase with one of the suits ("heart", "club", "diamond", or "spade"), and the other word rhymes with a rank.
| BASEBALL SCORE | baseball diamond | score/four | Four of Diamonds |
| BE BRAVE | Braveheart | be/three | Three of Hearts |
| BLUE BOOK | book club | blue/two | Two of Clubs |
| BRING CONFLICT | conflict diamond | bring/king | King of Diamonds |
| BURN RATE | heartburn | rate/eight | Eight of Hearts |
| DANCE FLOOR | dance club | floor/four | Four of Clubs |
| FIGHT BACK | Fight Club | back/jack | Jack of Clubs |
| FOOT RACE | clubfoot | race/ace | Ace of Clubs |
| SAM MCGEE | Sam Spade | McGee/three | Three of Spades |
| SPRING BREAK | heartbreak | spring/king | King of Hearts |
| STRIP MINE | strip club | mine/nine | Nine of Clubs |
| ZEN GARDEN | garden spade | zen/ten | Ten of Spades |
One path through the logic is as follows:
The final arrangement is thus:
| Four of clubs/DANCE FLOOR | Ace of clubs/FOOT RACE | Nine of clubs/STRIP MINE | Jack of clubs/FIGHT BACK |
| Two of clubs/BLUE BOOK | Ten of spades/ZEN GARDEN | King of hearts/SPRING BREAK | Four of diamonds/BASEBALL SCORE |
| King of diamonds/BRING CONFLICT | Three of hearts/BE BRAVE | Three of spades/SAM MCGEE | Eight of hearts/BURN RATE |
Indexing into the answers by the given numbers gives the answer DONALD GLOVER.
This was probably my favorite meta to write; brainstorming possible answers was a lot of fun, and I was surprised by how many reasonable phrases came out given that when I started it felt so constrained. Unfortunately, one of those fantastic answers, ZEN GARDEN, proved ambiguous--I've never heard of a "garden club", but they apparently exist. I also apologize that for BURN RATE and STRIP MINE, both halves can combine with a suit to make a phrase; in both cases only one half rhymes with a card rank, so it's technically unambiguous, but still more of a red herring than I would have liked.
Each answer refers to a team name used by multiple NCAA Division I schools, which can be entered in the rectangles so that the ellipses can be filled with the name of a rivalry or trophy contested between two schools with those team names; for example, the upper left rectangle is BULLDOG, and the lower left is TIGER, and they're connected by the Deep South's Oldest Rivalry between the Auburn Tigers and the Georgia Bulldogs. A full list of the teams and rivalries used:
| Black and Blue Bowl | Memphis Tigers | Southern Miss Golden Eagles |
| Deep South's Oldest Rivalry | Auburn Tigers | Georgia Bulldogs |
| Egg Bowl | Mississippi State Bulldogs | Ole Miss Rebels |
| Fremont Cannon | Nevada Wolf Pack | UNLV Rebels |
| Magnolia Bowl | LSU Tigers | Ole Miss Rebels |
| Mid-South Rivalry | Memphis Tigers | Ole Miss Rebels |
| O'Rourke-McFadden Trophy | Boston College Eagles | Clemson Tigers |
| Paint Bucket Bowl | Arkansas State Red Wolves | Memphis Tigers |
| Rivalry in Dixie | Louisiana Tech Bulldogs | Southern Miss Golden Eagles |
| Textile Bowl | Clemson Tigers | NC State Wolfpack |
| Tiger Bowl | Auburn Tigers | LSU Tigers |
The answers were the singular form to avoid distinguishing between the Wolf Pack/Wolfpack/Red Wolves. In addition, the Red Wolves and Golden Eagles are indicated by part of the respective box being the color. The final grid:
The extracted letters in order give MING-NA WEN.
Anecdotally, I think this might have been most solvers' last meta, due to a combination of requiring somewhat specific domain knowledge and fiddly research. My original idea was to use all sports, not just college football--my dream was a graph that connected LAKERS to CELTICS to RANGERS to ASTROS (that being NBA, Scottish football, and MLB), but it turns out most of the storied rivalries from American professional sports don't have names. Take a page from college football and give wacky names and trophies to your classic showdowns, sports leagues! I'm afraid that in an actual event, this would be highly, highly backsolvable, which thankfully wasn't a concern here.
Other ideas I had for this meta were about Supreme Court cases and more general rivalries, but the former was basically the Washington round from the 2006 MIT Mystery Hunt and the latter The Trainer from 2020.
Each answer is an event that took place in a specific year, each from a different century. Arrange chronologically and read the last two digits as A=1, B=2...
| DR. BONHAM'S CASE | 1610 | J |
| SOPHIA NATURALIZATION ACT | 1705 | E |
| FIRST VISION | 1820 | T |
| THE SINKING OF THE TITANIC | 1912 | L |
| OBAMA INAUGURATION | 2009 | I |
JET LI is the answer.
One of the solvers mentioned that he didn't remember seeing this meta idea before, which seems hard to believe given how straightforward it is. The only reason I can think of is that you're limited to five or six letters at most, given the paucity of recorded events that far back--SOPHIA NATURALIZATION ACT feels a little obscure to be an answer, but there's not much else for 1705.
Each answer clues a word that starts with PARA-. They also each start with a different letter A to K, which provides an ordering mechanism.
| ARGUMENT | PARAMETER | T |
| BUDGIE | PARAKEET | E |
| CATCH-22 | PARADOX | R |
| DREAMLAND | PARADISE | I |
| ESSAY SECTION | PARAGRAPH | H |
| FRIEND COMPUTER | PARANOIA | A |
| GUARD RAIL | PARAPET | T |
| HARDENING AGENT | PARALYTIC | C |
| IN OTHER WORDS | PARAPHRASE | H |
| JUMPER | PARACHUTE | E |
| KEROSENE | PARAFFIN | R |
The indexed letters spell TERI HATCHER.
Each meta answer is an actor or director who made exactly one movie with a NATO phonetic letter (like Oscar) in the title.
| The Irishman | DEAN MARTIN | Rio Bravo |
| Marriage Story | JOHN LANDIS | Oscar |
| Little Women | MILTON BERLE | The Oscar |
| Once Upon A Time In Hollywood | MAGGIE Q | New York I Love You |
| Jojo Rabbit | RAOUL WALSH | High Sierra |
| Joker | DONALD GLOVER | Magic Mike XXL |
| Ford V Ferrari | MING-NA WEN | Final Fantasy: The Spirits Within |
| 1917 | JET LI | Romeo Must Die |
| Parasite | TERI HATCHER | Tango & Cash |
The NATO letters in order give my favorite movie of the year, BOOKSMART.
Sorry about the Maggie Q and Ming-Na Wen answers; K specifically turned out very hard to indicate with this mechanic (but what was I going to, change my favorite movie?). I wanted to include The Treasure of the Sierra Madre as one of the movies, but it turns out Humphrey Bogart, Walter Huston, and John Huston all worked on other movies with phonetic alphabet letters in the title (Walter Huston in Yankee Doodle Dandy, the other two on High Sierra). I hope everyone had as much fun solving as I did writing these!


PyTorch Design Philosophy¶
This document is designed to help contributors and module maintainers understand the high-level design principles that have developed over time in PyTorch. These are not meant to be hard-and-fast rules, but to serve as a guide to help trade off different concerns and to resolve disagreements that may come up while developing PyTorch. For more information on contributing, module maintainership, and how to escalate a disagreement to the Core Maintainers, please see PyTorch Governance.
Design Principles¶
Principle 1: Usability over Performance¶
This principle may be surprising! As one Hacker News poster wrote: PyTorch is amazing! […] Although I’m confused. How can a ML framework be not obsessed with speed/performance? See Hacker News discussion on PyTorch.
Soumith’s blog post on Growing the PyTorch Community goes into this in some depth, but at a high-level:
PyTorch’s primary goal is usability
A secondary goal is to have reasonable performance
We believe the ability to maintain our flexibility to support researchers who are building on top of our abstractions remains critical. We can’t see what the future of what workloads will be, but we know we want them to be built first on PyTorch and that requires flexibility.
In more concrete terms, we operate in a usability-first manner and try to avoid jumping to restriction-first regimes (for example, static shapes, graph-mode only) without a clear-eyed view of the tradeoffs. Often there is a temptation to impose strict user restrictions upfront because it can simplify implementation, but this comes with risks:
The performance may not be worth the user friction, either because the performance benefit is not compelling enough or it only applies to a relatively narrow set of subproblems.
Even if the performance benefit is compelling, the restrictions can fragment the ecosystem into different sets of limitations that can quickly become incomprehensible to users.
We want users to be able to seamlessly move their PyTorch code to different hardware and software platforms, to interoperate with different libraries and frameworks, and to experience the full richness of the PyTorch user experience, not a least common denominator subset.
Principle 2: Simple Over Easy¶
Here, we borrow from The Zen of Python:
Explicit is better than implicit
Simple is better than complex
A more concise way of describing these two goals is Simple Over Easy. Let’s start with an example because simple and easy are often used interchangeably in everyday English. Consider how one may model devices in PyTorch:
Simple / Explicit (to understand, debug): every tensor is associated with a device. The user explicitly specifies tensor device movement. Operations that require cross-device movement result in an error.
Easy / Implicit (to use): the user does not have to worry about devices; the system figures out the globally optimal device placement.
In this specific case, and as a general design philosophy, PyTorch favors exposing simple and explicit building blocks rather than APIs that are easy-to-use by practitioners. The simple version is immediately understandable and debuggable by a new PyTorch user: you get a clear error if you call an operator requiring cross-device movement at the point in the program where the operator is actually invoked. The easy solution may let a new user move faster initially, but debugging such a system can be complex: How did the system make its determination? What is the API for plugging into such a system and how are objects represented in its IR?
Some classic arguments in favor of this sort of design come from A Note on Distributed Computation (TLDR: Do not model resources with very different performance characteristics uniformly, the details will leak) and the End-to-End Principle (TLDR: building smarts into the lower-layers of the stack can prevent building performant features at higher layers in the stack, and often doesn’t work anyway). For example, we could build operator-level or global device movement rules, but the precise choices aren’t obvious and building an extensible mechanism has unavoidable complexity and latency costs.
A caveat here is that this does not mean that higher-level “easy” APIs are not valuable; certainly there is a value in, for example, higher-levels in the stack to support efficient tensor computations across heterogeneous compute in a large cluster. Instead, what we mean is that focusing on simple lower-level building blocks helps inform the easy API while still maintaining a good experience when users need to leave the beaten path. It also allows space for innovation and the growth of more opinionated tools at a rate we cannot support in the PyTorch core library, but ultimately benefit from, as evidenced by our rich ecosystem. In other words, not automating at the start allows us to potentially reach levels of good automation faster.
Principle 3: Python First with Best In Class Language Interoperability¶
This principle began as Python First:
PyTorch is not a Python binding into a monolithic C++ framework. It is built to be deeply integrated into Python. You can use it naturally like you would use NumPy, SciPy, scikit-learn, or other Python libraries. You can write your new neural network layers in Python itself, using your favorite libraries and use packages such as Cython and Numba. Our goal is to not reinvent the wheel where appropriate.
One thing PyTorch has needed to deal with over the years is Python overhead: we first rewrote the autograd engine in C++, then the majority of operator definitions, then developed TorchScript and the C++ frontend.
Still, working in Python provides easily the best experience for our users: it is flexible, familiar, and perhaps most importantly, has a huge ecosystem of scientific computing libraries and extensions available for use. This fact motivates a few of our most recent contributions, which attempt to hit a Pareto optimal point close to the Python usability end of the curve:
TorchDynamo, a Python frame evaluation tool capable of speeding up existing eager-mode PyTorch programs with minimal user intervention.
torch_function and torch_dispatch extension points, which have enabled Python-first functionality to be built on-top of C++ internals, such as the torch.fx tracer and functorch respectively.
These design principles are not hard-and-fast rules, but hard won choices and anchor how we built PyTorch to be the debuggable, hackable and flexible framework it is today. As we have more contributors and maintainers, we look forward to applying these core principles with you across our libraries and ecosystem. We are also open to evolving them as we learn new things and the AI space evolves, as we know it will.