TODO LIST
Home
About
Projects Done
Contact Info
Explore
Categories of Work
Most Important Tasks
Moderate Important Tasks
Least Important Task
Other Tasks
Todo List App
Added Subjects
Sl.No.
Item Title
Item Description
Required Action
1
Priorities by subsections, make cheatsheats , flashcards
Complete
2
Add
Priorities by subsections, make cheatsheats , flashcards
Complete
3
Priorities by subsections, make cheatsheats , flashcards
Complete


This is home!
Page 2
Select an option
Option 1
Option 2
Open dialog
The main content of the page: it rocks!!
A div in the main
hover
I am hover.
waiting for mouse enter


Dear My beloved One, How are you today?I have just read your company profile and decided to contact you for business pertnership.I am one of the personal aides to president Charles Taylor of Liberia who is presntly living in Nigeria on political assyllum. Pls i need your foreign partnership to assist me invest in your country. i have interest in buying of shares, real estate management and any other profitable business you may wish to recommend for me. I have with me $15.5M for this project. i realized the fund from sales we made in cash from liberia diamond and timber trades during the administration of president charles taylor. This money is presently with.INTERNATIONAL BANK (LIBERIA)LIMITED Address: 64 Broad Street, Monrovia, Liberia. What i have here with me is the Certificate of Deposite,that i obtained from the Bank when the money was been deposited which i will send to you as soon as we proceed. I can assure you that this project will bring us together for a long lasting relationship. I need your private phone number so that i can speak with you.i expect your reply accordingly. My problem now is the world court has given president Charles Taylor mandate to appear in world court,which the Nigeria goverment has already handed him over to the world court for judgement for his past rule to Liberian people. As soon as this money is been transfered to your country, i will come over immediately. Best regards, David jones. (please reply with this email id<EMAIL_ADDRESS>____________________________________________________________________________________ Do you Yahoo!? Everyone is raving about the all-new Yahoo! Mail beta. http://new.mail.yahoo.com


2. Installation
2.3 JAR Files and Dependencies
This sections explains where all the relevant jar files are
located. It also lists Cayenne dependencies.
2.3.1 Cayenne Runtime Framework
There are two Cayenne JAR files in [cayenne_install_dir]/lib/
directory:
cayenne.jar
cayenne-nodeps.jar
Either one or another should be used (but not both of them
at the same time).
In most cases cayenne.jar is the best choice. It has
Cayenne classes as well as all the needed dependencies.
Dependencies are bundled for easier installation and configuration of Cayenne.
They include:
If bundled Cayenne dependencies conflict with other packages installed
on the user machine, a leaner cayenne-nodeps.jar file should be used.
In this case all the dependencies must be installed manually.
cayenne.jar or cayenne-nodeps.jar should be accessible by
the applications that use Cayenne. There are a few "standard" ways of doing it in Java,
like setting CLASSPATH variable, adding file to the WEB-INF/lib/ directory of the web
application, etc.
Warning:
It is NOT recommended to put Cayenne JAR files under
JRE extensions directory ($JRE_HOME/lib/ext or $JAVA_HOME/jre/lib/ext), or include
cayenne.jar in a JVM bootstrap ClassLoader in any other way.
|
The reason for such warning is that classes loaded from extensions
directory have their own ClassLoader and can't directly
access resources associated with other ClassLoaders. Cayenne allows to "bootstrap"
other ClassLoaders for the purpose of resource lookup, but this requires extra code
and doesn't solve all problems.
2.3.2 CayenneModeler Tool
Java classes and resources used exclusively by CayenneModeler and not required
by the runtime are located in [cayenne_install_dir]/lib/modeler/
directory:
cayenne-modeler.jar
scope-bin-1.0.1.jar
forms-1.0.3.jar
plastic-1.1.2.jar
hsqldb-1.7.2.jar
ognl-2.6.5.jar
cayenne-modeler.jar implicitly relies on the presence of
[cayenne_install_dir]/lib/cayenne.jar . Instructions on how to start
modeler can be found here.
|


|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object coins.alias.AliasUtil
A collection of utility methods. Most methods are static,
but some methods need references to root objects such
as HirRoot
or SymRoot
and so
are instance methods.
| Field Summary | |
IoRoot |
io
|
SymRoot |
symRoot
The SymRoot object shared by every module
in the program. |
| Constructor Summary | |
AliasUtil(SymRoot pSymRoot)
Creates a new instance of AliasUtil. |
| Method Summary | |
boolean |
areCompatible(Type pType,
Type pType0)
|
static boolean |
areWeakCompatible(Type pType,
Type pType0)
|
void |
dbg(int pLevel,
java.lang.String pHeader,
java.lang.Object pBody)
Prints out the String representation of the
pBody object headed by pHeader
if the debug level for this alias analysis category is
greater than or equal to pLevel . |
static java.util.Set |
getComponentScalarTypes(Type pType)
|
Elem |
getFirstElem(StructType pStructType)
|
static boolean |
ismalloc(Subp pSubp)
Creates a new instance of AliasUtil that is associated with a specified instance of alias analysis. |
static boolean |
isPredefined(Subp pSubp,
java.util.Set pPredefined)
Returns true if the specified argument is known
to be well behaved. |
static boolean |
isScalar(Type pType)
|
boolean |
mayAlias(Type pType,
Type pType0)
Type-based alias testing. |
(package private) static boolean |
subscriptCheck(VectorType pType,
int pSubscript)
Checks if the specified constant subscript is within the bounds for the specified VectorType object. |
Type |
toBareAndSigned(Type pType)
|
(package private) static java.lang.String |
toString(HIR pHIR)
Returns a String representation of the
specified argument that is more representative than the
one its toString method provides. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
public final SymRoot symRoot
SymRoot
object shared by every module
in the program.
public final IoRoot io
| Constructor Detail |
public AliasUtil(SymRoot pSymRoot)
pSymRoot
- SymRoot
object shared by
every module in the program.| Method Detail |
public static boolean ismalloc(Subp pSubp)
pSubp
- Subp
Sym
to test for.
Sym
.public static boolean isPredefined(Subp pSubp, java.util.Set pPredefined)
true
if the specified argument is known
to be well behaved. Well-behavedness of a subprogram here
means it neither modifies objects (an area in the memory
space) that may be accessed from the code outside of the
subprogram nor stores the addresses of such objects in
storage accessible outside of the subprogram nor it
returns a pointer to such objects. I/O is irrelevant.
Most library functions are well behaved.
pSubp
- Subp
Sym
to test for.
public boolean mayAlias(Type pType, Type pType0)
true
for an aggregate type and its member type.
pType
- Type
of an lvalue to test for aliasing.pType0
- Type
of an lvalue to test for aliasing.
Type
s
can possibly alias.public Type toBareAndSigned(Type pType)
public boolean areCompatible(Type pType, Type pType0)
static java.lang.String toString(HIR pHIR)
String
representation of the
specified argument that is more representative than the
one its toString
method provides.
The returned String
contains representation
for the children of the specified argument.
pHIR
- HIR node whose String
representation
is to be returned.
String
representation
of the specified argument than the one its
toString
method provides.static boolean subscriptCheck(VectorType pType, int pSubscript)
VectorType
object.
pType
- VectorType
object to test against.pSubscript
- constant subscript that is tested to see
if it is in the allowed range for the given VectorType
object.
VectorType
.public static boolean isScalar(Type pType)
public static java.util.Set getComponentScalarTypes(Type pType)
public Elem getFirstElem(StructType pStructType)
public static boolean areWeakCompatible(Type pType, Type pType0)
public void dbg(int pLevel, java.lang.String pHeader, java.lang.Object pBody)
String
representation of the
pBody
object headed by pHeader
if the debug level for this alias analysis category is
greater than or equal to pLevel
.
pLevel
- the debug level required to actually print
the debug information.pHeader
- header for the informationpBody
- body of the informationDebug.printObject(int, String, Object)
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


Leave Room - Stop syncing code.
Join/Leave Call - Join/Leave the voice call.
Fetch Code - Get the other person's code.


Lerwick lies on the east coast of the Shetland Mainland and is Shetland's only town. It is a modern harbour providing support for the offshore oil and gas industry. It is also a busy fishing and ferry port. With two entrances, it is accessible in all weathers.
Report to Lerwick Port Authority to complete necessary paperwork.
All non EEA nationals must contact local Immigration Officer at Lerwick Port Control or MOB 07721 466199)
Berthing is on the yacht pontoons in the Small Dock (located each side of Victoria Pier) or on visitors' buoys.
( photo of Lerwick harbour from Andrus of S/Y Suwena)
Showers available for visiting yachtsmen are located on the lower floor of the Lerwick Boating Club clubhouse. An access key is provided when paying harbour dues at the Port Office.
A useful visitors' pack is available at http://www.lerwick-harbour.co.uk/assets/files/yachtpack.pdf
For connecting to the electricity supply, contact the Port Office. Initial connection can be made Monday to Friday (0700-2000), Saturday (0800-1200) and Sunday (0800-1000). There is a charge.


Overview
We spent today working on schemas and commands in SQLite. One thing that I've realized as I've been working with SQLite is the importance of workflow. People have different ways in which they plan out databases, but I like to first imagine the UI view of my application and then figure out the schema that way. All relationships between tables in databases can be summed up as three different types.
- One to One
- One to Many
- Many to Many
There is a correlation between one object and another. You would join the primary keys of each object together.
There is a correlation between one object and many instances of another object. You would take the primary key of the one object and link it to a foreign key in a many object. Take a look at the example below.
Many to Many relationships are just two distinct one to many relationships with a controller in the middle. Take a look at the example below.
Using SQlite in Ruby
SQlite is a gem in Ruby. You need to require it at the beginning of it as well. THen you need to open the database such as line 8. When you want to run the database and query it, you need to use .execute("SQLITE COMMANDS HERE")


M e t r i c a l
Sessions
Generate Report
Edit Students
Logout
Generate Report
Report Name
From Date
To Date
Report ID
Report Name
From Date
To Date
11111
Test # 1
March 21, 2018
June 21, 2018


This demo shows how to use the beforeDrop callback to prompt a user before completing a drag-drop operation.
You will get a modal confirmation popup any time you try to drop a node as a child of a node with a smaller value. Try dropping 20 under 5 now.
{{ data | json }}


