eloop(expr)
The eloop
function is similar to the tloop
function. When displaying a GrADS expression (expr
) with the E (Ensemble) dimension varying, the
eloop
function will evaluate the expr
with each designated ensemble member fixed, then reassemble the grids to obtain a final result
that is E-varying.
The eloop
function is provided as a way to obtain E-varying results
from functions or expressions that are unable to operate
when E is a varying dimension.
open fcst.ctl
open rean.ctl
set lon -77
set lat 39
set e 1 15
set t 1 last
d eloop(t2m.1-t2m.2(e=1))


WITNESS LIST Elections Committee (SUBCOMMITTEE ON Campaign Finance) April 7, 2005-12:00A HB 72 For: Besteiro, Ollie (AARP) Cahill, Daniel (Public Citizen) Currie, Lance (Self) Lewis, Fred (Campaigns for People) Paynter, Suzii (Christian Life Commission, Baptist General Convention) On: Woelk, Sarah (TX Ethics Commission) Registering, but not testifying: For: Bailey, Ken (Self and Texas Democratic Party) Barkan, Maxine (League of Women Voters of Texas) Costello, Sal (Self) Sterling, Edward (Texas Daily Newspaper Association and Texas Press Association) Woodford, Suzy (Common Cause Texas) On: Sorrells, Tim (Texas Ethics Commission) HB 73 For: Lewis, Fred (Campaigns for People) Registering, but not testifying: For: Bailey, Ken (Self and Texas Democratic Party) Barkan, Maxine (League of Women Voters of Texas) Woodford, Suzy (Common Cause Texas) On: Sorrells, Tim (Texas Ethics Commission) HB 113 For: Lewis, Fred (Campaigns for People) Against: Winkler, Sarah (Texas Association of School Boards) Registering, but not testifying: For: Woodford, Suzy (Common Cause Texas) On: Reisman, David (Texas Ethics Commission) HB 1647 For: Carlson, Pat (Texas Republican County Chair Assoc) Reilly, Frank (Republican Party of Texas) Registering, but not testifying: For: Bailey, Ken (Self and Texas Democratic Party) Howard, Robert (Libertarian Party of Texas) Woodford, Suzy (Common Cause Texas) On: Reisman, David (Texas Ethics Commission) HB 1708 For: Costello, Sal (People for Efficient Transportation) Howard, Robert (Libertarian Party of Texas) Registering, but not testifying: For: Lewis, Fred (Campaigns for People) Paynter, Suzii (Christian Life Commission, Baptist General Convention) Woodford, Suzy (Common Cause Texas) On: Reisman, David (Texas Ethics Commission)