Welcome to WebWorld!
To choose an avatar, touch the Choose Avatar button. Touch an avatar image to select it. To customize an avatar, press Customize.
There are many different worlds in WebWorld. To select a world, press Choose World and move through the worlds to choose. Some worlds are games, with scoring or levels. Other worlds are just for building, exploring and playing.
To start playing with the chosen avatar and world, press Play. You may need to wait a bit until the world initializes.
You can change the view of a world by repeatedly touching the View button. Four different views are available.
Touch the Pause button to pause the world. When paused, you can use your fingers to zoom and rotate your view. You can then take a screen snapshot to record the action!
There are three ways to move your avatar:
Many game worlds have levels to move up in where the game gets harder. To reset the level, use the Reset Level button on the Choose World page.
Enjoy!


Scrolling Text - Easy
Displaying "hello" on the LED matrices
In this project we will be displaying text onto the LED matrix display.
However, it will not be scrolling. For text that is scrolling, see hard.
How it works:
Drawing the text on the LED matrix is a 2 step process:
- First we must draw the text on the screen with
led_matrix.text()
- Then we must tell the Raspberry Pi that we want to show what we have drawn
on the LED matrices, with
led_matrix.show()
.
Try This:
- Change the text "Hello" to something else and see how it displays.
- Does your whole text display?
- How could we show longer text?
- Add more than one
led_matrix.text()
lines, with different text in the parentheses before calling led_matrix.show()
- What happens? Why?
- How do you think we could show one piece of text, wait a couple seconds, clear the screen,
and then display the next piece of text?
See medium for the answer.


Martyna Nowocień
"Od zera do front-end developera" [PL]
2018-03-14
Who am I?
- Front-end developer
- Regular
- Main technologies:
- JavaScript
- React
- HTML
- CSS
- I hope to delve deeper:
- It also used:
- Angular 1.5
- CoffeeScript
- jQuery
- Tizen API
How did I start?
- learning at evenings
- I quit my job and lived from savings
- Took a few freelancers jobs
- Meetups, workshops, conferences
- stubbornness
What do I like?
- Learning
- computer games
- TODO lists!
- multitasking
- being an apprentice
The best choices?
- I am not afraid of lack of knowledge
- Didn't take the best money
The worst choices?
- Job which wasn't like it was promised
- Bad advices
Hard to establish?
- What should I know?
- How much do i need to learn?
- When is it good?
- How much my work is worth?
What I recommend?
- Buy your time
- Learn solving not solution
- Remember what is important to you
See you next month at WarsawJS


Style Guide
Base
Components
Base
Colors
Text blocks
Lists
Forms
Tables
Buttons
Colors
Primary
#6e9924
Secondary
#444444
Third
#aaa


Models¶
Quantum Boltzmann Machine¶
-
class
zyglrox.models.qbm.
QuantumBoltzmannMachine
(nqubits: int, qc: zyglrox.core.circuit.QuantumCircuit, pdf: numpy.ndarray, hamiltonian, optimizer=None, **kwargs)¶ Bases:
object
Quantum Boltzmann Machine according to Kappen (2019)
Initialize
- Args:
- nqubits (int):
The number of qubits in the system.
- qc (QuantumCircuit):
Parametrized quantum circuit for \(N\) spins.
- pdf (np.ndarray):
array containing the target distribution \(q(x)\).
- optimizer (tf.optimizer.Optimizer):
Tensorflow optimizer.
- Returns (inplace):
None
-
train
(eta_qbm=0.001, tol_qbm=0.0001, tol_qve=1e-08, epochs_qbm=100, epochs_qve=1500)¶ Train the quantum Boltzmann machine. We minimize the value of the gradient \(\frac{1}{M}\sum_i^M |\nabla_{\theta_i} \mathcal{L}(\theta)|\) as defined above
- Args:
- eta_qbm (float):
Learning rate for the
QuantumBoltzmannMachine
.- tol_qbm (float):
Tolerance \(\epsilon_{qbm}\) on the mean squared error of the statistics. If the absolute difference between iterations is smaller than this value, training stops.
QuantumBoltzmannMachine
.- tol_qve (float):
Tolerance \(\epsilon_{qve}\) on the energy. If the absolute difference between iterations is smaller than this value, training stops.
- epochs_qbm (int):
Number of max iterations for the training algorithm of the
QuantumBoltzmannMachine
.- epochs_qve (int):
Number of max iterations for the training algorithm
QuantumVariationalEigensolver
.
- Returns (inplace):
None
-
plot
()¶ Plot the convergence of the
QuantumBoltzmannMachine
learning step. Convergence is obtained when \(\frac{1}{M}\sum_i^M |\nabla_{\theta_i} \mathcal{L}(\theta)|<\epsilon_{qbm}\), where \(\epsilon_{qbm}\) is the tolerance defined when calling thetrain
method.- Returns (inplace):
None
-
get_statistics
(plot=True)¶ Compare the statistics of learned
QuantumBoltzmannMachine
with the target ground state statistics.\[\begin{split}\text{MSE}_{h} = \frac{1}{M} \sum_i^M (\langle \sigma_i \rangle - \langle \hat{\sigma}_i \rangle)^2 \\ \text{MSE}_{w} = \frac{1}{M} \sum_{i,j}^M (\langle \sigma_i \sigma_j \rangle - \langle \hat{\sigma}_i \hat{\sigma}_j\rangle)^2\end{split}\]Warning
We do not for sure know if the
QuantumVariatonalEigensolver
was succesful in obtaining the ground state of the model QBM hamiltonian unless we compare it with the exact ground state first.- Args:
- plot (bool):
Whether to plot the training schedule.
- Returns (dict):
Dict with entries ‘field’ and ‘coupling’ with the respective MSE between the circuit and true statistics.
Quantum Variational Eigensolver¶
We have both a Gradient-based and Derivative-free Quantum Variational Eigensolver.
Quantum Variational Eigensolver according to Peruzzo et al.(2014) with gradient based optimization.. |
|
Quantum Variational Eigensolver according to Peruzzo et al.(2014) using only gradient free optimizers.. |


Fitting T2 Data with fitEPGazz.py¶
The python program has been designed/developed to work within a study data directory structure or with single files. The program can fit a number of different models to the data and works with a fitModelData yaml file for input.
Example fitModelData yaml files can be found in the following directories
mristudydescription/
│
└── examples/
│
│
├── fitSingleModelDataYAMLfiles/
│ │
│ ├── fitSingleDataMuscleEPG1nifti.yml
│ ├── fitSingleDataMuscleAzzabouNifti.yml
│ ├── fitSingleDataFatEPG2nifti.yml
│ ├── fitSingleDataEPGAzzAnalyzeOutline.yml
│ └── fitSingleDataEPGAzzAnalyzeIndividual.yml
│
└── fitStudyModelDataYAMLfiles/
│
├── fitStudyDataEPGAzzAnalyze.yml
├── fitStudyDataEPGAzzAnalyze.yml
├── fitStudyDataFatEPG2analyze.yml
├── fitStudyDataMuscleEPG1analyze.yml
└── fitStudyDataMuscleEPG1nifti.yml
The files in the fitSingleModelDataYAMLfiles directory correspond to fitModelData example yaml files that work on single specified datasets.
The files in the fitStudyModelDataYAMLfiles directory correspond to fitModelData example yaml files that work on data in a study data directory structure. In this case, example study data directory structures that work with the yaml files are found in
mristudydescription/
│
└── examples/
│
└── studyDirectoyExamples
│
├── testStudyAnalyze
├── testStudyNiftDIR
└── testStudyNiftiFile
Fitting T2 Data with fitEPGazz.py on named single data files¶
To use the program in this manner one would type the following on the command line after moving to the directory where the fitEPGazz.py is located.
-> python fitEPGazz.py examples\fitSingleModelDataYAMLfiles\fitSingleDataFatEPG2nifti.yml
or just the program name on its own and enter the yaml file using the interactive dialog that pops up.
-> python fitEPGazz.py
Fitting T2 Data with fitEPGazz.py in study directory structures¶
The program can fit data from within a study structure directory. This can be achieved by calling the program from the command line without arguments and interactive dialogs will pop up to ask for the yaml file and then the study directory name.
-> python fitEPGazz.py
The fitModelData yaml file can be supplied on the command line. If the fitSubject parameter list is not empty then an interactive dialog will pop up asking for the path of the study structure directory.
-> python fitEPGazz.py examples\fitStudyModelDataYAMLfiles\fitStudyDataAzzabouAnalyze.yml
Finally, the program can be called with two command line arguments specifying the yaml fitModelData file and the study directory structure path.
-> python fitEPGazz.py examples\fitStudyModelDataYAMLfiles\fitStudyDataAzzabouAnalyze.yml
examples\studyDirectoyExamples\testStudyAnalyze