Modalities
predicsis.jsSDK.models
| post /modalities_sets | Modalities.create() | async |
| get /modalities_sets | Modalities.all() | |
| get /modalities_sets/:id | Modalities.get() | |
| delete /modalities_sets/:id | Modalities.delete() | |
| Official documentation is available at https://developer.predicsis.com/doc/v1/dictionary/modalities/ |
Send POST request to the modalities_sets
API resource.
You can / must give the following parameters to ask for a modalities set creation:
{ variable_id: "5329601c1757f446e6000002" dataset_id: "53c7dea470632d3417020000", }
Both variable_id
and dataset_id
are required.
| Param | Type | Details |
|---|---|---|
| params | Object | See above example. |
| Promise | Returned modalities set does not contain modalities themselves. If you want them, you must explicitly get them. In fact, you will get an object like: { id": "53fdfa7070632d0fc5030000", created_at: "2014-05-02T17:13:56.687Z", user_id: "5363b25c687964476d000000", dataset_id: "53c7dea470632d3417020000", variable_id: "5329601c1757f446e6000002", job_ids: [ "53c8c88970632d3b9a030001" ] } |


--- layout: default title: Here's where I talk to humans about AI ---
In research, I talk to AI about humans, here, I will practice doing the reverse.
I very strongly believe that, unless I can explain a concept to someone outside my field, I don’t understand it. Industry jargon is useful because it is information dense; a four-page paper in NLP would have to be much longer without our specific terminology. But jargon also isolates a field and makes it harder to share ideas across disciplines. It can make us researchers not examine our work enough, since we glaze over these terms that we know and can be lulled into a false sense of security that work is good because it sounds official. So in my blog the idea is to make my work understandable for those with no specific NLP background.
If you have a request for a new NLP or AI topic that I haven’t covered (or a clarification on something that I have), feel free to send me an email!
These posts all give some background on a broad area, rather than explaining something specific. Sometimes they are helpful for context, sometimes they give the why.


Gallery
PHOTOS: Louth Ladies LGFA Club All Star awards night
Pictures
by David LynchIt was a night of celebration for LGFA clubs and players at The Grove in Castlebellingham, as the county's All Star awards night was held.
Check out our gallery above


The potential of open data is just beginning to be explored. Every day, activists, organizers, NGOs, and governments are demonstrating new ways that open data can be linked, mashed-up, and remixed to build useful, creative, and innovative tools.
-
Program on Liberation Technology Liberation Tech
"the Program on Liberation Technology seeks to understand how information technology can be used to defend human rights, improve governance, empower the poor, promote economic development, and pursue a variety of other social goods"
-
-
Look up lawmakers, issues, or bills in order to learn about legislation and representative government in the U.S.
-
Develop a visual understanding of how corporations and lawmakers influence the political system
-
A version of Sunlight Foundation's Open Congress that looks at state level politics
-
Sunlight Foundation project to compare data from USASPending.gov with other available data to score how money is actually spent
-
A grassroots wiki compiling local knowledge in individual communities. Find your neighborhood LocalWiki and start contributing your knowledge and stories
-
Open City Chicago Projects Open City
A list of civic apps built with open data is a great set of examples
Data is everywhere. Everything from Tweets to the personal information social workers collect about clients is "data." However, not all data is public. And not all public data is open. Open data is public data that is also free to use and distribute, and easily accessible. Because of the Open Data Movement, open data is prolific, and growing by the day! New policies, as well as a cultural shift toward greater openness and transparency, are pushing more and more data into open formats.
Using this kind of data is complicated! No longer do we have to send out a survey, collect data, and analyze it using complex and expensive data analysis software. There's already so much data out there, and as many projects have demonstrated, some very cool projects can be made with the Data already available!
Data Science VM
R
http://schoolofdata.org/
http://schoolofdata.org/handbook/
http://opengovernmentdata.org/
http://www.quora.com/search?q=open+data
http://stats.stackexchange.com/
https://howto.informationactivism.org/
Flowing Data


2019
-
Yuanjiang Ni, Jishen Zhao, Heiner Litz, Daniel Bittman, Ethan L. Miller, SSP: Eliminating Redundant Writes in Failure-Atomic NVRAMs via Shadow Sub-Paging. MICRO, 836-848, 2019.
-
Rafael Trapani Possignolo, Jose Renau, SMatch: Structural Matching for Fast Resynthesis in FPGAs. DAC, 75, 2019.
-
Bin Wu, James E. Stine, Matthew R. Guthaus, Fast and Area-Efficient SRAM Word-Line Optimization. ISCAS, 1-5, 2019.
-
Grant Ayers, Nayana Prasad Nagendra, David I. August, Hyoun Kyu Cho, Svilen Kanev, Christos Kozyrakis, Trivikram Krishnamurthy, Heiner Litz, Tipp Moseley, Parthasarathy Ranganathan, AsmDB: understanding and mitigating front-end stalls in warehouse-scale computers. ISCA, 462-473, 2019.
-
Riadul Islam, Matthew R. Guthaus, HCDN: Hybrid-Mode Clock Distribution Networks. IEEE Trans. on Circuits and Systems 66-I(1), 251-262, 2019.
-
Daphne I. Gorman, Rafael Trapani Possignolo, Jose Renau, EMI Architectural Model and Core Hopping. MICRO, 899-910, 2019.
2018
-
Samuel Grossman, Heiner Litz, Christos Kozyrakis, Making pull-based graph processing performant. PPOPP, 246-260, 2018.
-
Riadul Islam, Hany Ahmed Fahmy, Ping-Yao Lin, Matthew R. Guthaus, DCMCS: Highly Robust Low-Power Differential Current-Mode Clocking and Synthesis. IEEE Trans. VLSI Syst. 26(10), 2108-2117, 2018.
-
Ana Klimovic, Heiner Litz, Christos Kozyrakis, Selecta: Heterogeneous Cloud Storage Configuration for Data Analytics. USENIX Annual Technical Conference, 759-773, 2018.
-
Rafael Trapani Possignolo, Elnaz Ebrahimi 0001, Ehsan K. Ardestani, Alamelu Sankaranarayanan, José Luis Briz, Jose Renau, GPU NTC Process Variation Compensation With Voltage Stacking. IEEE Trans. VLSI Syst. 26(9), 1713-1726, 2018.
-
Milad Hashemi, Kevin Swersky, Jamie A. Smith, Grant Ayers, Heiner Litz, Jichuan Chang, Christos Kozyrakis, Parthasarathy Ranganathan, Learning Memory Access Patterns. ICML, 1924-1933, 2018.
-
Chandranil Chakrabortti, Vikas Sinha, Heiner Litz, SSD QoS Improvements through Machine Learning. SoCC, 511, 2018.
-
Milad Hashemi, Kevin Swersky, Jamie A. Smith, Grant Ayers, Heiner Litz, Jichuan Chang, Christos Kozyrakis, Parthasarathy Ranganathan, Learning Memory Access Patterns. CoRR abs/1803.02329, 2018.
2017
-
Daphne I. Gorman, Matthew R. Guthaus, Jose Renau, Architectural opportunities for novel dynamic EMI shifting (DEMIS). MICRO, 774-785, 2017.
-
Scott Beamer, Krste Asanovic, David A. Patterson, Reducing Pagerank Communication via Propagation Blocking. IPDPS, 820-831, 2017.
-
Elnaz Ebrahimi 0001, Rafael Trapani Possignolo, Jose Renau, Level shifter design for voltage stacking. ISCAS, 1-4, 2017.
-
Rajsaktish Sankaranarayanan, Matthew R. Guthaus, Energy Savings and Performance Improvement in Subthreshold Using Adaptive Body Bias. ACM Great Lakes Symposium on VLSI, 431-434, 2017.
-
Ana Klimovic, Heiner Litz, Christos Kozyrakis, ReFlex: Remote Flash ≈ Local Flash. ASPLOS, 345-359, 2017.
-
Aydin Buluç, Scott Beamer, Kamesh Madduri, Krste Asanovic, David A. Patterson, Distributed-Memory Breadth-First Search on Massive Graphs. CoRR abs/1705.04590, 2017.
-
Riadul Islam, Matthew R. Guthaus, CMCS: Current-Mode Clock Synthesis. IEEE Trans. VLSI Syst. 25(3), 1054-1062, 2017.
-
Haven Skinner, Rafael Trapani Possignolo, Jose Renau, Liam: an actor based programming model for HDLs. MEMOCODE, 185-188, 2017.
-
Elnaz Ebrahimi 0001, Matthew R. Guthaus, Jose Renau, Timing speculative SRAM. ISCAS, 1-4, 2017.
-
Rafael Trapani Possignolo, Jose Renau, LiveSynth: Towards an Interactive Synthesis Flow. DAC, 74:1-74:6, 2017.
2016
-
Samira Ataei, James E. Stine, Matthew R. Guthaus, A 64 kb differential single-port 12T SRAM design with a bit-interleaving scheme for low-voltage operation in 32 nm SOI CMOS. ICCD, 499-506, 2016.
-
Rafael Trapani Possignolo, Jose Renau, LiveSynth: Towards an interactive synthesis flow. Hot Chips Symposium, 1, 2016.
-
Gabriel Southern, Jose Renau, Overhead of deoptimization checks in the V8 javascript engine. IISWC, 75-84, 2016.
-
Heiner Litz, Benjamin Braun, David R. Cheriton, EXCITE-VM: Extending the Virtual Memory System to Support Snapshot Isolation Transactions. PACT, 401-412, 2016.
-
Sina Hassani, Gabriel Southern, Jose Renau, LiveSim: Going live with microarchitecture simulation. HPCA, 606-617, 2016.
-
Elnaz Ebrahimi 0001, Rafael Trapani Possignolo, Jose Renau, SRAM voltage stacking. ISCAS, 1634-1637, 2016.
-
Gabriel Southern, Jose Renau, Analysis of PARSEC workload scalability. ISPASS, 133-142, 2016.
-
Ehsan K. Ardestani, Rafael Trapani Possignolo, José Luis Briz, Jose Renau, Managing Mismatches in Voltage Stacking with CoreUnfolding. TACO 12(4), 43:1-43:26, 2016.
-
Rafael Trapani Possignolo, Elnaz Ebrahimi 0001, Haven Skinner, Jose Renau, Fluid Pipelines: Elastic circuitry meets Out-of-Order execution. ICCD, 233-240, 2016.
-
Matthew R. Guthaus, James E. Stine, Samira Ataei, Brian Chen, Bin Wu, Mehedi Sarwar, OpenRAM: an open-source memory compiler. ICCAD, 93, 2016.
2015
-
Benjamin M. LaCara, Ping-Yao Lin, Matthew R. Guthaus, Multi-frequency resonant clocks. ISCAS, 1402-1405, 2015.
-
Madan Das, Gabriel Southern, Jose Renau, Section-Based Program Analysis to Reduce Overhead of Detecting Unsynchronized Thread Communication. TACO 12(2), 23:23:1-23:23:26, 2015.
-
Ping-Yao Lin, Hany Ahmed Fahmy, Riadul Islam, Matthew R. Guthaus, LC resonant clock resource minimization using compensation capacitance. ISCAS, 1406-1409, 2015.
-
Jose Renau, Message from the program chair. ISPASS, vii, 2015.
-
Hany Ahmed Fahmy, Ping-Yao Lin, Riadul Islam, Matthew R. Guthaus, Switched capacitor quasi-adiabatic clocks. ISCAS, 1398-1401, 2015.
-
Scott Beamer, Krste Asanovic, David A. Patterson, GAIL: the graph algorithm iron law. IA3@SC, 13:1-13:4, 2015.
-
Riadul Islam, Matthew R. Guthaus, Low-Power Clock Distribution Using a Current-Pulsed Clocked Flip-Flop. IEEE Trans. on Circuits and Systems 62-I(4), 1156-1164, 2015.
-
Scott Beamer, Krste Asanovic, David A. Patterson, The GAP Benchmark Suite. CoRR abs/1508.03619, 2015.
-
Scott Beamer, Krste Asanovic, David A. Patterson, Locality Exists in Graph Processing: Workload Characterization on an Ivy Bridge Server. IISWC, 56-65, 2015.
-
Madan Das, Gabriel Southern, Jose Renau, Section based program analysis to reduce overhead of detecting unsynchronized thread communication. PPOPP, 283-284, 2015.
2014
-
Jeren Samandari-Rad, Matthew R. Guthaus, Richard Hughey, Confronting the Variability Issues Affecting the Performance of Next-Generation SRAM Design to Optimize and Predict the Speed and Yield. IEEE Access 2, 577-601, 2014.
-
Heiner Litz, David R. Cheriton, Amin Firoozshahian, Omid Azizi, John P. Stevenson, SI-TM: reducing transactional memory abort rates through snapshot isolation. ASPLOS, 383-398, 2014.
-
Bo Wang, Heiner Litz, David R. Cheriton, HICAMP bitmap: space-efficient updatable bitmap index for in-memory databases. DaMoN, 7:1-7:7, 2014.
-
Riadul Islam, Matthew R. Guthaus, Current-mode clock distribution. ISCAS, 1203-1206, 2014.
-
Heiner Litz, Ricardo J. Dias, David R. Cheriton, Efficient Correction of Anomalies in Snapshot Isolation Transactions. TACO 11(4), 65:1-65:24, 2014.
-
Amirkoushyar Ziabari, Je-Hyoung Park, Ehsan K. Ardestani, Jose Renau, Sung-Mo Kang, Ali Shakouri, Power Blurring: Fast Static and Transient Thermal Analysis Method for Packaged Integrated Circuits and Power Devices. IEEE Trans. VLSI Syst. 22(11), 2366-2379, 2014.
2013
-
Scott Beamer, Aydin Buluç, Krste Asanovic, David A. Patterson, Distributed Memory Breadth-First Search Revisited: Enabling Bottom-Up Search. IPDPS Workshops, 1618-1627, 2013.
-
Ehsan K. Ardestani, Francisco J. Mesa-Martinez, Gabriel Southern, Elnaz Ebrahimi 0001, Jose Renau, Sampling in Thermal Simulation of Processors: Measurement, Characterization, and Evaluation. IEEE Trans. on CAD of Integrated Circuits and Systems 32(8), 1187-1200, 2013.
-
Matthew R. Guthaus, Gustavo Wilke, Ricardo Reis 0001, Revisiting automated physical synthesis of high-performance clock networks. ACM Trans. Design Autom. Electr. Syst. 18(2), 31:1-31:27, 2013.
-
Holger Fröning, Mondrian Nüssle, Heiner Litz, Christian Leber, Ulrich Brüning 0001, On Achieving High Message Rates. CCGRID, 498-505, 2013.
-
Janusz Rajski, Miodrag Potkonjak, Adit D. Singh, Abhijit Chatterjee, Zain Navabi, Matthew R. Guthaus, Sezer Gören, Embedded tutorials: Embedded tutorial 1: Cell-aware test-from gates to transistors. VLSI-SoC, 2013.
-
Ehsan K. Ardestani, Gabriel Southern, Jason Doung, Elnaz Ebrahimi 0001, Jose Renau, ESESC: A fast performance, power, and temperature multicore simulator. Hot Chips Symposium, 1, 2013.
-
Scott Beamer, Krste Asanovic, David A. Patterson, Direction-optimizing breadth-first search. Scientific Programming 21(3-4), 137-148, 2013.
-
Michael Chan, Heiner Litz, David R. Cheriton, Rethinking Network Stack Design with Memory Snapshots. HotOS, 2013.
-
Alamelu Sankaranarayanan, Ehsan K. Ardestani, José Luis Briz, Jose Renau, An energy efficient GPGPU memory hierarchy with tiny incoherent caches. ISLPED, 9-14, 2013.
-
Ehsan K. Ardestani, Jose Renau, ESESC: A fast multicore simulator using Time-Based Sampling. HPCA, 448-459, 2013.
2012
-
Seokjoong Kim, Matthew R. Guthaus, Dynamic voltage scaling for SEU-tolerance in low-power memories. VLSI-SoC, 207-212, 2012.
-
Matthew R. Guthaus, Baris Taskin, High-Performance, Low-Power Resonant Clocking: Embedded tutorial. ICCAD, 742-745, 2012.
-
Shoaib Kamil, Derrick Coetzee, Scott Beamer, Henry Cook, Ekaterina Gonina, Jonathan Harper, Jeffrey Morlan, Armando Fox, Portable parallel performance from sequential, productive, embedded domain-specific languages. PPOPP, 303-304, 2012.
-
Matthew R. Guthaus, Welcome from the general chair. VLSI-SoC, 2012.
-
Jeren Samandari-Rad, Matthew R. Guthaus, Richard Hughey, VAR-TX: A variability-aware SRAM model for predicting the optimum architecture to achieve minimum access-time for yield enhancement in nano-scaled CMOS. ISQED, 506-515, 2012.
-
Scott Beamer, Krste Asanovic, David A. Patterson, Direction-optimizing breadth-first search. SC, 12, 2012.
-
Rajsaktish Sankaranarayanan, Matthew R. Guthaus, A single-VDD ultra-low energy sub-threshold FPGA. VLSI-SoC, 219-224, 2012.
-
Xuchu Hu, Walter James Condley, Matthew R. Guthaus, Library-aware resonant clock synthesis (LARCS). DAC, 145-150, 2012.
-
Curtis Andrus, Matthew R. Guthaus, Lithography-aware layout compaction. ACM Great Lakes Symposium on VLSI, 147-152, 2012.
-
H. Blake Skinner, Xuchu Hu, Matthew R. Guthaus, Harmonic resonant clocking. VLSI-SoC, 59-64, 2012.
-
Ehsan K. Ardestani, Elnaz Ebrahimi 0001, Gabriel Southern, Jose Renau, Thermal-aware sampling in architectural simulation. ISLPED, 33-38, 2012.
-
Xuchu Hu, Matthew R. Guthaus, Distributed LC Resonant Clock Grid Synthesis. IEEE Trans. on Circuits and Systems 59-I(11), 2749-2760, 2012.
-
Matthew R. Guthaus, Xuchu Hu, Gustavo Wilke, Guilherme Flach, Ricardo Reis 0001, High-performance clock mesh optimization. ACM Trans. Design Autom. Electr. Syst. 17(3), 33:1-33:17, 2012.
-
Seokjoong Kim, Matthew R. Guthaus, SEU-Aware Low-Power Memories Using a Multiple Supply Voltage Array Architecture. VLSI-SoC (Selected Papers), 181-195, 2012.
2011
-
Michael Brown, Jose Renau, ReRack: power simulation for data centers with renewable energy generation. SIGMETRICS Performance Evaluation Review 39(3), 77-81, 2011.
-
Xuchu Hu, Matthew R. Guthaus, Distributed Resonant clOCK grid Synthesis (ROCKS). DAC, 516-521, 2011.
-
Heiner Litz, Christian Leber, Benjamin Geib, DSL programmable engine for high frequency trading acceleration. WHPCF@SC, 31-38, 2011.
-
Jose Renau, Will Eatherton, Hot Chips 22. IEEE Micro 31(2), 4-5, 2011.
-
Sangeetha Sudhakrishnan, Francisco J. Mesa-Martinez, Jose Renau, A design time simulator for computer architects. ISQED, 164-173, 2011.
-
Walter James Condley, Andrew W. Hill, Matthew R. Guthaus, Advanced logic design through hands-on digital music synthesis. MSE, 17-20, 2011.
-
Walter James Condley, Xuchu Hu, Matthew R. Guthaus, A methodology for local resonant clock synthesis using LC-assisted local clock buffers. ICCAD, 503-506, 2011.
-
Matthew R. Guthaus, Distributed LC resonant clock tree synthesis. ISCAS, 1215-1218, 2011.
-
Sangeetha Sudhakrishnan, Rigo Dicochea, Jose Renau, Releasing efficient beta cores to market early. ISCA, 213-222, 2011.
-
Seokjoong Kim, Matthew R. Guthaus, Leakage-aware redundancy for reliable sub-threshold memories. DAC, 435-440, 2011.
-
Christian Leber, Benjamin Geib, Heiner Litz, High Frequency Trading Acceleration Using FPGAs. FPL, 317-322, 2011.
-
Seokjoong Kim, Matthew R. Guthaus, Low-power multiple-bit upset tolerant memory optimization. ICCAD, 577-581, 2011.
-
Sheldon Logan, Matthew R. Guthaus, Package-chip co-design to increase flip-chip C4 reliability. ISQED, 553-558, 2011.
-
Xuchu Hu, Matthew R. Guthaus, Clock tree optimization for Electromagnetic Compatibility (EMC). ASP-DAC, 184-189, 2011.
-
Seokjoong Kim, Matthew R. Guthaus, SNM-aware power reduction and reliability improvement in 45nm SRAMs. VLSI-SoC, 204-207, 2011.
2010
-
Heiner Litz, Maximilian Thürmer, Ulrich Brüning 0001, TCCluster: A Cluster Architecture Utilizing the Processor Host Interface as a Network Interconnect. CLUSTER, 9-18, 2010.
-
Scott Beamer, Chen Sun, Yong-Jin Kwon, Ajay Joshi, Christopher Batten, Vladimir Stojanovic, Krste Asanovic, Re-architecting DRAM memory systems with monolithically integrated silicon photonics. ISCA, 129-140, 2010.
-
Francisco J. Mesa-Martinez, Ehsan K. Ardestani, Jose Renau, Characterizing processor thermal behavior. ASPLOS, 193-204, 2010.
-
Holger Fröning, Heiner Litz, Efficient hardware support for the Partitioned Global Address Space. IPDPS Workshops, 1-6, 2010.
-
Walter James Condley, Xuchu Hu, Matthew R. Guthaus, Analysis of high-performance clock networks with RLC and transmission line effects. SLIP, 51-58, 2010.
-
Matthew R. Guthaus, Gustavo Wilke, Ricardo Reis 0001, Non-uniform clock mesh optimization with linear programming buffer insertion. DAC, 74-79, 2010.
-
Derek Chan, Matthew R. Guthaus, Analysis of power supply induced jitter in actively de-skewed multi-core systems. ISQED, 785-790, 2010.
2009
-
Michael Brown, Cyrus Bazeghi, Matthew R. Guthaus, Jose Renau, Measuring and modeling variabilityusing low-cost FPGAs. FPGA, 286, 2009.
-
Keven L. Woo, Matthew R. Guthaus, Fault-tolerant synthesis using non-uniform redundancy. ICCD, 213-218, 2009.
-
Joseph Nayfach-Battilana, Jose Renau, SOI, interconnect, package, and mainboard thermal characterization. ISLPED, 327-330, 2009.
-
Ajay Joshi, Christopher Batten, Yong-Jin Kwon, Scott Beamer, Imran Shamim, Krste Asanovic, Vladimir Stojanovic, Silicon-photonic clos networks for global on-chip communication. NOCS, 124-133, 2009.
-
Matthew R. Guthaus, Teaching VLSI design in 10 weeks. MSE, 41-44, 2009.
-
Heiner Litz, Holger Fröning, Ulrich Brüning 0001, A HyperTransport 3 Physical Layer Interface for FPGAs. ARC, 4-14, 2009.
-
Holger Fröning, Heiner Litz, Ulrich Brüning 0001, Efficient Virtualization of High-Performance Network Interfaces. ICN, 434-439, 2009.
-
Heiner Litz, Holger Fröning, Maximilian Thürmer, Ulrich Brüning 0001, An FPGA based verification platform for HyperTransport 3.x. FPL, 631-634, 2009.
-
Scott Beamer, Krste Asanovic, Christopher Batten, Ajay Joshi, Vladimir Stojanovic, Designing multi-socket systems using silicon photonics. ICS, 521-522, 2009.
2008
-
Matthew R. Guthaus, Dennis Sylvester, Richard B. Brown, Clock tree synthesis with data-path sensitivity matching. ASP-DAC, 498-503, 2008.
-
Sangeetha Sudhakrishnan, Janaki T. Madhavan, E. James Whitehead Jr., Jose Renau, Understanding bug fix patterns in verilog. MSR, 39-42, 2008.
-
Francisco J. Mesa-Martinez, Michael Brown, Joseph Nayfach-Battilana, Jose Renau, Measuring power and temperature from real processors. IPDPS, 1-5, 2008.
-
Sangeetha Sudhakrishnan, Liying Su, Jose Renau, Processor Verification with hwBugHunt. ISQED, 224-229, 2008.
-
Heiner Litz, Holger Fröning, Mondrian Nüssle, Ulrich Brüning 0001, VELO: A Novel Communication Engine for Ultra-Low Latency Message Transfers. ICPP, 238-245, 2008.
2007
-
Cyrus Bazeghi, Francisco J. Mesa-Martinez, Brian Greskamp, Josep Torrellas, Jose Renau, Estimating design time for system circuits. VLSI-SoC, 60-65, 2007.
-
Cyrus Bazeghi, Francisco J. Mesa-Martinez, Jose Renau, System and Procesor Design Effort Estimation. VLSI-SoC (Selected Papers), 1-21, 2007.
-
Francisco J. Mesa-Martinez, Joseph Nayfach-Battilana, Jose Renau, Power model validation through thermal measurements. ISCA, 302-311, 2007.
-
Francisco J. Mesa-Martinez, Michael Brown, Joseph Nayfach-Battilana, Jose Renau, Measuring performance, power, and temperature from real processors. Experimental Computer Science, 16, 2007.
-
Francisco J. Mesa-Martinez, Jose Renau, Effective Optimistic-Checker Tandem Core Design through Architectural Pruning. MICRO, 236-248, 2007.
2006
-
Wei Liu 0014, James Tuck, Luis Ceze, Wonsun Ahn, Karin Strauss, Jose Renau, Josep Torrellas, POSH: a TLS compiler that exploits program structure. PPOPP, 158-167, 2006.
-
Luis Ceze, Karin Strauss, James Tuck, Josep Torrellas, Jose Renau, CAVA: Using checkpoint-assisted value prediction to hide L2 misses. TACO 3(2), 182-208, 2006.
-
Matthew R. Guthaus, Dennis Sylvester, Richard B. Brown, Process-induced skew reduction in nominal zero-skew clock trees. ASP-DAC, 84-89, 2006.
-
Francisco J. Mesa-Martinez, Michael C. Huang, Jose Renau, SEED: scalable, efficient enforcement of dependences. PACT, 254-264, 2006.
-
Matthew R. Guthaus, Dennis Sylvester, Richard B. Brown, Clock buffer and wire sizing using sequential programming. DAC, 1041-1046, 2006.
-
Jose Renau, Karin Strauss, Luis Ceze, Wei Liu 0014, Smruti R. Sarangi, James Tuck, Josep Torrellas, Energy-Efficient Thread-Level Speculation. IEEE Micro 26(1), 80-91, 2006.
-
Yun Ding, Heiner Litz, Creating multiplatform user interfaces by annotation and adaptation. IUI, 270-272, 2006.
2005
-
Jose Renau, James Tuck, Wei Liu 0014, Luis Ceze, Karin Strauss, Josep Torrellas, Tasking with out-of-order spawn in TLS chip multiprocessors: microarchitecture and compilation. ICS, 179-188, 2005.
-
Jose Renau, Karin Strauss, Luis Ceze, Wei Liu 0014, Smruti R. Sarangi, James Tuck, Josep Torrellas, Thread-Level Speculation on a CMP can be energy efficient. ICS, 219-228, 2005.
-
Matthew R. Guthaus, Natesan Venkateswaran, Vladimir Zolotov, Dennis Sylvester, Richard B. Brown, Optimization objectives and models of variation for statistical gate sizing. ACM Great Lakes Symposium on VLSI, 313-316, 2005.
-
Rajiv A. Ravindran, Robert M. Senger, Eric D. Marsman, Ganesh S. Dasika, Matthew R. Guthaus, Scott A. Mahlke, Richard B. Brown, Partitioning Variables across Register Windows to Reduce Spill Code in a Low-Power Processor. IEEE Trans. Computers 54(8), 998-1012, 2005.
-
Cyrus Bazeghi, Francisco J. Mesa-Martinez, Jose Renau, uComplexity: Estimating Processor Design Effort. MICRO, 209-218, 2005.
-
Matthew R. Guthaus, Natesan Venkateswaran, Chandu Visweswariah, Vladimir Zolotov, Gate sizing using incremental parameterized statistical timing analysis. ICCAD, 1029-1036, 2005.
2004
-
Luis Ceze, Karin Strauss, James Tuck, Jose Renau, Josep Torrellas, CAVA: Hiding L2 Misses with Checkpoint-Assisted Value Prediction. Computer Architecture Letters 3, 2004.
-
Yun Ding, Heiner Litz, Dennis Pfisterer, A graphical single-authoring framework for building multi-platform user interfaces. IUI, 235-237, 2004.
2003
-
Yun Ding, Heiner Litz, Rainer Malaka, Dennis Pfisterer, On Programming Information Agent Systems - An Integrated Hotel Reservation Service as Case Study. MATES, 50-61, 2003.
-
Robert M. Senger, Eric D. Marsman, Michael S. McCorquodale, Fadi H. Gebara, Keith L. Kraver, Matthew R. Guthaus, Richard B. Brown, A 16-bit mixed-signal microsystem with integrated CMOS-MEMS clock reference. DAC, 520-525, 2003.
-
Basilio B. Fraguela, Jose Renau, Paul Feautrier, David A. Padua, Josep Torrellas, Programming the FlexRAM parallel intelligent memory system. PPOPP, 49-60, 2003.
-
Michael C. Huang, Jose Renau, Josep Torrellas, Positional Adaptation of Processors: Application to Energy Reduction. ISCA, 157-168, 2003.
-
Rajiv A. Ravindran, Robert M. Senger, Eric D. Marsman, Ganesh S. Dasika, Matthew R. Guthaus, Scott A. Mahlke, Richard B. Brown, Increasing the number of effective registers in a low-power processor using a windowed register file. CASES, 125-136, 2003.
2002
-
Michael C. Huang, Jose Renau, Josep Torrellas, Energy-efficient hybrid wakeup logic. ISLPED, 196-201, 2002.
-
José F. Martínez, Jose Renau, Michael C. Huang, Milos Prvulovic, Josep Torrellas, Cherry: checkpointed early resource recycling in out-of-order microprocessors. MICRO, 3-14, 2002.
2001
-
Michael C. Huang, Jose Renau, Seung-Moon Yoo, Josep Torrellas, L1 data cache decomposition for energy efficiency. ISLPED, 10-15, 2001.
-
Michael C. Huang, Jose Renau, Seung-Moon Yoo, Josep Torrellas, The Design of DEETM: a Framework for Dynamic Energy Efficiency and Temperature Management. J. Instruction-Level Parallelism 3, 2001.
2000
-
Michael C. Huang, Jose Renau, Seung-Moon Yoo, Josep Torrellas, A framework for dynamic energy efficiency and temperature management. MICRO, 202-213, 2000.
-
Michael C. Huang, Jose Renau, Seung-Moon Yoo, Josep Torrellas, Energy/Performance Design of Memory Hierarchies for Processor-in-Memory Chips. Intelligent Memory Systems, 152-159, 2000.


Professional counseling is considered a collaborative effort between a client and a counselor. Professionals in this field help their clients to identify their goals and potential solutions to issue that may cause emotional turmoil. Furthermore, they strive to improve coping and communication skills, create heightened self-esteem and promote optimal mental health and behavioral change. There are many different forms of counseling.
This process can take a different amount of time. It can be terminated when the issue that the help was pursued because of becomes resolved or manageable. Still, some insurance companies or managed care plans may have a limit to the number of sessions in which they will cover. Individuals are encouraged to check their health plan and find out what limitations may exist in their coverage.
There are numerous types of counseling on personal and business levels. Some of the most common types include group, individual, family and couples. Individual refers to that which is done as a personal opportunity for an individual to experience growth and receive support during hard times in life. This can help some people with personal issues in life, including substance abuse, anxiety, anger, relationship struggles and marriage, depression, career changes, school troubles and parenting problems.
There is also couple counseling. Every single couple goes through its ups and downs and changes in harmony and closeness with time. This can range from small concerns over stagnation to more serious problems such as aggressive behavior. Marriage or couples counseling is available to aid couples in resolving conflicts and healing wounds.
Family therapy may be sought out due to stress that is negatively impacting family structure or closeness, as well as communication. It might also be used during times of major life changes. This type can range in many respects. In some cases, it is best to have the entire family go together to multiple sessions. Issues that may be addressed in these sessions include, but are not limited to: sibling conflict, new family members, loss of family members, concerns based around parenting and more.
Group sessions of this kind are a great way for people to recognize that they are not alone with their challenges. Being involved in a group of people who are struggling with similar difficulties or experiences can help one understand the struggles related to the topic. It can also help them understand all the possible solutions that are available to them. Groups usually include eight participants, one or two leaders and a common topic, such as self-esteem, domestic violence, abuse or trauma recovery, or anger management.
There are numerous specialties in this. Essentially, counseling can be sought out for nearly any problem. The results that are seen from this will vary from person to person, just as the amount of time needed will differ. Sometimes people are recommended to undergo these programs and sessions as a way to aid them in recovery or to receive necessary support.
Counseling is available for a variety of things. It involves an effort between a counselor and a client. Professionals have all the tools necessary to help clients achieve goals and find solutions for various problems. This type of aid may be needed on a personal and private level, or in another respect, such as business. Everyone will take something different from this.


Create a form in order to view and edit schedules." %}


All Packages Class Hierarchy This Package Previous Next Index
Class javax.servlet.ServletException
java.lang.Object
|
+----java.lang.Throwable
|
+----java.lang.Exception
|
+----javax.servlet.ServletException
- public class ServletException
- extends Exception
This exception is thrown to indicate a servlet problem.
-
ServletException()
- Constructs a new ServletException.
-
ServletException(String)
- Constructs a new ServletException with the specified
descriptive message.
ServletException
public ServletException(String msg)
- Constructs a new ServletException with the specified
descriptive message.
- Parameters:
- msg - the string describing the exception
ServletException
public ServletException()
- Constructs a new ServletException.
All Packages Class Hierarchy This Package Previous Next Index


Friends
Add User
Post Message
Delete Group
We wine and dine
normal
urgent
critical
Tomipaul
normal
Where were you when old Roger died?
Karashaki
Old Roger died because you were not there!
urgent
Ghost mode
Old Roger has left his grave!!
Choose priority
Normal
Urgent
Critical
Modal Header
A bunch of text
@elementDeveloper
GROUPS
Friends
10
Family
1
Colleagues
1
library_add
Add Group
Submit
send


This week's sets of classical pen and paper and computational exercises are a continuation of the topics from the previous homework set and lectures from the last two weeks. We keep dealing with simple motion problems and conservation laws; energy, momentum and angular momentum. These conservation laws are central in Physics and understanding them properly lays the foundation for understanding and analyzing more complicated physics problems.
The relevant reading background is
In both textbooks there are many nice worked out examples. Malthe-Sørenssen's text contains also several coding examples you may find useful.
The numerical homework focuses on another motion problem where you can use the code you developed in homework sets 3 and 4, almost entirely. Please take a look at the posted solutions (jupyter-notebook) for homework sets 3 and 4. You need only to change the forces at play, the one code to rule all exercises. The problem at hand is a classic, the gravitational force acting between the Sun and the Earth. Here you will notice also that the standard Euler-integration algorithm is not the best choice and we will introduce the so-called Euler-Cromer method and the Velocity-Verlet method. These methods will give much more stable numerical results with only few additions to your code.
The code you develop here will also be reused when we analyze energy conservation in homework set 6. And for those of you doing the honors project, it serves as a starting point for the solar system variant.
This exercise was partly discussed during the lectures of the weeks of January 30-February 3 and February 6-10.
We will study a classical electron which moves in the \( x \)-direction along a surface. The force from the surface is
$$
\boldsymbol{F}(x)=-F_0\sin{(\frac{2\pi x}{b})}\boldsymbol{e}_x.
$$
The constant \( b \) represents the distance between atoms at the surface of the material, \( F_0 \) is a constant and \( x \) is the position of the electron.
Taylor exercise 3.11. This exercise is meant to illustrate momentum conservation or not. This exercise was partly discussed during the lectures, see the notes from the week of February 6-10 on Energy and Momentum etc, see the part on Momentum conservation. Taylor's chapter 3.2 covers also this example.
Taylor exercises 3.13 (5pt) and 3.14 (5pt). This is a continuation of the previous exercise and most of the relevant background material can be found in Taylor chapter 3.2.
Taylor exercise 3.20. Here Taylor's chapter 3.3 can be of use. This relation will turn out to be very useful when we discuss systems of many classical particles.
The aim of this exercise (as well as the next) is to study the motion of objects under the influence of the gravitational force. We will limit ourselves to the Earth-Sun system. Here we will scale the equations and sketch our first algorithm for solving the equations, namely using Euler's method again, as we did in homework sets 3 and 4. This part together with the numerical part forms also the entry point for the solar system honors project. Furthermore, we will reuse parts of these results when analyzing energy conservation in homework 6.
We will limit ourselves (in order to test the algorithm) to a hypothetical solar system with the Earth only orbiting around the sun. The only force in the problem is gravity. Newton's law of gravitation is given by a force \( F_G \)
$$
F_G=\frac{GM_{\odot}M_{\mathrm{Earth}}}{r^2},
$$
where \( M_{\odot} \) is the mass of the Sun and \( M_{\mathrm{Earth}} \) is the mass of the Earth. The gravitational constant is \( G \) and \( r \) is the distance between the Earth and the Sun. The Sun has a mass which is much larger than that of the Earth. We can therefore safely neglect the motion of the Sun in this problem.
We assume that the orbit of the Earth around the Sun is co-planar, and we take this to be the \( xy \)-plane. Using Newton's second law of motion we get the following equations
$$
\frac{d^2x}{dt^2}=\frac{F_{G,x}}{M_{\mathrm{Earth}}},
$$
and
$$
\frac{d^2y}{dt^2}=\frac{F_{G,y}}{M_{\mathrm{Earth}}},
$$
where \( F_{G,x} \) and \( F_{G,y} \) are the \( x \) and \( y \) components of the gravitational force.
We will use so-called astronomical units when rewriting our equations. Using astronomical units (AU as abbreviation)it means that one astronomical unit of length, known as 1 AU, is the average distance between the Sun and Earth, that is \( 1 \) AU = \( 1.5\times 10^{11} \) m. It can also be convenient to use years instead of seconds since years match better the time evolution of the solar system. The mass of the Sun is \( M_{\mathrm{sun}}=M_{\odot}=2\times 10^{30} \) kg. The mass of Earth is \( M_{\mathrm{Earth}}=6\times 10^{24} \) kg with a distance 1AU.
In setting up the equations we limit ourselves to a co-planar motion and use only the \( x \) and \( y \) coordinates. But you should feel free to extend your equations to three dimensions, it is not very difficult and the data from NASA are all in three dimensions.
NASA has an excellent site at http://ssd.jpl.nasa.gov/horizons.cgi#top. From there you can extract initial conditions in order to start your differential equation solver. At the above website you need to change from OBSERVER to VECTOR and then write in the planet you are interested in. The generated data contain the \( x \), \( y \) and \( z \) values as well as their corresponding velocities. The velocities are in units of AU per day. Alternatively they can be obtained in terms of km and km/s.
For the system below involving only the Earth and the Sun, you could just initialize the position with say \( x=1 \) AU and \( y=0 \) AU.
We assume that mass units can be obtained by using the fact that Earth's orbit is almost circular around the Sun.
For circular motion we know that the force must obey the following relation
$$
F_G= \frac{M_{\mathrm{Earth}}v^2}{r}=\frac{GM_{\odot}M_{\mathrm{Earth}}}{r^2},
$$
where \( v \) is the velocity of Earth. The latter equation can be used to show that
$$
v^2r=GM_{\odot}=4\pi^2\mathrm{AU}^3/\mathrm{yr}^2.
$$
This exercise should be handed in as a jupyter-notebook at D2L. Remember to write your name(s).
In homework sets 3 and 4 we:
This week we will reuse our code from homework 4 (exercises 6) and replace the air resistance and force from the ground with the gravitational force. Then we will study the stability of the system as function of initial conditions and the time step length.
We start by importing some standard packages
# let's start by importing useful packages we are familiar with
import numpy as np
from math import *
import matplotlib.pyplot as plt
%matplotlib inline
Here we add a code-example which may aid in the above studies using Euler's forward method.
DeltaT = 0.001
#set up arrays
tfinal = 10 # in years
n = ceil(tfinal/DeltaT)
# set up arrays for time t, velocity v, and position r
t = np.zeros(n)
v = np.zeros((n,2))
r = np.zeros((n,2))
# Initial conditions as compact 2-dimensional arrays
r0 = np.array([1.0,0.0])
v0 = np.array([0.0,2*pi])
r[0] = r0
v[0] = v0
Fourpi2 = 4*pi*pi
# Start integrating using Euler's method
for i in range(n-1):
# Set up the acceleration
# Here you could have defined your own function for this
rabs = sqrt(sum(r[i]*r[i]))
a = -Fourpi2*r[i]/(rabs**3)
# update velocity, time and position using Euler's forward method
v[i+1] = v[i] + DeltaT*a
r[i+1] = r[i] + DeltaT*v[i]
t[i+1] = t[i] + DeltaT
The following gives you an opportunity to earn five extra credit points on each of the remaining homeworks and ten extra credit points on the midterms and finals. This assignment also covers an aspect of the scientific process that is not taught in most undergraduate programs: scientific writing. Writing scientific reports is how scientist communicate their results to the rest of the field. Knowing how to assemble a well written scientific report will greatly benefit you in you upper level classes, in graduate school, and in the work place.
The full information on extra credits is found at https://github.com/mhjensen/Physics321/blob/master/doc/Homeworks/ExtraCredits/. There you will also find examples on how to write a scientific article. Below you can also find a description on how to gain extra credits by attending scientific talks.
This assignment allows you to gain extra credit points by practicing your scientific writing. For each of the remaining homeworks you can submit the specified section of a scientific report (written about the numerical aspect of the homework) for five extra credit points on the assignment. For the two midterms and the final, submitting a full scientific report covering the numerical analysis problem will be worth ten extra points. For credit the grader must be able to tell that you put effort into the assignment (i.e. well written, well formatted, etc.). If you are unfamiliar with writing scientific reports, see the information here
The following table explains what aspect of a scientific report is due with which homework. You can submit the assignment in any format you like, in the same document as your homework, or in a different one. Remember to cite any external references you use and include a reference list. There are no length requirements, but make sure what you turn in is complete and through. If you have any questions, please contact Julie Butler at<EMAIL_ADDRESS>| HW/Project | Due Date | Extra Credit Assignment |
|---|---|---|
| HW 3 | 2-8 | Abstract |
| HW 4 | 2-15 | Introduction |
| HW 5 | 2-22 | Methods |
| HW 6 | 3-1 | Results and Discussion |
| Midterm 1 | 3-12 | Full Written Report |
| HW 7 | 3-22 | Abstract |
| HW 8 | 3-29 | Introduction |
| HW 9 | 4-5 | Results and Discussion |
| Midterm 2 | _4-16_ | Full Written Report |
| HW 10 | 4-26 | Abstract |
| Final | 4-30 | Full Written Report |
You can also gain extra credits if you attend scientific talks. This is described here.
This opportunity will allow you to earn up to 5 extra credit points on a Homework per week. These points can push you above 100% or help make up for missed exercises. In order to earn all points you must:
Approved talks: Talks given by researchers through the following clubs:
If you have any questions please consult Jeremy Rebenstock<EMAIL_ADDRESS>All the material on extra credits is at https://github.com/mhjensen/Physics321/blob/master/doc/Homeworks/ExtraCredits/.


| DOSE: |
|
sublingual |
Tobacco |
(plant material) |
Prior to this experience, the only experiences that I had had with tobacco were via a Houka (spelling), and I enjoyed it, however did not enjoy the feeling of the smoke. Many of my friends and a ton of kids in my grade do a thing called dip tobacco, in other words, putting a bit of chewing tobacco between their bottom lip and the front of their botton jaw.
 I know that this is a bad reason for it, but it is the truth.
I went to my favorite gas station where I can buy tobacco products without getting carded, seeing as I'm only 17. I got a can of Skoal Apple Blend. The aromas that were emitted from the can were remniscent of an apple jolly rancher. I was excited to see what the phenomena was that everyone was so hyped up about.
I started on my homework and threw in a small lip, seeing as it was my first time and I didn't want to throw up all over everything and have a strange situation to explain to my parents. I began to notice after about a minute a slight buzz coming on, but not a very strong one, so I added about half of what I initially put in and started again on my homework. I noticed it coming in small waves, but definetely noticed what I would call a dizzying of the mind and a sense of relaxation. After about ten minutes I decided to stand up and walk around my room, and I noticed that I felt like I had just run around in a circle four or five times.
After a while I picked the lip out and put it into a cloth and into a pop can that I had been spitting into. I noticed afterward that my throat hurt a little bit, and that I was still pretty dizzy. All in all, I'd say it was a pleasurable experience.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


public interface SearchManager
VirtualMachine
,
SearchCriterionType
,
SearchCriteria
,
SearchMode
| Modifier and Type | Method and Description |
|---|---|
java.util.List<VirtualMachine> |
search(SearchCriteria searchCriteria,
SearchMode mode,
java.util.List<SearchCriterionType> searchOrder)
Method that searches the virtual machines according to the required
search criteria with a set up search criterion priority.
|
java.util.List<VirtualMachine> search(SearchCriteria searchCriteria, SearchMode mode, java.util.List<SearchCriterionType> searchOrder)
searchCriteria
- represents the virtual machine properties which are
required for the searched virtual machinemode
- specifies how precise the searching operation issearchOrder
- represents the priority of each search criterion


TWO FAMILY HOUSE
Reviewed by Harvey Karten Lions Gate Films Director: Raymond De Felitta Writer: Raymond De Felitta Cast: Michael Rispoli, Kelly Macdonald, Kathrine Narducci, Kevin Conway, Matt Servitto, Michele Santopietro, Louis Guss, Rosemary De Angelis, Victor Arnold, Richard B. Shull
Before 1955, American audiences were used to seeing only the handsomest young stars involved in romantic adventures. Delbert Mann's "Marty" changed all that by exploring true love between two homely, lonely and desperate middle-aged people played by Ernest Borgnine and Betsy Blair who discover to their delight that for every lonely guy in the Bronx who looks even slightly better than Quasimodo there's an equally lonely gal who'd love to cook for him for the rest of their lives. While oodles of comparable films, particularly indies, have come out of the woodwork since "Marty," all too many have played up to the most obvious audience pleasers, a good recent example being Stephen Kinsella's schlocky "Double Parked," as insipid as it is predictable--a sitcom from the get-go.
What a pleasure, then, to take in Raymond De Felitta's sincere, alternately funny and poignant drama about ordinary working-class people from the Marty era, the 1950s, except that in this case most of the folks are married and living across the water from the Bronx. This Staten Island saga, filmed on location in that outer borough and also in Jersey City and Bayonne, hones in on small but telling incidents in the lives of the anonymous people living in ramshackle homes, folks who may perhaps travel to Manhattan once a year to see a show. Staten Island in pre-Verrazano Bridge days could as well be Fiji without the palms--that's how isolated from the world so many of these people chose to be.
In "Two Family House" the principal character, Buddy (Michael Rispoli)--a name as familiar to working-class stiffs then as Jennifer or Chad might be to today's debutantes--is in prison. The jail has no bars but is a brig constructed by the fellow's milieu, particularly his demanding and critical wife Estelle (Katherine Narducci). Buddy was once scouted by Arthur Godfrey during his military service, invited to audition as a singer for Godfrey's TV show, but thanks to his "practical" fiances warning, he passes that up and instead launches a series of failed businesses. Buying a two-family house, part of which he plans to convert to a bar, he fails to contemplate the presence of drunken tenant Jim O'Neary (Kevin Conway) who, together with his pregnant wife Mary (Kelly Macdonald) refuses to vacate the premises. When Mary's baby turns out to be black, her Irish husband leaves her, unwittingly setting the stage for a romance between the maritally challenged Buddy and the indigent new mom, Mary.
With the help of an exquisitely restrained performance by Michael Rispoli, known to viewers of the TV series "Sopranos," De Felitta spins a trenchant tale of people who live on the same island but who are worlds apart. The paisans from the neighborhood bar together with the woman friends of Buddy's cantankerous wife Estelle have only contempt for the hapless Mary--not so much for her strange marriage to a drunken bum but for giving birth to a black baby. In fairness, we must say that in insular communities like Staten Island at a time that knew little about political correctness, such prejudice was common, just as people freely accepted the frequent use of pejoratives to describe those of other ethnic and racial groups.
Buddy's growing affection for Mary is not difficult to comprehend given the restrictions imposed on him by his wife and friends and particularly given the beauty of a lass whose lovely Irish lilt could make you think she'd as well be named Shannon or Erin rather than Mary. De Felitta, who wrote the screenplay as well and who perhaps is influenced by Spike Lee, evokes humor from Buddy's banal chatter with his pals, but even more captivating is his portrayal of the growing love between Buddy and Mary who are, at first, as hostile as landlord and tenant (which they were) but who find though a series of spontaneous meetings that they have far more in common with each other than they have with the spouses of their own ethnic circles.
"Two Family House" is a small film, one which proves that you can evoke emotions from an audience by showing real people in critical situations who overcome their initial distrust to work out gratifying solutions. The story is narrated throughout by an unseen African-American, purportedly the now-grown baby who bore witness to the developing bond of the two people who nurtured him. To no one's surprise, "Two Family House" won the audience award at this year's Sundance Festival.
Rated R. Running time: 104 minutes. (C) 2000 by Harvey Karten<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


singup as a new source
Use this page to register as a source of information and to offer new events system.
Source Name:
Source User Name:
Source Password:
Launch Event


PETER FARRELL
Peter Farrell is founder, former long-term CEO and current Chairman of ResMed. Farrell has been Chairman and a director of ResMed since 1989, when the company began as a management buyout of sleep technology from Baxter Healthcare. Peter was previously Foundation Director of the University of New South Wales (UNSW) Graduate School for Biomedical Engineering (1978-89) while simultaneously serving as Vice President of R & D for Baxter Healthcare in Tokyo (1984-89). Dr. Farrell is a director of NuVasive, Inc. (NUVA) a company focused on the surgical treatment of spine disorders. He is also on the board of trustees of The Scripps Research Institute in La Jolla and is Chairman of the Boston-based POC NMR diagnostic company, WaveGuide.
Dr. Farrell is a fellow or honorary fellow of several professional bodies, including the US National Academy of Engineering. He was inducted as 1998 San Diego Entrepreneur of the Year for Health Sciences, 2001 Australian Entrepreneur of the Year and 2005 US National Entrepreneur of the Year for Health Sciences. In 1998, Peter joined the Sleep Medicine Executive Council at Harvard Medical School, served as vice chairman from 2000 to 2010 and then as chairman from 2010 until 2013. He is on various academic advisory boards including UCSD’s Jacobs School of Engineering, where he was named the 2012 Gordon Fellow, UCSD’s Rady Business School and the MIT Dean of Engineering's Advisory Council.
Peter holds a B.E. with honors in chemical engineering from the University of Sydney, an SM in chemical engineering from MIT, a PhD in bioengineering from the University of Washington, Seattle, and a DSc from UNSW for research which resulted in improved treatment for both hemodialysis and peritoneal dialysis patients.


Standards
CGI-developed data standards
OGC data standards
- Full list of OGC standards
- XML encoding standards that support GeoSciML and EarthResourceML
- Geography Markup Language (GML) - also published as ISO 19136
- Observations & Measurements (O&M) - also published as ISO 19156
- SWE Common Data Model
- Web service interface specifications
- Web Map Service (WMS)
- Web Map Context (WMC)
- Styled Layer Descriptor (SLD)
- Web Feature Service (WFS)
- Filter Encoding (FES)
- Web Coverage Service (WCS)
- Catalogue Services Specification (CSW)
ISO data standards for Geographic Information/Geomatics (TC211)
Ontologies, vocabularies, semantic web principles and technologies


© {{ 'now' | date: "%Y" }} Servirtium committers. Jekyll theme by Jalpc by Jarrekk. Hosting by Netlify


Core Features
ScalaWebTest has two main features.
- Handling of web requests and state
- Gauges for simple tests
The short description of the two main features is followed by a getting started section suitable for beginners and a detailed description of all features.
Handling of web requests and state
ScalaWebTest's IntegrationSpec trait helps you to structure your tests and keep them boilerplate free. It extends the most important traits, to write integration tests for web applications, from ScalaTest. It provides an easy way to configure the HtmlUnit webdriver and it takes care of login, web requests and cookies. Before executing your tests, it takes care of login, if needed. Next it requests the resource, which your test wants to verify. To keep your tests boilerplate free, the URL to the tested resource is split in 3 segments. The host and projectRoot are part of the IntegrationSettings. The last part is the path itself. In most cases a test should only work with a single resource, in this case the path doesn't change throughout the test. Per default the IntegrationSpec will, before each test, take care that the current resource in the WebDriver is the one belonging to the defined path. This behavior can be changed. Therefore your test does not have to interact with the WebDriver. Instead it can directly verify the content of the current resource via webdriver.
Gauges for simple tests
The HtmlUnit webdriver and selenium are very powerful. But writing integration tests for web application is still very cumbersome and the resulting tests are often hard to read. We think the easiest way to define the expected result of a web request is using the returned data format itself. Therefore we use pseudo HTML (let's focus on HTML for the moment, but we also support JSON) to describe the expected result. Of course a simple string comparison would be to naive. Therefore we treat the HTML (technically we require XML, because it has native support in Scala), which is used to describe the result, as gauge definition (other would call it a template). If we can find all elements from the gauge definition in the verified HTML page, it is considered valid.
Getting started
Add ScalaWebTest to your project
Before you get to use all the nice features, you have to introduce ScalaWebTest to your project. All you have to do is adding the core module to your test or integration test dependencies.
Add ScalaWebTest to your SBT project
You can add ScalaWebTest to your testing dependencies in the build.sbt/scala of your sbt project as follows.
{% highlight scala %} libraryDependencies += "org.scalawebtest" %% "scalawebtest-core" % "{{page.scalaWebTestVersion}}" % "test"{% endhighlight %}We recommend to bind the ScalaWebTest dependencies to the IntegrationTest configuration, which can be referenced with "it". The IntegrationTest configuration is not active by default. Follow the guide for SBT 1.0 or SBT 0.13 to make it part of your build. Then you can add ScalaWebTest to your project as follows.
{% highlight scala %} libraryDependencies += "org.scalawebtest" %% "scalawebtest-core" % "{{page.scalaWebTestVersion}}" % "it"{% endhighlight %}If you want to manage the most important transitive dependencies of ScalaWebTest, you might configure it as follows (replace "it" with "test", if you do not make use of the IntegrationTest configuration. Especially selenium-java and htmlunit-driver have to align with each other.
{% highlight scala %} libraryDependencies ++= Seq( "org.scalawebtest" %% "scalawebtest-core" % "{{page.scalaWebTestVersion}}" % "it", "org.scalatest" %% "scalatest" % "3.0.8" % "it", "org.seleniumhq.selenium" % "selenium-java" % "3.141.59" % "it", "org.seleniumhq.selenium" % "htmlunit-driver" % "2.35.1" % "it" ){% endhighlight %}Add ScalaWebTest to your maven project
You have to add the following dependency to your maven project to use ScalaWebTest.
{% highlight xml %}ScalaWebTest is also available for Scala 2.12 and 2.11, change the version after the underscore, to get a ScalaWebTest version which is binary compatible with the Scala version which you use.
{% highlight xml %}In case you want to manage the most important transitive dependencies of ScalaWebTest, you can add our bill-of-materials to your project. Just add the following to your dependencyManagement.
{% highlight xml %}Write your first test
To write your first test, you have to create a scala file in src/it/scala or src/test/scala, depending on your test setup. Lets assume we want to verify our homepage. Create a class named HomepageSpec, and let it extend IntegrationFlatSpec. This uses FlatSpec style from ScalaTest, other styles are available.
{% highlight scala %} package org.scalawebtest.documentation import org.scalawebtest.core.IntegrationFlatSpec import org.openqa.selenium.By class HomepageSpec extends IntegrationFlatSpec { config.useBaseUri("http://www.scalawebtest.org/index.html") "Our homepage" should "contain a succinct claim" in { webDriver.findElement(By.tagName("h2")).getText shouldEqual "Reduce the effort needed to write integration tests" } }{% endhighlight%} Try it in ScastieThat's all you need. The IntegrationSpec, inherited from IntegrationFlatSpec will automatically call http://localhost:8080/index.html before executing a test. When using FlatSpec style the block following the in keyword is the body of the test. Within the body of a test you can access the webDriver, to test the content of the current page. The webDriver is backed by the HtmlUnit driver from selenium. It emulates a browser and supports among other things JavaScript execution, clicking elements and submitting forms.
Write your first gauge
This test can be rewritten making use of the HtmlGauge. Writing gauges provides a detailed introduction to this feature.
{% highlight scala %} package org.scalawebtest.documentation import org.scalawebtest.core.IntegrationFlatSpec class HomepageSpec extends IntegrationFlatSpec with HtmlGauge { config.useBaseUri("http://www.scalawebtest.org/index.html") "Our homepage" should "contain a succinct claim" in { currentPage fitsReduce the effort needed to write integration tests
} }{% endhighlight%} Try it in ScastieStructuring your project
Build your base trait
Configurations, style choice and possible custom extension should be shared across your project. To do so, we recommend to create a base trait, which is extended by all your tests. ScalaWebTest uses this concept for it's own integration tests as well. {% highlight scala %} package org.scalawebtest.documentation import org.scalatest.AppendedClues import org.scalatest.concurrent.PatienceConfiguration.Timeout import org.scalatest.time.SpanSugar._ import org.scalawebtest.core.gauge.HtmlGauge import org.scalawebtest.core.{FormBasedLogin, IntegrationFlatSpec} import scala.language.postfixOps trait MyProjectBaseSpec extends IntegrationFlatSpec with FormBasedLogin with AppendedClues with HtmlGauge { config.useBaseUri("http://localhost:9090") loginConfig.useLoginUri("http://localhost:9090/login.php") override def loginTimeout = Timeout(5 seconds) }{% endhighlight %} This base trait uses FlatSpec style, FormBasedLogin and HtmlGauge. It configures host, loginPath and projectRoot and sets a suitable loginTimeout. Our integration tests have two purposes. Not only do we use them to test our framework, but we also use it as documentation. They are a good starting point when looking for best practice on how to make the most out of ScalaWebTest.Selecting a style
ScalaTest provides a wide variety of testing styles. ScalaWebTest supports all available styles. As we believe the FlatSpec style is easy to read for most people, we choose it for our own documentation and most of our integration tests. There is no technical reason behind it, it is simply a matter of taste. We recommend that you extend one of the Integration*Spec/Suite classes from Styles.scala in your base trait.
Configure your tests
A reasonable default configuration is provided, which can easily be adapted. If you want to change a configuration for all your tests, we recommend to change it in your base trait, otherwise best practice is to change it in the constructor of your TestSpec. Two config objects exist, one which is used during login (if login is needed) and one which is used during test execution.
In the following TestSpec JavaScript errors are swallowed during Login phase, no matter if JavaScript execution is enabled or disable. During test execution JavaScript is enabled and JavaScript errors let the test fail.
{% highlight scala %} package org.scalawebtest.documentation import org.scalawebtest.core.IntegrationFlatSpec class HomepageSpec extends IntegrationFlatSpec { config.useBaseUri("http://www.scalawebtest.org/index.html") loginConfig.swallowJavaScriptErrors() config.enableJavaScript(throwOnError = true) "Our homepage" should "contain a succinct claim" in { webDriver.findElementByTagName("h2").getText shouldEqual "Reduce the effort needed to write integration tests" } }{% endhighlight%} Try it in ScastieBy default JavaScript is not executed and JavaScript errors don't throw. Also CSS is not interpreted. This applies to both loginConfig and config.
Writing gauges
Using gauges
Using gauges to write your integration tests, is the core idea of ScalaWebTest. We think using org.scalatest.selenium.WebBrowser.Query, i.e CssSelectorQuery, to select elements in a HTML document and then verifying it is cumbersome and resulting tests are hard to read. Instead we copy a concept from the manufacturing industry. They build gauges (or templates), which they then lay their workpiece into. If the workpiece fits in the gauge, it satisfies the requirements. Our gauges are defined in HTML (XML to be more precise, or scala.xml.NodeSeq to be exact) instead of being forked from steel. Let's have a look at a simple example to get an idea how those gauges work.
{% highlight scala %} package org.scalawebtest.documentation import org.scalawebtest.core.IntegrationFlatSpec import org.scalawebtest.core.gauge.HtmlGauge class SimpleGaugeSpec extends IntegrationFlatSpec with HtmlGauge { path = "/navigation.jsp" "The navigation" should "contain our navigation links in correct structure, order and with the expected text" in { fit( ) } }{% endhighlight %}This test would be successful, when run against, when navigation.jsp contains the following HTML
{% highlight html %} {% endhighlight %}We can already, see that fits() ignored html, head and body, elements before the navigation. But following the idea from manufacturing, we should strip our gauge, from everything which we don't need. Let's assume we only want to make sure our navigation contains the correct links. We don't care about classes added for design or text contained in the links. Therefore we reduce our test to.
{% highlight scala %} "The navigation" should "contain our navigation links in correct structure and order" in { fit( ) }{% endhighlight %}If we don't care about the unnumbered list, we can reduce our test even further.
{% highlight scala %} "The navigation" should "contain our navigation links in correct order" in { fit( ) }{% endhighlight %}The document then fits our gauge as follows. Matching parts are green, parts in grey have no influence whether the document fits or not.
<!DOCTYPE html>

first navigation element

second navigation element

third navigation element

If the gauge doesn't fit, we get an error. Lets change the test to the following.
{% highlight scala %} "The navigation" should "contain our navigation links in correct order" in { fit( ) }{% endhighlight %}This will of course not match, because the text within the first link is wrong and belongs to the second link. See the difference highlighted in the following html block.
<!DOCTYPE html>

second navigation element first navigation element

second navigation element

third navigation element

This results in the following error message from ScalaWebTest
{% highlight text %} 23:06:37.482 [ScalaTest-run-running-SimpleGaugeSpec] INFO IntegrationSpec - Going to http://localhost:8080/navigation.jsp Misfitting Text: The text [first navigation element] within [HtmlAnchor[]] didn't equal [second navigation element] Current document does not match provided gauge: ScalaTestFailure{% endhighlight %}Test for classes on elements
The class attribute is special, because it is basically an unsorted set of class attributes. Usually we don't bother, if additional classes are present in our HTML and for sure we never care about the order. ScalaWebTest therefore handles the class attribute different from the rest. Per default the attribute content, has to match exactly the one you provided in your gauge, but for classes, it only asserts, that the classes which an element contains within your gauge definition, are all present on that element in the HTML document. The following gauge therefore matches all the elements shown below.
{% highlight scala %} fit( ){% endhighlight %} {% highlight html %} {% endhighlight %} {% highlight html %} {% endhighlight %} {% highlight html %} {% endhighlight %}Test single elements
Often trying to fit the complete document into the defined gauge isn't the most natural and efficient thing to do. Especially when a website contains multiple elements of the same kind, such as content cards, gallery images or items of a product list, finding all those elements first, and then trying to fit each element with the gauge, is better.
{% highlight scala %} package org.scalawebtest.documentation import org.scalatest.AppendedClues import org.scalawebtest.core.IntegrationFlatSpec import org.scalawebtest.core.gauge.HtmlElementGauge class ElementGaugeSpec extends IntegrationFlatSpec with HtmlElementGauge with AppendedClues { path = "/galleryOverview.jsp" def images = findAll(CssSelectorQuery("ul div.image_columns")) val imageGauge = "The gallery" should "contain the expected HTML for every image" in { images.size should be > 5 withClue " - gallery didn't contain the expected amount of images" for (image <- images) { image fits imageGauge } } }{% endhighlight %}When using findAll with a for-comprehension, one should always verify, that the expected amount of elements was found.
When using fits or doesntFit, the same features are available, no matter if the whole document, or a single element is checked. Therefore the following chapters apply to both usecases. There are two restrictions when using gauges for single elements (built using ElementGaugeBuilder.GaugeFromElement)
- the gauge may only contain one top level element
- the top level element of the gauge has to be the same, as the one which is checked (not one of its children)
Test for containment
It is common that you don't want to verify the complete attribute value, or text of an element. You may use @contains to trigger the ContainsMatcher instead of the DefaultMatcher. Thanks to this matcher, this gauge matches the following HTML element
{% highlight scala %} fit(){% endhighlight %} {% highlight html %} {% endhighlight %}The containsMatcher is also available, when matching text.
{% highlight scala %} fit(@contains available){% endhighlight %} {% highlight html %} ScalaWebTest is available on github{% endhighlight %}Hint: always add a space after the matcher annotation. We enforce this space to improve readability of tests.
Test for regex matches
When we want to enforce textual rules on our content, we need a more powerful Matcher. The RegexMatcher is our friend. It is triggered using @regex
{% highlight scala %} fit(){% endhighlight %}This gauge will fit
{% highlight html %} {% endhighlight %}but it won't fit
{% highlight html %} {% endhighlight %}Negating your tests
Sometimes you want to make sure that a certain content is not shown. For example you want to make sure, that no login form is shown, when a user is logged in. Or you want to make sure that a post doesn't appear before it is made public. To do so you may use doesnt fit() or not fit(). They are synonyms. Choose whatever reads better in your current context.
{% highlight scala %} package org.scalawebtest.documentation import org.scalawebtest.core.IntegrationFlatSpec import org.scalawebtest.core.gauge.HtmlGauge class LoggedInSpec extends IntegrationFlatSpec with HtmlGauge { path = "/protectedContent.jsp?username=admin&password=secret" "When logged in the protectedContent page" should "not show the login form" in { not fit } }{% endhighlight %}In case the login form is mistakenly rendered, the following error will appear.
{% highlight text %} Current document matches the provided gauge, although expected not to! Fitting nodeTesting a complete process
Today's web applications are of course not that static. Usually it is more interesting to test a complete process. This is easily possible with Selenium. You can use it to press buttons, fill and submit forms and even execute JavaScript. As the gauges are based on Selenium, they can be combined with actions as well. As soon as an action is executed, the currentPage is updated and our next call to fit() or doesnt fit() will be executed against the updated page.
Lets try this out using a page with protected content. On first load a form will be shown, after logging in the form disappears, instead the text sensitive information appears.
{% highlight scala%} package org.scalawebtest.documentation import org.scalawebtest.core.IntegrationFlatSpec import org.scalawebtest.core.gauge.HtmlGauge class LoginSpec extends IntegrationFlatSpec with HtmlGauge { path = "/protectedContent.jsp" "When accessing protectedContent it" should "show the login form" in { fits( ) } it should "hide the protected content, when not logged in" in { not fitsensitive information
} it should "show the protected content, after logging in" in { textField("username").value = "admin" pwdField("password").value = "secret" submit() fits(sensitive information
) } }{% endhighlight %}This example test was split into three smaller tests. This is technically not necessary, but has the following advantage. When only part of the tests fails, you have a better idea what went wrong. For example, if the login fails, but the login form is correctly shown, the issue has to be your login process. But if the login form isn't shown, the problem has a very different cause. In addition the verbose output from the gauge should help you finding the root cause.
Using advanced Features
Executing JavaScript
Thanks to Selenium executing JavaScript is not an issue. Per default JavaScript is not executed with ScalaWebTest, because tests run faster without. To execute JavaScript, you have to enable it.
{% highlight scala %} config.enableJavaScript(throwOnError = true){% endhighlight %}In addition, you have to decide whether a JavaScript error should cause your test to fail or not. Usually failing on JavaScript errors is good, but sometimes you have to write tests for a web application with major issues in it's JavaScript. This is one of the rare moments, where you have to disable throwOnError to be able to test the web application.
After receiving document, your browser needs some time to execute JavaScript. The same is true for the Selenium webdriver. We have to give it some time to execute JavaScript, before we can expect it to have transformed the HTML. ScalaTest provides eventually, which does exactly what we need. It repeats a given test until it succeeds or the given timeout has been surpassed.
{% highlight scala %} eventually(timeout(3 seconds)) { fits(Additional modules
Modules
Every web application framework has its own specialities, which are relevant for testing. ScalaWebTest allows to share this framework specific logic via modules. We encourage others, to create additional modules for their most used framework.
What should be shared via modules?
We think even simple things such as default login method, ports and urls might be worth sharing. Functions to create content, update accounts, or requesting a page in debug mode, could be even better candidates for a module.
AEM module
As the creators of ScalaWebTest work a lot with Adobe Experience Manager, they decided to create the first module for this CMS
To use this module extend AemTweaks from the aem module in your BaseTrait. This will cause the following.
- FormBasedLogin is activated
- loginPath is set to the default AEM 6 login path
- pages are requested with wcmmode cookie set to DISABLED
PageProperties
Disclaimer: This trait is currently only available in scalawebtest-aem_2.11, due to dependencies on play-json which wasn't yet released for 2.12
The PageProperties trait populates the pageProperties, and if applicable componentProperties and suffixProperties fields with a JsValue representing the properties of the currentPage, component and suffix respectively. It does so by retrieving the JSON representation of the currentPage. This works by default on all CQ/AEM author instances. In addition it provides convenience methods to access the pageProperties content.
- pageProperties(name: String) - retrieve a page property by name
- jcrContent(name: String) - retrieve a property from jcr:content by name
- findByResourceType(value: String) - search through a parsys field in the pageProperties and find all component with given resourceType
- findByProperty(name: String)(value: String) - search through a parsys field in the pageProperties and find all component with given property name and value
It populates the pageProperties field with a play.api.libs.json.JsValue, which represents the properties of the currentPage. In case the url/path points to something below jcr:content, the componentProperties will be populated with the properties of the component, and the pageProperties with those of the containing page. In case the url/path contains a suffix, the suffixProperties will be populated with the properties of the page referenced in the suffix. It does so by manipulating the url field, to request the JSON representation of the currentPage from CQ/AEM. This feature is available on CQ/AEM author instances by default. The enable.json property of the org.apache.sling.servlets.get.DefaultGetServlet of your CQ/AEM instance has to be set to true. Only extend this trait in tests which need the feature, as it otherwise unnecessarily slows down your tests, due to additional requests for page properties.
JSON module
JSON is currently the most important data exchange format in the web. We think writing integration tests for web-services, which return JSON, should be as easy as for websites. Therefore we created the JsonGauge, which provides functionality comparable to the HtmlGauge. All its magic is exposed via the according builder, which provides implicit conversions for JsValue, JsLookup and functions retrieving the currentPage from the webDriver. We choose to use play-json to parse the JSON response. To keep the core module clean from additional dependencies a module was created.
Only verifying a few values
To verify the value or type of a few values, we consider standard play-json sufficient. Just use Json.parse to parse the response and then use \ and \\ to navigate the json structure.
{% highlight scala %} package org.scalawebtest.documentation import org.scalawebtest.core.IntegrationFlatSpec import play.api.libs.json.Json class ReducedJsonSpec extends IntegrationFlatSpec { path = "/dijkstra.json" def json = Json.parse(webDriver.getPageSource) "Dijkstra" should "have the correct firstname" in { def firstName = (json \ "firstName").as[String] firstName should equal("Edsger") } }{% endhighlight %}All JSON tests in the following examples use the following JSON response
Of course this way of verifying JSON responses reaches its limitations very soon. Therefore we created JsonGauge
JsonGauge - the ScalaWebTest way
Same as when verifying HTML, we think the easiest and most natural way to formulate your expectation is using the same language, as the tested response itself. With the JSON gauge you can use JSON to specify the gauge, into which the JSON response has to fit.
{% highlight scala %} package org.scalawebtest.documentation import org.scalawebtest.core.IntegrationFlatSpec import org.scalawebtest.json.JsonGauge import org.scalawebtest.json.JsonGaugeFromResponse.fitsValues class DocumentFitsValuesSpec extends IntegrationFlatSpec with JsonGauge { path = "/jsonResponse.json.jsp" "FitsValues" should "report success, when the json gauge contains the same values as the response it is tested against" in { fitsValues( """{ "name": "Dijkstra", "firstName": "Edsger", "yearOfBirth": 1930, "isTuringAwardWinner": true, "theories": [ "shortest path", "graph theory" ] }""" ) } }{% endhighlight %}Often verifying the complete response isn't ideal. We recommend to parse and traverse the document using play-json and then verify if the JsLookup or JsValue fits the defined gauge.
{% highlight scala %} package org.scalawebtest.documentation import org.scalawebtest.core.IntegrationFlatSpec import org.scalawebtest.json.JsonGauge import play.api.libs.json.Json class DijkstraJsonGaugeSpec extends IntegrationFlatSpec with JsonGauge { path = "/dijkstra.json" def dijkstra = Json.parse(webDriver.getPageSource) "The response for Dijkstra" should "contain the expected values" in { dijkstra fits values of """{ "firstName": "Edsger", "name": "Dijkstra", "yearOfBirth": 1930, "theories": [ "shortest path", "graph theory" ] } """ } it should "contain the correct universities" in { val universities = dijkstra \ "universities" universities fit values of """ [ { "name": "Universität Leiden","begin": 1948, "end": 1956 }, { "name": "Mathematisch Centrum Amsterdam", "begin": 1951, "end": 1959 }, { "name": "Technische Universiteit Eindhoven", "begin": 1962, "end": 1984 }, { "name": "University of Texas at Austin", "begin": 1984, "end": 1999 } ] """ } }{% endhighlight %}As with the HTML gauge, controlled variance is allowed. The original response contains additional key/value pairs (isTuringAwardWinner and universities). Also the order of the name and firstName is the other way around. Nevertheless this test would succeed, when run. It would report an error, if the response would:
- contain a different value for one of the keys
- miss a key, which is contained in the gauge
- contain a different hierarchy of the key/value pairs
Behaviors are a good way to share tests. When sharing test via behaviors, verifying values is often too specific. Therefore we provide fits types of in addition to fits values of.
{% highlight scala %} package org.scalawebtest.documentation import org.scalawebtest.core.IntegrationFlatSpec import org.scalawebtest.json.JsonGauge import play.api.libs.json.Json class DijkstraJsonGaugeFitsTypesSpec extends IntegrationFlatSpec with JsonGauge { path = "/dijkstra.json" def dijkstra = Json.parse(webDriver.getPageSource) "The response for Dijkstra" should "contain the expected types" in { dijkstra fits types of """{ "firstName": "", "name": "", "yearOfBirth": 0, "theories": [ "" ] } """ } }{% endhighlight %}Now the values no longer matter. They are only used to determine the expected type. Therefore we recommend to use values, which indicate that only the type matters. Use empty strings and 0. This test would succeed. It would fail, when the response would:
- contain a value with a type different from the one expected for the given key
- miss a key, which is contained in the gauge
- contain a different hierarchy of the key/value pairs
- when an array value would contain an element with a mismatching type
Lets have a closer look at arrays. Usually we expect all array elements to match certain expectations. When using fits types of, you only have to define those expectations once. All array elements then have to fulfill them. Lets have a look at an example. Lets assume the test of the previous example would be replaced with the following
{% highlight scala %} "The response for Dijkstra" should "contain the expected types" in { dijkstra fits types of """{ "firstName": "", "name": "", "yearOfBirth": 0, "theories": [ "" ] "universities": [{ "name": "", "begin": 0, "end": 0 }] } """ }{% endhighlight %}This would enforce all elements of the universities array to contain a key name with a value of type string and the keys begin and end with a value of type number. The elements might contain additional keys, such as department, but no contradictions. Sometimes this is not the behavior one is looking for. Two more options exist to verify arrays. One common scenario is, that the size of the array matters, i.e. coordinates in a GeoJson document. To test this use fits typesAndArraySizes of. In this case every array element is considered unique, you have to provide specific expectations for every element, but those expectations are allowed to differ. For example, we expect Martin to have studied and worked at three universities. For the first two an end is known. This isn't the case for the last one.
{% highlight scala %} "The response for Odersky" should "contain the expected types and array sizes" in { odersky fits typesAndArraySizes of """{ "firstName": "", "name": "", "universities": [{ "name": "", "begin": 0, "end": 0 }, { "name": "", "begin": 0, "end": 0 }, { "name": "", "begin": 0 }] } """ }{% endhighlight %}One more common situation exists with arrays. Often the array elements are not sorted. Although we expect the array to contain a specific element, we don't know it's position. For this situation containsElementFitting values/types/typesAndArraySizes of exists.
{% highlight scala %} package org.scalawebtest.documentation import org.scalawebtest.core.IntegrationFlatSpec import org.scalawebtest.json.JsonGauge import play.api.libs.json.{JsLookupResult, JsValue, Json} class ContainsElementFittingSpec extends IntegrationFlatSpec with JsonGauge { path = "/jsonResponse.json.jsp" def dijkstra: JsValue = Json.parse(webDriver.getPageSource) def universities: JsLookupResult = { dijkstra \ "universities" } "The universities array" should "contain an element with the expected types" in { universities containsElementFitting types of """{ | "name": "", | "begin": 0, | "end": 0 | } """.stripMargin } it should "contain an element with the expected values" in { universities containsElementFitting values of """{ | "name": "Technische Universiteit Eindhoven", | "begin": 1962, | "end": 1984 | }""".stripMargin } }{% endhighlight %}Because of its simplicity we prefer play-json over Argonaut and Circe. A good alternative to our JSON module is cornichon. Cornichon requires your tests to be a bit more specific then the ScalaWebTest ones, but it provides nice ways to do so. As cornichon uses Akka Http instead of HtmlUnit to retrieve the JSON response, it is only partially compatible with ScalaWebTest. They might coexist in the same codebase and both are based on ScalaTest, but cornichon can't make much use of the boilerplate reduction provided by our IntegrationSpec.
Extending ScalaWebTest
One of the goals for ScalaWebTest is to make it as as easy as possible, to extend it. Therefore the foreseen extension points are a part of the documentation.
Create a custom matcher
One of the core extension points for gauge testing, are the matchers. ScalaWebTest uses two types of matchers, one for text and one for attributes. You may create your own TextMatcher or AttributeMatcher by extending those traits. You can then add the your own matcher, by prepending to the list of textMatchers or attributesMatchers in the Matchers object.
Here is a full example, of how to implement your own Matcher
Create a custom login
If the available login mechanisms don't work with your web application. No worries, simply create your own implementation of the Login interface and extend it in your base trait. Ideally you then contribute it back to the project via pull request.
The FormBasedLogin provides a good example on how to implement your custom login
Create your own module
If you implement multiple web applications with the same framework, you might want to create a framework specific module. This allows to share framework specific testing code among multiple projects. You can start using it within your company/project and share it later with the rest of the community by creating a pull request. If you provide your own module to ScalaWebTest, we ask you to help maintaining it.
Internal Structure
IntegrationSpec
The IntegrationSpec is the base trait, which all testing style specific traits extend. When writing a spec you should not extend IntegrationSpec, but one of the testing style specific traits, such as IntegrationFlatSpec
The base trait extends the following traits
- Webbrowser - Selenium DSL for ScalaTest
- Suite - encapsulates a conceptual suite of tests
- BeforeAndAfterEach - provides beforeEach and afterEach test hooks
- BeforeAndAfterAll - provides beforeAll and AfterAll tests hooks
- WebClientExposingHtmlUnit - wrapper for HtmlUnitDriver, which exposes the WebClient
- IntegrationSettings - a set of fields to configure IntegrationSpec
- Eventually - provides eventually function
Integration_Spec
There is a complete set of test style specific base traits. Choose a testing style and then extend the according style specific Integration_Spec trait to create your test.
This traits extend the following traits
- _Spec i.e. FlatSpec - provides the testing style specific DSL
- IntegrationSpec - integrates ScalaTest and Selenium with additional features from ScalaWebTest
- Matchers - provides DSL for assertions using the word should
- Inspectors - provides nestable inspector methods that enable assertions to be made about collections
_SpecBehavior
One way to share assertions between testing suites, is to use behavior. A behavior contains a set of assertions. You can then use X behaves like SomeBehavior within the suite. Behavior and Suite have to use the same testing style. Therefore ScalaWebTest builds its style specific base traits on the style specific behavior traits. The following traits, which are part of the Integration_Spec, are in fact inherited from the behavior trait
- _Spec i.e. FlatSpec
- Matchers
- Inspectors
Gauge
The Gauge provides the methods fit, fits, doesnt fit and not fit. All of them are used to verify if the current webpage matches the given gauge specification. To do so, the gauge, searches for elements, as defined by the specification, in the current webpage. Elements are found by element name and containing classes. All elements which fulfill the search criteria, are considered candidates. Candidates are then verified for correct attributes and textcontent, using Matchers, next they are verified by checking whether their children match. As soon as something doesn't match a Misfit is reported. If no candidate matches all criteria, the gauge doesn't fit. While verifying the candidates, a list of Misfits was acquired, the gauge will only report the most specific of all Misfits.
Misfit
A Misfit is a container for an error message, when something didn't fit a given Matcher. It contains an error message and a relevance. The deeper the current check in the gauge specification is, the higher its relevance. In the end only the Misfits with the highest relevance will be part of the error message.
Matchers
When working with gauges for testing, Matchers are used to test attributes and text content of elements. By default the following Matchers are available.
- Default Matcher: tests whether an attribute or text exactly matches a given String
- Contains Matcher: tests whether an attribute or text contains a given String
- Regex Matcher: tests whether an attribute or text matches the given Regex
All Matchers, which are available by default, can be used for attributes and text. When creating a new Matcher, one is not forced to implement for both. For each matcher type a specific trait exists. Extend AttributeMatcher or TextMatcher or both, when creating your own Matcher
When creating a custom Matcher the most important thing is to provide a detailed Some(Misfit) in case the Matcher doesn't match. In case of a match, the Matcher simply returns None.
Login
The Login trait is very simple. It only defines what the username and password field should be called. It is used to mark specific implementations as Login and to assert that username and password are consistent over all implementations. Depending on the authentication process for which a Login trait was implemented, it might make sense to overwrite the login function from IntegrationSpec.
WebDriver
ScalaWebTest uses a custom web driver, more precisely a wrapper for the HtmlUnitDriver. Thanks to this wrapper, we can expose the WebClient to enable more control over the WebClient. We also rely on the HtmlUnitDriver, because it has the option to compare the order of html elements within the document. This is not available with all WebDriver implementations, but crucial for the implementation of Gauge.
WebDriverConfigFixtures
The WebDriverConfigFixtures provide the option to execute a closure with a specific configuration. After the closure is executed, the WebDriver configuration will be reverted to what it was before the call of the fixture.


Matthew R Nelson, Hannah Tipney, Jeffery L Painter, Judong Shen, Paola Nicoletti, Yufeng Shen, Aris Floratos, Pak Chung Sham, Mulin Jun Li, Junwen Wang, Lon R Cardon, John C Whittaker, Philippe Sanseau
Nature Genetics 47, 856–860 (2015) doi:10.1038/ng.3314
A journal club presentation
created by André Rendeiro / @afrendeiro
2015/10/08
The human genome, the advent of biotechnology and GWAS:
Matt Vaughn (?) - https://pods.iplantcollaborative.org
Is genetic information helping drug discovery and development?
How well does the current archive of genetic evidence predicts drug mechanisms?
Mendelian disorders
Fig2 - Nelson et al, Nat Gen 2015
top, n=22,012; bottom, n=2,555
"One potential explanation for the correlation between successful drug targets and evidence of genetic effects is that genes that result in notable phenotypic changes when altered are also the most responsive to drug-induced alterations"
Nelson et al, Nat Gen 2015
Fig2 - Nelson et al, Nat Gen 2015
top, n=22,012 bottom, n=2,555
Good.
(e.g. It doesn't mean that a certain drug is being used in a disease case in which its target is relevant)
239 of 395 (61%) approved drug indications had at least 1 genetic association (OMIM or GWASdb) with a similar trait (relative similarity ≥ 0.7) and that 158 (40%) approved indications had at least 5 associations reported
Nelson et al, Nat Gen 2015
FigS7 - Nelson et al, Nat Gen 2015
drug indications with less than 5 associations are enriched in:
Nelson et al, Nat Gen 2015
Focused on drug indications with >5 associations
(n=158, 820 drugs)
Fig3a - Nelson et al, Nat Gen 2015
GWASdb and OMIM combined
Fig3b - Nelson et al, Nat Gen 2015
Cumulative overlap with all GWASdb or OMIM = 0.27%, 1.2%
Under/overestimation?
There might be drugs targeting the right gene, but we don't know their target still.
Contribution of genetic support may be underestimated simply due to the time drugs take to develop.
Data missing from failed drugs - why did they fail?
A call for (increased) drug repurposing?
Table1 - Nelson et al, Nat Gen 2015
Slides available here: http://andre-rendeiro.me/presentations/presentations/20151008-journal_club/
Figs3 - Nelson et al, Nat Gen 2015
Figs4a - Nelson et al, Nat Gen 2015
Figs4b - Nelson et al, Nat Gen 2015


CMP0058¶
Ninja requires custom command byproducts to be explicit.
When an intermediate file generated during the build is consumed by an expensive operation or a large tree of dependents, one may reduce the work needed for an incremental rebuild by updating the file timestamp only when its content changes. With this approach the generation rule must have a separate output file that is always updated with a new timestamp that is newer than any dependencies of the rule so that the build tool re-runs the rule only when the input changes. We refer to the separate output file as a rule’s witness and the generated file as a rule’s byproduct.
Byproducts may not be listed as outputs because their timestamps are
allowed to be older than the inputs. No build tools (like make
)
that existed when CMake was designed have a way to express byproducts.
Therefore CMake versions prior to 3.2 had no way to specify them.
Projects typically left byproducts undeclared in the rules that
generate them. For example:
add_custom_command(
OUTPUT witness.txt
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${CMAKE_CURRENT_SOURCE_DIR}/input.txt
byproduct.txt # timestamp may not change
COMMAND ${CMAKE_COMMAND} -E touch witness.txt
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/input.txt
)
add_custom_target(Provider DEPENDS witness.txt)
add_custom_command(
OUTPUT generated.c
COMMAND expensive-task -i byproduct.txt -o generated.c
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/byproduct.txt
)
add_library(Consumer generated.c)
add_dependencies(Consumer Provider)
This works well for all generators except Ninja
.
The Ninja build tool sees a rule listing byproduct.txt
as a dependency and no rule listing it as an output. Ninja then
complains that there is no way to satisfy the dependency and
stops building even though there are order-only dependencies
that ensure byproduct.txt
will exist before its consumers
need it. See discussion of this problem in Ninja Issue 760
for further details on why Ninja works this way.
Instead of leaving byproducts undeclared in the rules that generate
them, Ninja expects byproducts to be listed along with other outputs.
Such rules may be marked with a restat
option that tells Ninja
to check the timestamps of outputs after the rules run. This
prevents byproducts whose timestamps do not change from causing
their dependents to re-build unnecessarily.
Since the above approach does not tell CMake what custom command
generates byproduct.txt
, the Ninja generator does not have
enough information to add the byproduct as an output of any rule.
CMake 2.8.12 and above work around this problem and allow projects
using the above approach to build by generating phony
build
rules to tell Ninja to tolerate such missing files. However, this
workaround prevents Ninja from diagnosing a dependency that is
really missing. It also works poorly in in-source builds where
every custom command dependency, even on source files, needs to
be treated this way because CMake does not have enough information
to know which files are generated as byproducts of custom commands.
CMake 3.2 introduced the BYPRODUCTS
option to the
add_custom_command()
and add_custom_target()
commands. This option allows byproducts to be specified explicitly:
add_custom_command(
OUTPUT witness.txt
BYPRODUCTS byproduct.txt # explicit byproduct specification
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${CMAKE_CURRENT_SOURCE_DIR}/input.txt
byproduct.txt # timestamp may not change
...
The BYPRODUCTS
option is used by the Ninja
generator
to list byproducts among the outputs of the custom commands that
generate them, and is ignored by other generators.
CMake 3.3 and above prefer to require projects to specify custom
command byproducts explicitly so that it can avoid using the
phony
rule workaround altogether. Policy CMP0058
was
introduced to provide compatibility with existing projects that
still need the workaround.
This policy has no effect on generators other than Ninja
.
The OLD
behavior for this policy is to generate Ninja phony
rules for unknown dependencies in the build tree. The NEW
behavior for this policy is to not generate these and instead
require projects to specify custom command BYPRODUCTS
explicitly.
This policy was introduced in CMake version 3.3.
CMake version 3.15.4 warns when it sees unknown dependencies in
out-of-source build trees if the policy is not set and then uses
OLD
behavior. Use the cmake_policy()
command to set
the policy to OLD
or NEW
explicitly. The policy setting
must be in scope at the end of the top-level CMakeLists.txt
file of the project and has global effect.
Note
The OLD
behavior of a policy is
deprecated by definition
and may be removed in a future version of CMake.


This is a live demo of my Angular 2.0 demo / sample components & etc.
I hope you will find these demos useful and educational. Stay tuned for more progress soon. Don't hesitate to tweet me at @narainsagar with suggestions for more components.
The source code for the full set of components is available on GitHub
Visit my personal website for more about me.