WITNESS LIST Business & Commerce Committee June 27, 2005 -10:00A SB 20 FOR: Brown, Travis (Public Citizen), Austin, TX ON: Peacock, Bill (Texas Public Policy Foundation), Austin, TX Registering, but not testifying: For: Hinkle, Dan (PV Manufacturers), Austin, TX Jewell, Michael (Direct Energy, CPL Retail Energy, WTU Retail Energy), Austin, TX Ross, Ned (FPL Energy), Houston, TX Stansell, Wade (Association of Electric Companies of Texas, Inc.), Dallas, TX Villareal, Maricella (PV Now), Austin, TX Zion, Mark (Texas Public Power Association), Austin, TX SB 21 FOR: Aghamalian, Brandon (City of Fort Worth, Mayor, City Manager, and City Council), Fort Worth, TX Jewell, Michael (Direct Energy, CPL Retail Energy, WTU Retail Energy), Austin, TX Ratliff, Thomas (Western Wireless), Austin, TX Rusenthal, Chip (Save Muni Wireless), Austin, TX AGAINST: Blackwell, Tom (Self), Dallas, TX Cameron, Skip (Self), Austin, TX Cardenas, Gus (AARP of Texas), Austin, TX Gray, Weldon R. (Texas Statewide Telephone Cooperative, Inc. & Eastex Telephone Cooperative, Inc.), Henderson, TX Newton, Jan (SBC), Austin, TX Siegel, Howard (TEXALTEL), Austin, TX Thompson, Pam (Austin Community Television Producers Advisory Committee), Austin, TX Wray, Stefan (Austin Community Television Producers Advisory Committee), Austin, TX ON: Camacho, Jose A. (Valor Telecom), Austin, TX Carr, Snapper (Texas Municipal League), Austin, TX Erhart, Carl (Verizon Southwest), Austin, TX Grant, Kathy (Texas Cable and Telecommunications Association), Austin, TX Hudson, Paul Chairman (Public Utility Commission), Austin, TX Hunsucker, Michael R. (Sprint), Austin, TX Leahy, Tim (SBC), Austin, TX Parsley, Julie Commissioner (Public Utility Commission), Austin, TX Peacock, Bill (Texas Public Policy Foundation), Austin, TX Registering, but not testifying: For: Heydinger, Ted (Consolidated Communications), Austin, TX On: Matz, Gary (Time Warner Cable), Stanford, CT Rose, Thomas W. (Association of Electric Companies of Texas, Inc.), Dallas, TX SB 40 FOR: Aghamalian, Brandon (City of Fort Worth, Mayor, City Manager, and City Council), Fort Worth, TX Carr, Snapper (Texas Municipal League), Austin, TX Ratliff, Thomas (Western Wireless), Austin, TX Registering, but not testifying: For: Casto, Larry (City of Dallas), Austin, TX Grant, Kathy (Texas Cable and Telecommunications Association), Austin, TX


Done. The original EEPROM data backup has also been downloaded for your safekeeping.
Experimental WebUSB utility to change MAC addresses on AX88179 USB3.0 to GbE devices.
On Windows, use Zadig to switch the loaded driver to WinUSB for Chrome to access it.
Chrome only (unfortunately). Very limited error checking, please understand the risks before use.
Source
@jg_lim


Thanks For the Feedback
Date: June 11th, 2014
Last week, I read this book called "Thanks For The Feedback", by Douglas Stone & Shiela Heen. It is a follow-up to their other book, "Difficult Conversations" about the approach in talking to someone about an uncomforting situation. "Thanks For The Feedback" gives us the other side of that conversation, the person on the receiving end of the conversation. In this book, we are blocked by three things from letting the feedback get to us: truth, relationship, and identity triggers.
A truth trigger is set off by the content of the feedback. We often think the feedback is lousy and incomplete, so it must not pertain to us. At this point, we pass off the feedback and don't find any merit in it. But lots of time there is merit in what is said, as well as not said. I found myself cherry-picking the feedback for only flaws, but I realized that there is a lot of merit in the positive feedback content. Skipping through this can oftentimes ruin my self-esteem because I only hear the bad news and don't attend to the good news, so I could easily pass off the feedback as irrelevant. But with the more recent feedback I've received, I'm looking at the feedback as a whole and trying to access the actionable part of it to really give myself some pointers on how to learn better for myself and everyone else.
A relationship trigger is set off by the person providing the feedback. DBC has done something I've really enjoyed which is anonymous feedback. This partially eliminates the fingerpointing and actually hear what is being said. However, the anonymity is not foolproof and I've caught myself time and again to try to remember who the person giving the feedback is rather than listen to what they've had to say. Allowing the power of my mind to forget things after a week or two has allowed me to break this barrier down a bit more.
An identity trigger is when you've become too overwhelmed to listen to the feedback, and it gets distorted. This emotions may come about by being thrown off-balance from your sense of who you are. I've blocked off a time slot in my schedule in my week to mentally prepare myself for the feedback. It's really important that I can stay level headed. I also keep a notepad handy so I can make notes to myself because I can then try to qualify what is being said and digest the feedback with clarity.
I would suggest this book for everyone because it deals with almost any situation, even the ones we find mundane. For example, the book gives examples of conversations with family members whom you may hold high or low esteem. The book challenges you to have conversations that engage less with emotions and more with content, like having the unconventional question of going back to see what is being argued. I'm recognizing things like trackswitching (a conversation where two people are talking about two entirely different issues) and really trying to apply it to conversation.
From our DBC prep work pairing sessions, the advice was very actionable because it was specific to the material we were learning. Those were easy to qualify. Others weren't, especially those involving emotion or specific contexts. For example, my pair and I agreed to work on the same challenge the next day because we didn't finish. After this session, I worked on the challenge a bit more to try to come up with a working solution. However, this was not good because my pair felt they were left out of the problem solving. I feel I should have been more empathetic, and because empathy is more of an abstraction, it's harder to qualify how I will change this later.
Here are some improvements I am trying to make with my pairing sessions. Be direct about everything in the beginning rather than to waste someone's time later in the session, like how much time I have to do something, how I'm feeling, and how I communicate (i.e. learning styles). My personality is to be very focused and direct, which can be off-putting if my partner is more indirect. If I know this beforehand, it makes it easier to work with because there's fewer chances I'll be taking it personal if problems from this arise.
Writing feedback was challenging because I'm not in the mindset to make my feedback actionable. I've been non-confronting for a good portion of my life, so it was hard to tell people what they could do next time, or learn more of. It took effort to really try to give the best feedback I could and not slump into something lazy, like "You did great. I really don't have much to say." Also, I found myself editing a lot of my feedback, trying to refactor, if you may, my words so I don't write many run-on sentences.
One of the things that has been puzzling me in the feedback is trying to qualify this rating: [This student] was driving when we were pairing. The one definition I keep coming to is "compel (someone) to act in a particular way", and I can't process this correctly because it can mean in a positive or negative light. Seeing how we're trying to be more positive here, I'm compelled to go in that direction. The way I've been qualifying this is by thinking whether or not our pairing session has been moving along in a reasonable fashion (i.e. the flow of activity). This can be disrupted by distracting or going off-topic, although I initially took it as engagement. If you have a different definition of this word or this feedback, please share.
Resources:
- A conversation with Douglas Stone and Sheila Heen, authors of THANKS FOR THE FEEDBACK: The Science and Art of Receiving Feedback
- Find the Coaching in Criticism
- A conversation with Douglas Stone and Sheila Heen, authors of THANKS FOR THE FEEDBACK: The Science and Art of Receiving Feedback
I've changed the order a bit from our blog post exercise and will switch now to pairing. I took pairing as both a learning and a teaching exercise. I know there's usually a gap, even a tiny one, between the pair and me, so there's always a time for clarification. This allows me to really work my brain in other ways to solidify learning if I'm teaching what something means, like using the Feynman Technique, or to explain with metaphor.
We use metaphors contantly: in fact, cognitive linguist George Lakoff... maintains taht we can't even think at all without the use of metaphor. Most humans aren't particularly good at dealing with the abstract: using a metaphor to relate some abstract notion to something concrete, something found in everyday life, makes it much easier for people to grasp.
Andy Hunt, Pragmatic Thinking & Learning, p.87
Also, I've been asking tons of questions while pairing. In past collaborations, I didn't articulate questions I had that I had issues with concepts, so I'll gloss over them and won't return for further comprehension. This all-or-nothing behavior was destructive in my past. Now, whenever I don't understand something, I'll stop the pair and ask. My pairs have been doing the same and I didn't sense much hesitation when they asked. I did, however, notice a lot of people were apologyizing for ignorance, which was discomforting because I've always associated apologies as amends to something that person did wrong. The phrase "ignorance is bliss" never wrang more true. But let's not be a hypocrite here, I spent a good chunk of my life apologizing for things that never needed an apology.
I've had tons of fun working with pairs when we've accomplished a lot in so little time, or when we make comments like "this took me hours to understand and we've taken 15 minutes to get at the core of this concept." However, besides the apologies, the difficult thing for me was to stay driving for long periods of time. I've had a long pairing session for more than two hours, and I was feeling really tired. Pairing is an active engagement, so my mind switches to an active gear. I don't want to appear distracted or take breaks, which can be deterimental to the pair's work engine. But from my last job, I've realized we need those coping moments, and we all have them, and I'm thankful my pairs have been vocal about it because this is an area I'm lacking in. I'm rather frustrated when I can't bust out work for a lot of hours like when I work solo (which is also somewhat unhealthy), but I'm slowing coming around and changing my work ethic.


Noun:
Adjective:
As I was walking my . I saw a ginormous . When it looked back at me it looked very . I started running very ; but then I slipped on a .


by Herman Chau, Jakob Weisblat, and Kat Fang
In ⊥IW.nano, we are able to use size change devices to change sizes to access more of the round. The possible sizes are Small (S), Medium (M), Large (L), and Extra Large (XL).
In general, the ⊥IW.nano individuals are different sizes, and we'll need to be the same size as them in order to talk to them. The Alien Overlord is exceptional in this regard and will talk to us no matter what size we are.
⊥IW.giga
The first of alien we talk to is the Alien Overlord, who gives us the solved "metapuzzle" Rule of Three. It seems as if we had already solved the Alien Overlord's problem.
In ⊥IW.giga, there are transits that require us be certain sizes to cross them, and there's a bridge that requires that we are size "S" to cross it.
There are 5 islands and two additional areas: the basement and the space station. The galactic basement is reachable by falling off the bridge and the space station is connected to two of the islands via transits.
(Phase 1)
The aliens that we can initially talk to:
- Size "M" Alien on Island A: Starting Island (size "M") → Island A.
- Size "S" Alien in Basement: Starting Island (size "M") → Island A → Island C and change to size "S" → Attempt to walk across the bridge but fall into the Basement.
- Size "L" Alien on Island B: Starting Island ("M") → Island A and change to size "L" → Island B.
(Phase 2)
Once we have enough JUICE, the bridge will be fixed and we'll be able to reach more aliens:
- Size "S" Alien on Island A: Starting Island (size "M") → Island A → Island C and change to size "S" → Walk across the bridge to Island A.
- Size "S" Alien in Space Station: Starting Island (size "M") → Island A → Island C and change to size "S" → Walk across the bridge to Island B → Space Station.
(Phase 3)
Once we have even more JUICE, the size "S" → size "M" size change device in the space station will become usable and we can talk to an additional alien:
- Size "L" Alien on Island C: Starting Island (size "M") → Island A → Island C and change to size "S" → Walk across the bridge to Island B → Spac Station and change to size "M" then change to size "L" → Island C.
(Phase 4)
Once we have even more JUICE, the size "L" → size "XL" size change device in the space station will become usable and we can talk to additional aliens:
- Size "XL" Alien in Space Station: Starting Island (size "M") → Island A → Island C and change to size "S" → Walk across the bridge to Island B → Space Station and change to size "M" then change to size "L" and then change to size "XL".
- Size "XL" Alien on Final Island: Starting Island (size "M") → Island A → Island C and change to size "S" → Walk across the bridge to Island B → Space Station and change to size "M" then change to size "L" and then change to size "XL" → Island B → Final Island.
⊥IW.kilo
Once we solve the puzzle Twins, we'll be able to access ⊥IW.kilo. This is located on the starting island in ⊥IW.giga.
In ⊥IW.kilo, there are certain doors that require us to be a certain size to hold open. We are also able to hold these doors open for our teammates. The stairs between the two floors are pretty big, and we need to be size "L" or size "XL" to go up or down them.
(Phase 1)
- Size "L" Kilotechnician on Floor 1: Use the size "M" → "L" device on floor 1 and then go through the bottom-left size "L" door.
(Phase 2)
Once we gain enough JUICE, we'll be able to use the size "L" → size "M" size change device on floor 2.
- Size "M" Kilotechnician on Floor 2: Two teammates need to change to size "L" on floor 1 and go up the stairs to floor 2.
- One teammate will need to stay size "L" while the other teammate needs to use the newly JUICEd device to shrink to size "M". The size "L" teammate holds the door open for the size "M" teammate to go through.
(Phase 3)
Once we gain even more JUICE, we'll be able to use the size "M" → size "S" size change device on floor 2.
- Size "S" Kilotechnician on Floor 2: Use the size "M" → size "L" size change device on floor 1. Go up the stairs to floor 2 and use the size "L" → "M" size change device and then the size "M" → size "S" size change device. A size "M" teammate must hold open the size "M" door and we go through it as we are unable to cross the grate while size "S".
- Size "S" Kilotechnician on Floor 1: Repeat the above steps but fall through the grate on floor 2 while size "S".
(Phase 4)
Once we gain even more JUICE, we'll unlock a size "L" → size "XL" size change device in the interior section of floor 1. This allows you to talk to the final kilotechnician who is behind the size "XL"door.
- Size "XL" Kilotechnician on Floor 1:
⊥IW.milli
Once we have solved the puzzle Level One, we'll unlock ⊥IW.milli. The access point for this is on floor 2 of ⊥IW.kilo.
In ⊥IW.milli, we are able to use all size change devices no matter what size you are.
There are also some buttons that we can step on when we are the appropriate size to make platforms appear for our teammates.
(Phase 1)
- Size "S" Robot: Use the → size "S" size change device next to the special size change device that will takes us back to ⊥IW.kilo.
(Phase 2)
Once we have enough JUICE, we'll be able to use the → size "XL" size change device.
- Size "XL" Robot: Use the → size "S" size change device and cross over to the bottom left section. Use the → size "XL" size change device and walk across the grate to the top left section.
- Size "M" Robot: Have a size "XL" teammate hold down the button in the top left section. Platforms will appear that allow us to walk to the top-left section while size "M".
(Phase 3)
Once we gain even more JUICE, we'll be able to use the → size "L" size change device in the upper left section.
- Bottom-left Size "L" Robot: Use the → size "S" size change device and cross over to the bottom left section. Use the → size "XL" size change device and walk across the grate to the top left section. Use the → size "L" size change device and take the purple teleport crystal back to the bottom-left section.
- Upper-center Size "L" Robot: Use the → size "S" size change device and cross over to the bottom left section. Use the → size "XL" size change device and walk across the grate to the top left section. Use the → size "L" size change device.
- Have a teammate become size "XL" and hold down the button in the top-left section so we can walk across the platform to the upper-center section.
- Rightmost Size "S" Robot: Use the → size "S" size change device.
- Have a size "XL" teammate hold down the top-left section's button.
- Have a size "M" teammate hold down the center section's button.
- Have a size "L" teammate use the teleport crystal to get to and hold down the bottom-left section's button.
- We are then able to walk across the platforms to reach the rightmost section.
TADA! We've now talked to all the problems that the aliens, kilotechnicians, and robots have.


Dili, the capital, is the official entry/exit port for yachts visiting Timor-Leste.
On arrival, the following flags should be hoisted:
You may then proceed to the yacht anchorage on the port side of the main wharf. The yacht anchorage is located at approximately S8° 33.10’ and E125° 34.5’. Take particular note of the small reef in the centre of the yacht anchorage area. After entering the harbour you will notice 2 yellow quarantine buoys on your port side. These are NOT to be used by vessels as they have shifted during heavy weather and now sit on top of reef.
Inwards Clearance Procedures
Papers for clearance into Timor-Leste: Yacht Registration Certificate, a crew list, all passports and USD$30 per crew member for Visa fees, the Port Clearance from your last port of call.
After anchoring, the captain and all crew should come ashore and report to the Maritime Police on the foreshore of Dili Bay. They are open between the hours of 0900-1600 (with normally a long break for lunch).
Follow the directions of the Maritime Police, which will generally be to proceed to the Dili Port Authority for inwards Customs, Immigration, Quarantine, Health and Port clearance. All CIQP officials have offices at the Dili Port Authority. The Customs office is by the gate to the Post, in front of the Hotel Timor.
Customs and Quarantine officials will interview the captain of yacht and decide whether they will be making an inspection of the vessel.
On completing inwards clearance, you will be provided with a Clearance Form stamped by Customs, & Quarantine, plus a formal receipt for visa fees & a visa stamped in each passport.
A crew member must return to the yacht and take down the yellow “Q” flag and hoist the courtesy flag if you had to purchase it in Dili.
Latest report is that clearance is quick and hassle-free. Ensure you submit copies of the various documents as they may not be returned.
A useful place to land the dinghy while clearing in, is just to the left of the ramp to the car ferry.
 An Outward Crew List should also be provided. You will be processed through Immigration and Customs and provided with a Port Clearance from Dili. This Port Clearance will be needed at your next port of entry.
You will also be provided with a Sailing Authorisation for Timor-Leste waters. The Sailing Authorisation allows yachts (which have already cleared from Timor-Leste) to visit all waters and ports of Timor-Leste including Atauro Island and the enclave of Oecusse. The Port Authority/Harbour Master will issues Sailing Authorisations as yachts clear from Dili (and Timor-Leste). Sailing Authorisations are valid for a maximum stay of 3 months in Timor-Leste provided all crew have valid visa extensions for the period of the Sailing Authorisation.
For yachts travelling onwards to Indonesia, yachts are welcome to stopover at the Timor-Leste enclave, Oecusse, which is located on the north coast of West Timor (approximate co-ordinates S09° 10' E124° 20'). Oecusse (also known as Pante Makassar) is almost equidistant from Dili and Kupang (approximately 90 NM from Dili and from Kupang). Oecusse will be automatically included on your Timor-Leste Sailing Authorisation so there is no need to decide about this destination in advance.
Last updated June 2016.
All foreigners seeking to enter Timor-Leste on a temporary visa are required to have a valid national passport with an expiry date not less than 6 months from the date of entry into Timor-Leste and at least two spare pages in their passport.
Each Crew Member will be issued with a 30 day Visa on arrival. This is free for EU citizens and for non-Eu it costs USD$30.
Visas may be extended prospectively for a further 30 days + 30 days (i.e. 60 days in total) for a further payment of USD$35 per 30 day extension. The total cost for a Visa for a 90 day stay is USD$100.
See this most useful Noonsite report on how to obtain an visa extension.
Obtaining a visa for Indonesia: - See this Noonsite report on how to obtain a social visa for Indonesia in Dili.
For further information regarding visa regulations go to the Timor-Leste Immigration Department website at www.migracao.gov.tl
Last updated June 2016.
Guns, firearms and ammunition are strictly prohibited imports into Timor Leste.
Foreign currency must be declared. No more than the equivilent of US$2000 may be imported.
Duty-free alcohol and other goods are permitted as Ships Stores. However, like every other country in the world, you are not permitted to bring these goods ashore except as the individual duty-free allowance of crew members where the limit is strictly 2 litres of alcohol and 1 carton of cigarettes per person.
Last updated June 2016.
Malaria and dengue are common and precautions should be taked.
All water is suspect and should be boiled or sterilized.
Avoid contact with animals as they are generally not vaccinated and can transmit diseases. Use insect repellent, especially at dawn and dusk and sleep with a mosquito net.
Quarantine
Please do not bring any organic materials ashore (for disposal or otherwise) as this will infringe Timor-Leste’s quarantine regulations and protocols.
Timorese traditions of clothing are modest. Garments above the knee (for both men and woman) are rarely acceptable in a professional or traditional social occasion.
Dress standards mean a lot in Timor-Leste. Smart casual clothes are ideal especially when dealing with officials and it is best not to wear expensive jewellery when you are out and about.
When visiting remote islands or villages, basic protocols and respect for local customs and people should be adopted.
It is polite to wait until your host invites you to sit down, or to eat and drink.
No quarantine period required.
Customs Clearance Officer requires certificate (not more than 7 days old) from Veterinarian stating that pet is in good health and vaccination records are current.
NB If travelling via Australia they have very strict regulations


Start the game by choosing a direction with the arrow keys or WASD.
Guide the snake to consume pellets and make the snake grow,
but make sure you don't hit the wall or run into yourself!
Score:


Preparation time
less than 30 mins
Cooking time
less than 10 mins
Serves
Serves 4
Pan-fried plaice fillets served with white crab meat and herbs and a delicious sauce made with the brown crab meat.
Season the plaice with a little salt then dust with the flour.
Heat a frying pan until hot, add half the butter and the plaice fillets, presentation side down and cook for 1- 1 ½ minutes until just cooked then turn over and cook for another 45 seconds.
Remove from the pan and rest for a couple of minutes.
Heat a frying pan until medium hot, add the remaining butter and the samphire and sauté for 2-3 minutes until just tender.
For the white crab, place all the ingredients, except the olive oil and lemon juice, into a bowl and mix well to combine.
Add enough olive oil so that the mixture just holds together if pressed lightly into a quenelle.
Check the seasoning and add a little lemon juice if necessary.
For the brown crab, heat a frying pan until medium hot, add the butter, shallots and garlic and sweat for 2-3 minutes until just softened.
Add the sieved brown crab meat, whisk well to combine then add the white wine and bring to a simmer.
Cook for a minute until just reduced then remove from the heat and whisk in the mayonnaise.
Check the seasoning and add salt and freshly ground black pepper to taste.
To serve, pile some samphire onto the centre of each serving plate then top with a plaice fillet.
Form a quenelle of the white crab meat and set on top of the plaice. Drizzle the brown crab sauce around the edge of the dish.


Watch the trailer for "Wonder Woman 1984"
by David PescovitzIt's not the The New Adventures of Wonder Woman that I grew up with but it does have that Stranger Things/mallwave appeal, and a New Order song. It also has Steve Trevor who most certainly died in the first film but no matter.


--- layout: page title: Photography description: More pics background: '/img/bg-photography.jpg' --- Louis Armstrong Park in New Orleans, Louisiana. Center for Urban Horticulture in Seattle, Washington. Yosemite National Park, California. Roman Forum in Rome, Italy. Along the River Tiber in Rome, Italy. Burano Island near Venice, Italy. Venice, Italy. Along the Grand Canal in Venice, Italy.


Who is in the final of X Factor: Celebrity and when is it?
X Factor: Celebrity has been keeping fans of the show gripped since October after a bunch of famous faces took to the stage for this spin-off of the main series.
And after several weeks of great performances, shock exits and some seriously emotional celebrities, we finally know the four who’ll be battling it out in the final.
Like regular X Factor, there’s a lot at stake, with a record contract awaiting the winning act – but who has made it to the final and who’s the favourite to take the title?
Here’s what you need to know…
Who is in the final of X Factor: Celebrity?
These are the four acts who have made it through to the final:
Megan McKenna
Odds of winning: 1/3
Advertisement Advertisement
Megan McKenna is heading into the final as the hot favourite following a string of impressive performances – potentially handing victory to Louis Walsh as the last remaining act in his Unders category. ‘Megan’s home and hosed as far as the odds are concerned,’ said Ladbrokes Jessica O’Reilly of the reality star’s chances.
Max and Harvey
Odds of winning: 5/1
Social media stars Max and Harvey are second favourites for the title – and could well emerge victorious after impressing the panel and audience with performances of such songs as One Direction’s Kiss You and Panic! At The Disco’s High Hopes
Jenny Ryan
Odds of winning: 6/1
The Chase’s Jenny Ryan – aka The Vixen – almost didn’t make the live shows but was added in by Nicole Scherzinger at the last minute. Which turned out to be a good decision as she’s now in the final and third favourite to win it following epic performances of songs including Rise Like A Phoenix and Skyfall.
V5
Odds of winning: 16/1
Girl group V5 – the second of Simon Cowell’s groups to make it through – won their place in the final after winning Saturday night’s sing-off against Try Star. The girls – social media stars Alondra Martinez, Renata Vaca, Sofia Oliveira, Wendii Sarmiento, and Laura Buitrago – are currently the outsiders for the series title.
Advertisement Advertisement
When is the final of X Factor: Celebrity?
The final airs next Saturday night on ITV from 7.10pm.
Got a showbiz story?
If you've got a story, video or pictures get in touch with the Metro.co.uk Entertainment team by emailing us<EMAIL_ADDRESS>calling 020 3615 2145 or by visiting our Submit Stuff page - we'd love to hear from you.


<EMAIL_ADDRESS>8801833920054
Mon - Fri : 9:00 -1700
menu
Toggle navigation
DUPLEX
HOME
Home V1
Home V2
Home V3
ABOUT
PROJECT
Project-v1
Project-v2
Project-v3
SERVICE
PAGE
Full-Width Blog
Blog details
Shop
BLOG
CONTACT US
Shop
Home / shop
12
showing of results
20
Product Name
$110
ADD TO CHART
Product Name
$110
ADD TO CHART
Product Name
$110
ADD TO CHART
Product Name
$110
ADD TO CHART
Product Name
$110
ADD TO CHART
Product Name
$110
ADD TO CHART
Product Name
$110
ADD TO CHART
Product Name
$110
ADD TO CHART
Product Name
$110
ADD TO CHART
Product Name
$110
ADD TO CHART
Product Name
$110
ADD TO CHART
Product Name
$110
ADD TO CHART
1
2
Populer Post
Product name here
$175
Product name here
$175
Product name here
$175
Product name here
$175
Product name here
$175
Catagories
Skin
Skin
Skin
Skin
Skin
Skin
Skin
Keyword
Cancer
eye
Mouth
Nose
Orthopedic
aids
©copyright 2015
Dupplex
Home
FAQ
About
Contact


Colin Leath’s map
Permanent URL:
purl.org/j9k/map/
home
big map
|
checkins
[no longer updated]
I may
tweet
once a week.
And update the map by hand.
v?
Colin Leath


Create your character
Character name:
Your future character name
Create Name
Attack
5
Accept Attack Value
Defence
5
Accept Defense Value
Magic Attack
5
Accept Magic Attack Value
Magic Defense
5
Accept Magic Defense Value
Continue
Randomize Stats
Commit Sudoku
Github Guardians
HTML5 Support Required
Character Info
Inventory Info
Game Options
Health
Mana
Attack
Defence
Magic Att
Magic Def
10/10
10/10
10
10
10
10
Armor
Backpack


[b]This is bold text[/b]
[i]This is itallic[/i]
[quote]This is some famous quote[/quote]
[code]
This is some code which I don't want to be [b]FORMATTED[/b]
I can add as much code as I want:
#include
int main()
{
printf("Hello world!\n");
return 0;
}
[/code]
[url]http://some_url.com[/url]
[url=http://some_url.com]Some other URL[/url]
[youtube]QH2-TGUlwu4[/youtube]


Morning Joe hosts spend four seconds on Trump tax move after Scarborough did same thing last year
by John GageMSNBC's Morning Joe hosts Joe Scarborough and Mika Brzezinski spent only four seconds on their show to mention President Trump was leaving New York to avoid the steep taxes.
Brzezinski mentioned the move in a brief of morning headlines but failed to mention where and why the president was leaving New York.
Trump announced Thursday that he was moving his permanent residency from New York to Florida to avoid paying more in taxes.
Page Six reported in January that the hosts of Morning Joe had also moved their legal residency to Florida in order to save over $500,000 a year in taxes. Scarborough registered to vote in Florida in October 2018.
The couple have a home studio they film in with a Washington, D.C., backdrop in order to meet residency requirements.
The two have been fierce critics of the president, but neither has offered any commentary of what they think of his move to Florida to avoid a higher tax burden.


Drugs found on man who chatted to police and became 'more and more nervous'
Detectives found cannabis and wraps of crack cocaine and heroin
by Rebecca SherdleyPolice officers found drugs on a man when he had chatted to them and become more and more nervous, a court heard.
Officers spoke with Ricky Norman in Birkin Avenue, Forest Fields, on October 3 just before 11am.
Amy Earnshaw, prosecuting, said the officers engaged with him in conversation.
"They noted he became more and more nervous," she explained.
Detectives found cannabis and wraps of crack cocaine and heroin.
He admitted in interview he had them for his personal use.
Norman appeared before Nottingham Crown Court for possessing all three drugs, which he pleaded guilty to, breaching a suspended prison sentence and two offences of shoplifting.
The 27-year-old, of Merchant Street, Bulwell, was given an extra ten drug rehabilitation requirement days.
He received a 12-month community order and a 12-month drug rehab requirement.


--- products: new: limit: {{theme_settings.homepage_new_products_count}} top_sellers: limit: {{theme_settings.side_top_products_count}} product: videos: limit: {{theme_settings.productpage_videos_count}} reviews: limit: {{theme_settings.productpage_reviews_count}} related_products: limit: {{theme_settings.productpage_related_products_count}} similar_by_views: limit: {{theme_settings.productpage_similar_by_views_count}} --- {{#partial "page"}}


class: center, middle, inverse, title-slide # Session 1 ## Getting to Know Your Data ### Global TIES for Children ---  # Agenda By the end of this workshop, you should be able to understand this block of code: ```r dat <- read_csv(here("data/dataset.csv")) dat %>% group_by(grade) %>% summarize(avg_age = mean(age)) ``` We'll be covering - Basic R syntax - Data loading - Data inspection - Basic data transformation --- class: middle, center # Loading your data ## 🗄➡ 💻 --- ## Understanding R syntax R is built around **functions**, bits of atomic code that accept inputs and return an output. -- A function looks like this: ```r function_name(argument_1, argument_2, parameter = TRUE) ``` -- Functions can be bundled together and shared using **packages**. To access a function from a specific package, we use the `::` operator. ```r package.name::function_name(argument_1, argument_2, parameter = TRUE) ``` --- ## Understanding R syntax Often you frequently reuse functions from a particular package, and using `::` can get tedious and ugly to read. R allows you to **attach** those packages using the `library()` function so you can just refer to the function name. ```r library(package.name) # Refers to `function_name` in `package.name` function_name(argument_1, argument_2, parameter = TRUE) ``` If you're familiar with STATA, this would be _roughly_ translated to ``` // Using 1 as `TRUE` function_name argument_1 argument_2, parameter 1 ``` --- # Tools for loading data There are many file formats out there, but these are tools we recommend for file types that we commonly work with: ```r readr::read_csv() haven::read_dta() openxlsx::read.xlsx() ``` **readr** and **haven** are both part of the "_tidyverse_", a suite of packages that have a consistent, easy-to-use, and easy-to-understand design. **openxlsx** is a standalone package that is a successor to the **xlsx** package, an older utility that has a dreaded _Java dependency_. Use xlsx at your own peril! --- # Tools for loading data All of these packages _should_ have been installed if you followed [the setup instructions](https://github.com/nyuglobalties/workshops#get-materials), but for future reference you can install these (and any package) with `install.packages("package.name")`: ```r install.packages("tidyverse") install.packages("haven") ``` **NB:** Only run these commands **once**. Once they're installed, you don't need to run that command again since the package will be on your computer. --- # Let's load our data! Michael has graciously provided an anonymized example intervention dataset for us to use. It is located in the `data` directory (folder) at the root of this project. I'll use the **here** package to create paths that are _relative to the project root_. -- I'll attach the packages we need for now: ```r library(readr) library(here) ``` ``` ## here() starts at /Users/patrickanker/dev/workshops ``` Note how **here** tells us where it thinks the project root is! It recursively searches upward for a directory with a `DESCRIPTION` or `.Rproj` file. **here** is very handy utility for reproducibility since it _localizes_ paths to the project -- and not expanding to the full path on _your_ computer. --- # Let's load our data! Time to load the data: ```r dat <- read_csv(here("data/sample_intervention_dataset.csv")) ``` ``` ## Warning: Missing column names filled in: 'X1' [1] ``` ``` ## Parsed with column specification: ## cols( ## X1 = col_double(), ## Coded_ID = col_double(), ## Cohort = col_character(), ## Intervention = col_double(), ## Female = col_double(), ## Final_grade = col_double(), ## Final_score = col_double(), ## Baseline_math_score = col_double(), ## Baseline_stereotype_endorsement = col_double() ## ) ``` --- ## Two things to note .pull-left[ R uses the `<-` operator to _assign_ computed values to symbols (variables) to be used later on. ```r x <- exp(-(y - mu)^2) ``` In our data's case, the results of reading the CSV file are assigned to the `dat` symbol. ] .pull-right[ `readr::read_csv` prints out a _column specification_ so you can understand how it interpreted the data. This is handy to diagnose some import problems (usually related to dates). ``` ## Warning: Missing column names filled in: 'X1' [1] ``` ``` ## Parsed with column specification: ## cols( ## X1 = col_double(), ## Coded_ID = col_double(), ## Cohort = col_character(), ## Intervention = col_double(), ## Female = col_double(), ## Final_grade = col_double(), ## Final_score = col_double(), ## Baseline_math_score = col_double(), ## Baseline_stereotype_endorsement = col_double() ## ) ``` ] --- # Looking at our data After loading our data, it's useful to high-level view of its content to make sure that it loaded correctly. We'll use the `str()` and `print()` functions here, both part of base R. --- # Looking at our data ```r str(dat) ``` ``` ## tibble [100 × 9] (S3: spec_tbl_df/tbl_df/tbl/data.frame) ## $ X1 : num [1:100] 1 2 3 4 5 6 7 8 9 10 ... ## $ Coded_ID : num [1:100] 1 2 3 6 9 11 14 16 17 18 ... ## $ Cohort : chr [1:100] "A" "A" "A" "A" ... ## $ Intervention : num [1:100] -1 1 1 -1 -1 -1 -1 -1 1 1 ... ## $ Female : num [1:100] 1 0 0 0 0 0 0 1 0 0 ... ## $ Final_grade : num [1:100] 3.7 2.7 2.3 3.7 4 4 3.3 0 1.7 3.7 ... ## $ Final_score : num [1:100] 83.1 70.8 69.2 84 88.2 ... ## $ Baseline_math_score : num [1:100] 0.48 1.13 -0.17 1.79 -0.04 1.79 0.87 -0.04 -1.09 1.53 ... ## $ Baseline_stereotype_endorsement: num [1:100] 2 2 1 1 3 3 2 4 1 1 ... ``` --- # Looking at our data The _class_ of this `dat` object is a `data.frame`. `data.frame`s are R's representation of tabular data. `dat` is also a `tbl_df` ("tibble"), which is the Tidyverse's version of a `data.frame` that is a little bit more stringent (i.e. safe) than base R's version, and it has a prettier `print()` method: ```r print(dat) ``` ``` ## # A tibble: 100 x 9 ## X1 Coded_ID Cohort Intervention Female Final_grade Final_score ## <dbl> <dbl> <chr> <dbl> <dbl> <dbl> <dbl> ## 1 1 1 A -1 1 3.7 83.1 ## 2 2 2 A 1 0 2.7 70.8 ## 3 3 3 A 1 0 2.3 69.2 ## 4 4 6 A -1 0 3.7 84.0 ## 5 5 9 A -1 0 4 88.2 ## 6 6 11 A -1 0 4 89.7 ## 7 7 14 A -1 0 3.3 80.2 ## 8 8 16 A -1 1 0 50.2 ## 9 9 17 A 1 0 1.7 53.4 ## 10 10 18 A 1 0 3.7 82.7 ## # … with 90 more rows, and 2 more variables: Baseline_math_score <dbl>, ## # Baseline_stereotype_endorsement <dbl> ``` --- # Looking at our data If you'd like to see _all_ of your data in a pretty Excel-like spreadsheet, use the `View()` function which has a great display in RStudio. ```r View(dat) ``` Note: if you _don't_ use RStudio, `View()` defaults to a fairly ugly display using X11. If you want to use this feature, use it with RStudio! --- # Data types in R You may have noticed a bunch of three-letter abbreviations next to the variable names in `print(dat)` and the variable content in `str(dat)`. These are the _type signatures_ for each variable: - Double (`dbl` / `num`): All real numbers, like `\(50\)`, `\(23.193\)`, or `\(1.24\times10^{-8}\)` - Character (`chr`): Text/strings, written with single- or double-quotes (e.g. `"a string"`) There are a couple more that you will encounter regularly: - Integer (`int`): Integers and counting numbers. No decimals and scientific notation here! - Logical (`lgl`): Boolean data, written as `TRUE` or `FALSE`. - Factor (`fct`): Factors, R's representation of categorical data. They look like character data with `print()`, but under the hood they are integers. These should only exist in cleaned, ready-for-analysis data! --- ## Quick tip Often, you don't want to see _all_ rows of a dataset. For quick checks, it's useful to look at the first or last rows. To look at the **first**, use `head()`; to look at the **last**, use `tail()`: .font12[ ```r # First row head(dat, 1) ``` ``` ## # A tibble: 1 x 9 ## X1 Coded_ID Cohort Intervention Female Final_grade Final_score ## <dbl> <dbl> <chr> <dbl> <dbl> <dbl> <dbl> ## 1 1 1 A -1 1 3.7 83.1 ## # … with 2 more variables: Baseline_math_score <dbl>, ## # Baseline_stereotype_endorsement <dbl> ``` ```r # Last 2 rows tail(dat, 2) ``` ``` ## # A tibble: 2 x 9 ## X1 Coded_ID Cohort Intervention Female Final_grade Final_score ## <dbl> <dbl> <chr> <dbl> <dbl> <dbl> <dbl> ## 1 99 98 B 1 0 3.7 84.5 ## 2 100 100 B 1 0 3.3 79.0 ## # … with 2 more variables: Baseline_math_score <dbl>, ## # Baseline_stereotype_endorsement <dbl> ``` ] --- ## Quick tip When you encounter a function that you don't know or understand for some reason, **consult the R help system**! Type a `?` followed by the function name into the R console, and the help page with appear in the "Help" pane (or in the Console if you're in a terminal-only environment). ```r ?head ``` If you're not certain what a function name is or you're looking for a certain topic, use `??` (think: "wildcard search") followed by the topic name. ```r ??head ``` --- # Recap .pull-left[ How do I create a variable `x` that refers to the sentence "Hello, world!" ? ] .pull-right[ Use 1, 2, 3, or 4 to refer to the code line number. ```r x "Hello, world!" "x" <- Hello, world! x <- "Hello, world!" x <- Hello, world! ``` ] --- # Recap .pull-left[ How do I create a variable `x` that refers to the sentence "Hello, world!" ? ] .pull-right[ Use 1, 2, 3, or 4 to refer to the code line number. ```r x "Hello, world!" "x" <- Hello, world! *x <- "Hello, world!" x <- Hello, world! ``` ] --- class: middle, center # Working with your data ## 🗄🔍 --- # Working with your data What we'll be discussing today is basic *data wrangling*. > Data wrangling (n.): The process of transforming data from one raw form into another format with the intent of making it more appropriate and valuable for a variety of downstream purposes such as analytics. > > —Wikipedia --- # Basic Data Wrangling Most data wrangling comes down to **four** basic operations: - **Filtering**: Looking for certain rows in your dataset - **Arranging**: Reordering your data with respect to some variables - **Summarizing**: Aggregating data -- to generate statistics, for example - **Mutating**: Creating, editing, or deleting entire variables You can also **group** these operations by variables. For example, finding the average math score in each class would be achieved by _grouping_ by class and then _summarizing_ by taking the mean. --- # Basic Data Wrangling In these workshops, **we'll continue to use the Tidyverse**, but I'd be remissed if I didn't show how you'd do these operations in base R as well: .font12[ | Operation | Tidyverse | Base R | |:------------|------------------------------------------------:|------------------------------------------------:| | Filtering | `filter(dat, Cohort == "A")` | `dat[dat$Cohort == "A", ]` | | Arranging | `arrange(dat, Final_grade)` | `dat[order(dat$Final_grade), ]` | | Summarizing | `summarize(dat, avg_score = mean(Final_score))` | `data.frame(avg_score = mean(dat$Final_score))` | | Mutating | `mutate(dat, failed = Final_score < 60)` | `dat$failed <- dat$Final_score < 60` | ] It's already apparent that the Tidyverse has a much more consistent design than base R, but when we get to grouping, it'll become even more clear to see that base R is pretty confusing to work with for wrangling. --- # Basic Data Wrangling All of these Tidyverse functions are provided by the **dplyr** package. ```r library(dplyr) ``` ``` ## ## Attaching package: 'dplyr' ``` ``` ## The following objects are masked from 'package:stats': ## ## filter, lag ``` ``` ## The following objects are masked from 'package:base': ## ## intersect, setdiff, setequal, union ``` --- ## Filtering Looks for rows with a provided comparison, usually with `<`, `>`, `<=`, `>=`, or `==` (note: two equals!). ```r filter(dat, Cohort == "A") ``` ``` ## # A tibble: 45 x 9 ## X1 Coded_ID Cohort Intervention Female Final_grade Final_score ## <dbl> <dbl> <chr> <dbl> <dbl> <dbl> <dbl> ## 1 1 1 A -1 1 3.7 83.1 ## 2 2 2 A 1 0 2.7 70.8 ## 3 3 3 A 1 0 2.3 69.2 ## 4 4 6 A -1 0 3.7 84.0 ## 5 5 9 A -1 0 4 88.2 ## 6 6 11 A -1 0 4 89.7 ## 7 7 14 A -1 0 3.3 80.2 ## 8 8 16 A -1 1 0 50.2 ## 9 9 17 A 1 0 1.7 53.4 ## 10 10 18 A 1 0 3.7 82.7 ## # … with 35 more rows, and 2 more variables: Baseline_math_score <dbl>, ## # Baseline_stereotype_endorsement <dbl> ``` --- ## Arranging Sorts a dataset by a `variable` in _ascending_ order with `arrange(dat, variable)`. ```r arrange(dat, Final_score) ``` ``` ## # A tibble: 6 x 9 ## X1 Coded_ID Cohort Intervention Female Final_grade Final_score ## <dbl> <dbl> <chr> <dbl> <dbl> <dbl> <dbl> ## 1 49 8 B 1 1 0.7 38.6 ## 2 53 15 B -1 1 0.7 38.9 ## 3 41 87 A 1 0 1 40.3 ## 4 42 89 A -1 0 1 41.2 ## 5 45 99 A -1 0 1.3 47.9 ## 6 13 23 A -1 0 1.3 48.9 ## # … with 2 more variables: Baseline_math_score <dbl>, ## # Baseline_stereotype_endorsement <dbl> ``` --- ## Arranging Sorts a dataset in _descending_ order with `arrange(dat, -variable)`. ```r arrange(dat, -Final_score) ``` ``` ## # A tibble: 6 x 9 ## X1 Coded_ID Cohort Intervention Female Final_grade Final_score ## <dbl> <dbl> <chr> <dbl> <dbl> <dbl> <dbl> ## 1 44 95 A -1 0 4 92.9 ## 2 67 44 B 1 0 4 92.7 ## 3 30 65 A 1 1 4 92.2 ## 4 36 77 A 1 0 4 90.9 ## 5 64 39 B 1 0 4 90.9 ## 6 20 38 A 1 1 4 90.3 ## # … with 2 more variables: Baseline_math_score <dbl>, ## # Baseline_stereotype_endorsement <dbl> ``` --- ## Summarizing Calculate some summary function on variables, like `mean()`, `median()`, or `sd()`: ```r summarize( dat, avg_score = mean(Final_score), sd_score = sd(Final_score) ) ``` ``` ## # A tibble: 1 x 2 ## avg_score sd_score ## <dbl> <dbl> ## 1 72.8 12.7 ``` You can generate multiple summaries with multiple `summarize()` parameters. --- ## Mutating Create, edit, or delete variables in a dataset. ```r mutate( dat, # Deletes the `X1` variable. # NULL is a symbol in R that means "no value" (not "missing"!). X1 = NULL, # Changes Cohort to an index variable Cohort = ifelse(Cohort == "A", 1, 2) ) ``` ``` ## # A tibble: 2 x 8 ## Coded_ID Cohort Intervention Female Final_grade Final_score Baseline_math_s… ## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> ## 1 1 1 -1 1 3.7 83.1 0.48 ## 2 2 1 1 0 2.7 70.8 1.13 ## # … with 1 more variable: Baseline_stereotype_endorsement <dbl> ``` Note: summarizing can have an arbitrary output variable length. Editing using mutate **must** have the _same length_ as the other columns in the dataset _or length 1_, which is a signal to **dplyr** to set all rows to have the same value). --- .center[ # ⚠ ## Tidyverse Caution! ] The Tidyverse (mainly **dplyr**, but a couple other packages) refers to variables in datasets with "naked" symbols.1 summarize(dat, avg_score = mean(Final_score)) ``` ## # A tibble: 1 x 1 ## avg_score ## <dbl> ## 1 72.8 ``` .footnote[ [1]: In computer science lingo, these are technically called _quoted symbols_, but that can be confusing. ] --- .center[ # ⚠ ## Tidyverse Caution! ] But _outside_ of the Tidyverse functions, these variables **are not defined**. ```r mean(Final_score) ``` ``` ## Error in mean(Final_score): object 'Final_score' not found ``` --- .center[ # ⚠ ## Tidyverse Caution! ] To access dataset variables outside of Tidyverse functions, you must use the **`$`** ("extract") operator in conjunction with the symbol for the parent dataset. mean(dat$Final_score) ``` ## [1] 72.8379 ``` Just keep this in mind! --- # Combining Operations These "verbs" (as **dplyr** likes to call them) are **composable** meaning you can chain these commands together, allowing you to create complex data transformations or summaries all in one step. ```r summarize( filter(dat, Intervention == 1), avg_final_score = mean(Final_score) ) ``` ``` ## # A tibble: 1 x 1 ## avg_final_score ## <dbl> ## 1 74.2 ``` -- This is ugly. Thankfully, there is a better way of chaining these steps together! --- .center[ .font12[Introducing...] ] -- .center[ ## The Pipe! # `%>%` ] -- The pipe `%>%` is an operator provided by **dplyr**1 that makes writing nested functions _much_ easier. .footnote[ [1]: Actually **magrittr**, but that packages has more (esoteric) pipes. ] --- ## The Pipe Instead of writing ```r h(g(f(x))) ``` you can write ```r x %>% f() %>% g() %>% h() ``` -- The pipe works by inserting the result of the left hand side into the **first argument** of the right hand side. --- # Combining Operations Revisiting our first chained example, ```r summarize( filter(dat, Intervention == 1), avg_final_score = mean(Final_score) ) ``` we can now use ```r dat %>% filter(Intervention == 1) %>% summarize(avg_final_score = mean(Final_score)) ``` ``` ## # A tibble: 1 x 1 ## avg_final_score ## <dbl> ## 1 74.2 ``` --- ## Grouping Now let's add grouping into the mix, which you can easily do with `group_by(variable)`: ```r dat %>% group_by(Intervention) %>% summarize(avg_final_score = mean(Final_score)) ``` ``` ## `summarise()` ungrouping output (override with `.groups` argument) ``` ``` ## # A tibble: 2 x 2 ## Intervention avg_final_score ## <dbl> <dbl> ## 1 -1 70.7 ## 2 1 74.2 ``` --- ## Grouping You can group by multiple variables as well. Just add more variables to `group_by()`: ```r dat %>% * group_by(Intervention, Cohort) %>% summarize(avg_final_score = mean(Final_score)) ``` ``` ## `summarise()` regrouping output by 'Intervention' (override with `.groups` argument) ``` ``` ## # A tibble: 4 x 3 ## # Groups: Intervention [2] ## Intervention Cohort avg_final_score ## <dbl> <chr> <dbl> ## 1 -1 A 70.7 ## 2 -1 B 70.7 ## 3 1 A 73.9 ## 4 1 B 74.5 ``` --- # Recap .pull-left[ .font12[ How would I find the median baseline stereotype by cohort and gender? For the sake of this question, let's say that `Baseline_stereotype_endorsement` has been renamed to `stereotype`. ] ] .pull-right[ .font10[ ```r # 1. dat %>% filter(Cohort, Female) %>% summarize( med_stereotype = median(stereotype) ) # 2. dat %>% summarize( med_stereotype = median(stereotype) ) %>% group_by(Cohort, Female) # 3. dat %>% group_by(Cohort, Female) %>% summarize( med_stereotype = median(stereotype) ) # 4. dat %>% summarize( med_stereotype = median(stereotype) ) %>% filter(Cohort, Female) ``` ] ] --- # Recap .pull-left[ .font12[ How would I find the median baseline stereotype by cohort and gender? For the sake of this question, let's say that `Baseline_stereotype_endorsement` has been renamed to `stereotype`. ] ] .pull-right[ .font10[ ```r # 1. dat %>% filter(Cohort, Female) %>% summarize( med_stereotype = median(stereotype) ) # 2. dat %>% summarize( med_stereotype = median(stereotype) ) %>% group_by(Cohort, Female) # 3. *dat %>% * group_by(Cohort, Female) %>% * summarize( * med_stereotype = median(stereotype) * ) # 4. dat %>% summarize( med_stereotype = median(stereotype) ) %>% filter(Cohort, Female) ``` ] ] --- # Revisiting dplyr vs. base R Just to reinforce the fact that base R does not have a consistent interface, I'd like to show y'all how to do these grouped operations. -- .center[ ### Stand by for a lot of code that doesn't make sense! 😳 ] --- ## Filtering ```r # dat %>% # group_by(Cohort) %>% # filter(Final_score > 85) partioned <- lapply( unique(dat$Cohort), function(cohort) dat[dat$Cohort == cohort, ] ) filtered <- lapply( partioned, function(part) part[part$Final_score > 85, ] ) do.call(rbind, filtered) ``` --- ## Mutating Grouped mutates can be useful when cleaning longitudinal data per participant, e.g. restricting age to be the baseline observation of the participant. .font12[ ```r # dat %>% # group_by(Cohort) %>% # mutate(median_stereotype = median(Baseline_stereotype_endorsement)) partioned <- lapply( unique(dat$Cohort), function(cohort) dat[dat$Cohort == cohort, ] ) mutated <- lapply( partioned, function(part) { part$median_stereotype <- median(part$Baseline_stereotype_endorsement) part } ) do.call(rbind, mutated) ``` ] --- ## Summarizing .font12[ ```r # dat %>% # group_by(Intervention, Cohort) %>% # summarize(avg_final_score = mean(Final_score)) agg <- aggregate(Final_score ~ Intervention + Cohort, data = dat, FUN = mean) names(agg) <- ifelse(names(agg) == "Final_score", "avg_final_score", names(agg)) agg ``` ``` ## Intervention Cohort avg_final_score ## 1 -1 A 70.72500 ## 2 1 A 73.85760 ## 3 -1 B 70.74450 ## 4 1 B 74.51314 ``` ] --- ## Long story short Base R _does_ have the capability to do all of these operations out of the box. -- The problem is you have to know a **lot** of the language to do **anything useful**. This contributes to a steep and unproductive learning curve which dismays all but the most tenacious "leaRners". -- ### I don't want y'all to have that experience! --- # Exercise Our dataset `dat` examines the stereotypical belief that men perform better in physics than women, and how self-affirmation exercises may affect the end-of-term physics score. `Baseline_stereotype_endorsement` is a Likert-scale (1, strongly disagree - 5, strongly agree) preintervention variable that asks if a participant believes that men perform better than women in physics. `Baseline_math_score` is the standardized math SAT score for each participant. ### On average, how do men and women who strongly disagree and strongly agree with the stereotype perform on the math SAT? .footnote[ Consider using the `|` (read: **or**) operator to combine multiple filter statements into one (e.g. filtering for `this` or `that` would be `filter(dat, this | that)`). ]


Views of Nashua River, Mountain Biking
Swimming, Fishing, Getting Lost, Hiking, Mountain Biking, Equestrian, Cross Country Skiing, Snowshoeing
Please take personal protection measures to reduce your exposure to ticks and mosquito bites.
Town Forest Road, Groton MA
Google Maps,
Apple Maps
524.0 Acres, Trails 13.5 miles, 21.7 km
The Town Forest is owned by the town of Groton and is managed by the Town Forest Committee. The Town Forest is one of the more popular places in Groton to enjoy the outdoors. It offers plenty of space to explore and beautiful views of the Nashua River. The site has a large variety of trails that are excellent for leisurely strolls, mounting biking, horse back riding, dog walking, and nature watching. It is also the site of the annual Groton Town Forest Race.
The parking lot at the end of town forest road has ample space as well as a turning circle for horse trailers.
10 mile loop trail, Dead river Road trail.
The Groton Memorial Town Forest was established in 1922 as a memorial to the men who gave their lives in World War I.
Click/Press map for detailed view.


Repurposed Living
Bassicarella Architectes, Hamburg, Germany Repurposed Housing
Angles de Pyramid Interiors
Bassicarella Architectes,
Madrid, Spain
Office Building
Intricate Patter Play
Bassicarella Architectes, Dubai, UAE Museum
Healing House Path
Bassicarella Architectes,
Beijing, China
Temple
Curved Perfection
Bassicarella Architectes,
Buenos Aires, Argentina
Condominium


Havensine Distance Calculation
Please upload your file with columns 'Latitude' and 'Longitude'
Define the range
Submit


Require.JS: main app
The main app is simply launched via data-main

This will launch the scripts/bootstrap.js file
Sébastien Barbieri, @scips
console.log "Hello world"
It will be used:
<!DOCTYPE html>

<title>MVC - CoffeeScript - 101</title>
<link href="static/css/main.css" rel="stylesheet" type="text/css" media="all" />

Hello World

Anonymous module
define(['dep1', 'dep2'], function (dep1, dep2) {
return function () {};
});
The main app is simply launched via data-main

This will launch the scripts/bootstrap.js file
the bootstrap prepare the path and is ideally located in the root webapp folder
require.config(
paths:
jquery: 'vendor/jquery-2.1.0'
)
require ['jquery','app/controller/main'],($,Application)->
$(document).ready(
()->
app = new Application()
app.launch()
This will launch the scripts/main.js file
Add vendor scripts
Create the main controller
define ['jquery'
,'app/controller/screen1'
,'app/controller/screen2'],
($,Screen1Controller,Screen2Controller)->
class MainController
constructor:()->
@CtrlScreen1 = new Screen1Controller()
@CtrlScreen2 = new Screen2Controller()
dispatch:(event)->
if event.action is 'screen1'
CtrlScreen2.hide()
CtrlScreen1.show()
if event.action is 'screen2'
CtrlScreen1.hide()
CtrlScreen2.show()
launch:()->
listen:()->
e = new Event("application");
e.action="screen1";
$(body).trigger(e);
Create views


Humerous storytelling, serious folk by John Cragie
"Do yourself a favour and don't go looking at the pictures on my phone.."
A lot of life can happen over the course of one record. Lyrics immortalize those characters, exploits, and memories. On his 2020 Asterisk The Universe, John Craigie awkwardly encounters previous flames, mistakes a Catholic School custodian as a saint (and prays to him anyway), pays tribute to modern-day revolutionaries, and explores what it all means to live in the 21st century where infinite possibility does not necessarily equate infinite understanding. He soundtracks these stories with a score of smoked-out soul, tender folk, and American songbook eloquence billowing right from the heart of California. Progressing once more, the interplay of live drums and bass hold the music in the pocket as it simultaneously emanates an acoustic campfire glow.
“…the lovechild of John Prine and Mitch Hedberg with a vagabond troubadour edge.” — the stranger
Highway Blood
I hate the morning for every possible reason, Except for the chance I get to try again They might say I was betrayed by the kindest season Oh but autumn, I don’t believe a word they’ve said


New hybrid device can both capture and store solar energy
Device offers a new avenue for capitalizing on abundant solar energy
| Source: | University of Houston |
| Summary: | Researchers have reported a new device that can both efficiently capture solar energy and store it until it is needed, offering promise for applications ranging from power generation to distillation and desalination. |
Researchers from the University of Houston have reported a new device that can both efficiently capture solar energy and store it until it is needed, offering promise for applications ranging from power generation to distillation and desalination.
Unlike solar panels and solar cells, which rely on photovoltaic technology for the direct generation of electricity, the hybrid device captures heat from the sun and stores it as thermal energy. It addresses some of the issues that have stalled wider-scale adoption of solar power, suggesting an avenue for using solar energy around-the-clock, despite limited sunlight hours, cloudy days and other constraints.
The work, described in a paper published Wednesday in Joule, combines molecular energy storage and latent heat storage to produce an integrated harvesting and storage device for potential 24/7 operation. The researchers report a harvesting efficiency of 73% at small-scale operation and as high as 90% at large-scale operation.
Up to 80% of stored energy was recovered at night, and the researchers said daytime recovery was even higher.
Hadi Ghasemi, Bill D. Cook Associate Professor of Mechanical Engineering at UH and a corresponding author for the paper, said the high efficiency harvest is due, in part, to the ability of the device to capture the full spectrum of sunlight, harvesting it for immediate use and converting the excess into molecular energy storage.
The device was synthesized using norbornadiene-quadricyclane as the molecular storage material, an organic compound that the researchers said demonstrates high specific energy and exceptional heat release while remaining stable over extended storage times. Ghasemi said the same concept could be applied using different materials, allowing performance — including operating temperatures and efficiency — to be optimized.
T. Randall Lee, Cullen Distinguished University Chair professor of chemistry and a corresponding author, said the device offers improved efficiency in several ways: The solar energy is stored in molecular form rather than as heat, which dissipates over time, and the integrated system also reduces thermal losses because there is no need to transport the stored energy through piping lines.
"During the day, the solar thermal energy can be harvested at temperatures as high as 120 degrees centigrade (about 248 Fahrenheit)," said Lee, who also is a principle investigator for the Texas Center for Superconductivity at UH. "At night, when there is low or no solar irradiation, the stored energy is harvested by the molecular storage material, which can convert it from a lower energy molecule to a higher energy molecule."
That allows the stored energy to produce thermal energy at a higher temperature at night than during the day — boosting the amount of energy available even when the sun is not shining, he said.
In addition to Ghasemi and Lee, researchers involved with the work include first author Varun Kashyap, Siwakorn Sakunkaewkasem, Parham Jafari, Masoumeh Nazari, Bahareh Eslami, Sina Nazifi, Peyman Irajizad and Maria D. Marquez, all with UH.
make a difference: sponsored opportunity
Story Source:
Materials provided by University of Houston.
Note: Content may be edited for style and length.
Journal Reference:
- Varun Kashyap, Siwakorn Sakunkaewkasem, Parham Jafari, Masoumeh Nazari, Bahareh Eslami, Sina Nazifi, Peyman Irajizad, Maria D. Marquez, T. Randall Lee, Hadi Ghasemi. Full Spectrum Solar Thermal Energy Harvesting and Storage by a Molecular and Phase-Change Hybrid Material. Joule, 2019; DOI: 10.1016/j.joule.2019.11.001
Cite This Page:
| MLA | University of Houston. "New hybrid device can both capture and store solar energy: Device offers a new avenue for capitalizing on abundant solar energy." ScienceDaily. ScienceDaily, 20 November 2019. <www.sciencedaily.com/releases/2019/11/191120131309.htm>. |
| APA | University of Houston. (2019, November 20). New hybrid device can both capture and store solar energy: Device offers a new avenue for capitalizing on abundant solar energy. ScienceDaily. Retrieved November 21, 2019 from www.sciencedaily.com/releases/2019/11/191120131309.htm |
| Chicago | University of Houston. "New hybrid device can both capture and store solar energy: Device offers a new avenue for capitalizing on abundant solar energy." ScienceDaily. www.sciencedaily.com/releases/2019/11/191120131309.htm (accessed November 21, 2019). |


#assign subtitle = "test-ebean.properties"> <#assign testproperties = "true">
It is common to want to run all tests against H2
in memory database.
A simple way to do this is to add a
src/test/resources/test-ebean.properties
to your project. In the test-ebean.properties
you can effectively override the properties of the datasource and specify to use H2
.
Run all tests against H2 in memory database.
When an EbeanServer is created automatically via Ebean.getDefaultServer()
or Ebean.getServer(name)
then Ebean will look for the existence of test-ebean.properties in the classpath. If found this then typically
specifies to use an in memory H2 datasource.
When programmatically creating an EbeanServer using ServerConfig
and EbeanServerFactory
there is a method serverConfig.loadTestProperties()
which will similarly look for a test-ebean.properties
file if present.


{% include gallery1image.html %}
{% include gallery2image.html %}
{% include gallery3image.html %}
{% include gallery4image.html %}
{% include gallery5image.html %}
{% include gallery6image.html %}
{% include gallery7image.html %}
{% include gallery8image.html %}
{% include gallery9image.html %}
{% include gallery10image.html %}
{% include gallery11image.html %}
{% include gallery12image.html %}
{% include gallery13image.html %}
{% include gallery14image.html %}
{% include gallery15image.html %}
{% include gallery16image.html %}
{% include gallery17image.html %}
{% include gallery18image.html %}
{% include gallery19image.html %}
{% include gallery20image.html %}