I'm writing my thoughts here about the sessions I attended at CodeMash 2018. Overall, I had a great time and learned some new and important things about the latest technologies. This year I tried to attend more data science / machine learning talks, though several of them were cancelled at the last minute. (Perhaps the bad weather was to blame.)
I wrote these notes during or immediately after each talk, and I submitted some of the text to the session survey part of the Attendee Hub app on my phone. I think it's a good idea to send the feedback to the speakers, but I don't think it is used by reviewers for next year, so I'm not sure it matters very much. Regardless, I write to consolidate my own learning, if for no other reason.
Fast Neural Networks - a no brainer
Speakers: Riccardo Terrell
The speaker used the agent model because ANNs are embarassingly parallel. Map agents to nodes - 1:1, send updates between them (values forward, backpropagation corrections backward). Make agents reactive to messages (updates from dependent nodes). The speaker has an e-book on MEAP about it - Parallel NN as map reduce problem - simpler way to implement NN.
The speaker tried to cover too much content. Also, I didn't hear any good outcomes or reasons for why he reimplemented backpropagation (a very old algorithm). What was learned by redoing it with actors?
Getting Started with Deep Learning
Speakers: Seth Juarez
confusion matrix- be careful of TN vs FP box location. Works for MS; uses VS to edit Python; tensorflow implementation in python for MNIST. Check channel 9 msdn for newer presentation
cool twilio use - text the presenter to ask questions during presentation
This speaker was great because he told lots of jokes to keep the talk interesting despite the underlying math. I really liked the twilio based questions via text messages!
Imposter Syndrome: Overcoming Self-Doubt in Success
Speakers: Heather Downing
The speaker did a very good job motivating the subject, but I would've liked to hear more about practical things that can be done to deal with imposter syndrome. I agree with "co-bragging", but I think other good options include public speaking to build confidence or doing volunteer work to appreciate how it's a 1st world problem.
cycle of failure: overly confident - procrastinate and rely on luck. under confident - put in excessive time and effort. Discount success and undermine ego.
How can you tell if someone will eventually succeed after a failure? You are not the failure; own your mistakes and learn from them. Don't be scared of failure; be scared of not finding the truth.
"Co-bragging" - praise your co-workers' acheivements, and they praise you. Create a positive culture that avoids hurtful comparisons.
Fake it until you become it, then pay it forward.
Machine Learning at Scale, How to Keep Learning as Your Data Keeps Increasing
Speakers: Matt Winkler
This was exactly why I come to codemash - I want to hear about the latest tech so that I can keep up with the industry standards. I thought the speaker did an excellent job of reviewing the latest ML implementations and describing how to deploy them at scale. I loved all the detailed examples!
data prep: spark, pandas, dplyR
scale up: spark cluster, HDInsight
aggregation: AML workbench
Azure Machine Learning workbench can automatically learn how to create columns by example (formatting and aggregating a date time column). (automatically generates python code!)
Nvidia's latest GPU was announced at NIPS conference (academic AI researchers).
VM recommendations: use version control so that you can migrate easily. make scripts for any required setup. track your outcomes from experimenting with different models. benchmark the price effectiveness of different configurations.
home camera - Amazon deep lens - recognizes faces
MSSQL 2017 has integrated ML algorithms INSIDE it! see tutorials?!
Walking the High Wire: Patching Erlang Live
Speakers: John Daily
The speaker did a great job of motivating the use of Erlang for live patches, which is exactly what I wanted to hear about. But I would've liked to have seen a non-trivial example, or some more information about how it's used in the real world.
Power isn't pretty - erlang is designed for fault tolerance, not usability. Its network IO is fundamentally async but reliable, unlike RPC or CORBRA.
App architecture without RDBS vs NoSQL drama
Speakers: Jeff Putz
The speaker has a lot of good experience to share. He's obviously worked in diverse applications, and I appreciate hearing about tradeoffs between technologies instead of just advertising the latest tech. I think it's really important to repeat the message about not being obsessed with the latest tech just because it's new. I wish the presentation didn't get sidetracked by arguments about issues of personal preference in DB design.
NoSQL advantages - less CPU, high write thruput, maybe higher dev productivity
Fight the urge to normalize everything. Don't make complicated schema for queries that will never be used. Focus on the problem domain, not the persistence and code style. Running multiple queries can be OK (as compared to a join).
SQL can do key value pairs OK. The death of SQL in 2010 was greatly exaggerated.
Aggregate queries with joins cause lots of database work. Avoid redoing them in real time. Use the client layer to maintain a cached state of frequently queried aggregates; don't be afraid to store redundant data because it's so cheap now. SQL was originally designed to minimize storage at the expense of CPU (i.e. normalization).
Scala for the Java Developer: It's Easier Than You Think
Speakers: Justin Pihony
I liked this talk because I want to learn at least one new programming paradigm every time I come to CodeMash, and the speaker did a great job of being an ambassador for Scala. I appreciated hearing about the limitations and realistic expectations for the language. Things to improve: show applications and companies using it.
Scala runs on JVM; compatible with java, but it's functional and immutable first. Less verbose; fixes many annoyances with Java's legacy conventions. Includes REPL.
Ride the rails: Handling errors the functional way
Speakers: Sam Hanes
The speaker did a very good talk on functional programming basics in F#. I enjoy sessions like these for reminding me that there are alternatives to traditional imperative paradigms. Suggestion: use font colors with better contrast (dark red text on black backgrounds is difficult to read). Overall very good talk.
Functional programming - avoid mutable state.
Use bind to connect a switch function to two track handling. Exceptions can be converted into failures (if they are predictable enough to catch).
A Game of Theories: why languages do what they do
Speakers: Rae Krantz
The speaker did a fun talk about comparing programming languages and GoT. This type of talk is nice to have as a break in between "serious business" and learning new tech. Suggestions: use the full time slot. Show the same algorithm implemented in different languages. Talk more about the supporting libraries (not just the language itself).
Ruby, python, go, erlang, clojure, JavaScript - not sure why these 6 as opposed to any other survey of languages. Popularity?
(I went to this talk because the session "The Polyglot Data Scientist - Adventures with R, Python, and SQL" by Sarah Dutkiewicz was cancelled. It sounded like the snow storm scared a lot of people into leaving CodeMash early, and some other speakers cancelled their talks for being sick.)
Image Recognition with Convolutional Neural Networks using Keras and CoreML
Speakers: Tim LeMaster
This talk was too introductory, barely covering any applications and only talking about history. I walked out after 10 minutes to go eat lunch and do professional networking.
How to Count Your Chickens After They've Hatched
Speakers: Gary Short
The speaker is very entertaining and amusing, and it's great to see a fun talk about a relevant topic (ML). Images are easy to relate to, and it'd be cool to see more talks with them. I don't think C# was the right choice for this algorithm - python sklearn has built-in implementations for this problem.
Counting chickens in brightfield images - threshold grayscale image, then try k-NN. k-NN doesn't work because k is unknown? The algorithm is pretty ad hoc, but more power to him if it works. 85% accurate but told to deploy it by customer farmer anyway.
Speakers: Stout Systems
This talk was pretty good, and it make me feel better about my chances of getting a different job someday. On a daily basis, I really have no idea how good the market is for programmers, but I still remember the 2004 IT recession.
top 5 for recruiting/retaining talent -
5. salary (and PTO, retirement, health care, bonus, stock, options - cash equivalents)
4. workplace culture (office space features, remote work, flex schedule, work/life balance)
3. career growth (holding same job for years is boring and a career killer; upskilling and training is good. )
2. [lack of] process (shifting requirements, changing priorities, inconsistent deadlines, no deployments) - also leadership issues (excessive meetings, no clear decisions).
1. technology stack (fear of extinction; huge, messy codebase) - transform or evolve, within appropriate constraints (relevant tech, reasonable schedules). automate mundane tasks (build, deploy). allow some freedom of tools (svn vs git, OS, editors).
Speakers: Tim Hoolihan
The speaker gave a pretty good overview of performance issues in R. I'm not really an R user, so I attended this talk just to see if it was much better or different than python based ML. My conclusion: no because R uses the python ML libraries!
Speakers: Michael Perry
I liked how this talk summarized an academic topic in a relatable way. Despite being in the last time slot, I learned some fascinating ideas about Historical Modelling. I like having some more challenging topics to attend.
Audit log problems - not reliable or type safe. Large. Simple
Event sourcing. Derive object state by reading whole table of changes. Order is significant.
Historical modelling. Partially ordered. Not simple, but better??
* Every field is immutable
* Surrogate key is only used internally (not in API)
* everything else is the identity in API
Use timestamps as "uniquifiers"
* A fact cannot be deleted
* query uses WHERE NOT EXISTS subclause
speaker name precedessor record - a Name is identified by its nameId and all predecessor records. This is git-style version control inside a db!
Mutable properties can't be part of entity. detect and resolve conflicts via knowing predecessors.
Events move entities forward thru workflow, pointing backward to previous event.
Advantages: no locks. Offline data is OK. Cluster synch is easier (eventual consistency via Active-Active clusters). Microservice as historical db.


HTML 2.0 was published as IETF RFC 1866. Includes basic capabilities for tables, forms, and images.
W3C publishes the HTML 3.2 Recommendation. Extended doctype and script standards. Influenced mainly by IBM, Microsoft, and Netscape.
W3C publishes HTML 4.0. Significant changes with several new elements such as <button>, <label>, and <span>. Sought to phase out Netscape's visual markup features in favor of CSS.
The following year, the W3C DOM Working Group also publishes a complete model for HTML, coined "DOM Level 1".
W3C publishes HTML5 as working draft. Largely improves language support for multimedia and introduces lots of new markup with Javascript APIs. <canvas>, <video>, and <audio> elements added. Also, new semantic elements for page structure, like <section>, <article>, <header>, <footer>, and <nav> added.
First working draft for Shadow DOM introduced. Embraced by Google & the Chromium team.
First working draft for HTML Templates. Sponsored by Google/Chromium team and Microsoft, and other community contributors.
W3C publishes first working draft (v0) of Custom Element's spec. Another spec and working draft is introduced for HTML Imports.
Microsoft introduces the X-Tag project, a new library for building custom elements.
Polymer project released to public. Shadow DOM and Custom Elements have a framework at Google.
Polymer library is re-written from ground up. It's 3 to 4X faster and has 36% less code. Element product lines paper-elements, iron-elements, google-web-components, platinum-elements, and gold-elements introduced.
W3C releases updated V1 specification of Custom Elements spec. Shortly later, the webcomponents.js polyfill is updated for v1.
Progressive Web Apps demonstrated at Google IO. The P.R.P.L pattern with HTML Imports, HTTP/2, & Service Worker discussed.


Clock
Direct Subclass:
A clock providing access to the current instant, date and time using a time-zone.
Instances of this class are used to find the current instant, which can be interpreted using the stored time-zone to find the current date and time. As such, a clock can be used instead of System#currentTimeMillis and TimeZone#getDefault.
Use of a Clock is optional. All key date-time classes also have a
now()
factory method that uses the system clock in the default time zone.
The primary purpose of this abstraction is to allow alternate clocks to be
plugged in as and when required. Applications use an object to obtain the
current time rather than a static method. This can simplify testing.
Best practice for applications is to pass a Clock into any method that requires the current instant.
This approach allows an alternate clock, such as fixed or offset to be used during testing.
The system factory methods provide clocks based on the best available system clock This may use System#currentTimeMillis, or a higher resolution clock if one is available.
The javascript Clock implementation differs from the openjdk.
Javascript only provides the UTC millis of epoch and the ZoneOffset in minutes of the system default time. Javascript do not provide the system default ZoneId.
the system default ZoneId is only guessable by the ZoneOffset, like moment-timezone does by returning one ZoneId with the same ZoneOffset.
Therefore we are doing a shortcut here, by defining a SystemUTCClock and a SystemDefaultClock, the Clock itself is returning the ZoneOffset and not the ZoneRules as in the jdk. We should change it, when introducing the iana timezone database and implementing the timezone domains.
Static Method Summary
| Static Public Methods | ||
| public static |
Obtains a clock that always returns the same instant. |
|
| public static |
offset(baseClock: *, duration: *): * Obtains a clock that returns instants from the specified clock with the specified duration added This clock wraps another clock, returning instants that are later by the specified duration. |
|
| public static |
|
|
| public static |
Obtains a clock that returns the current instant using the best available system clock, converting to date and time using the default time-zone. |
|
| public static |
Obtains a clock that returns the current instant using the system clock, converting to date and time using the Date.getTime() UTC millis. |
Method Summary
| Public Methods | ||
| public |
Gets the current instant of the clock. |
|
| public |
millis(): * Gets the current millisecond instant of the clock. |
|
| public |
withZone(): * Returns a copy of this clock with a different time-zone. |
|
| public |
zone() |
Static Public Methods
public static fixed(fixedInstant: Instant, zoneId: ZoneId): Clock source
Obtains a clock that always returns the same instant.
This clock simply returns the specified instant. As such, it is not a clock in the conventional sense. The main use case for this is in testing, where the fixed clock ensures tests are not dependent on the current clock.
public static offset(baseClock: *, duration: *): * source
Obtains a clock that returns instants from the specified clock with the specified duration added
This clock wraps another clock, returning instants that are later by the specified duration. If the duration is negative, the instants will be earlier than the current date and time. The main use case for this is to simulate running in the future or in the past.
A duration of zero would have no offsetting effect. Passing zero will return the underlying clock.
The returned implementation is immutable, thread-safe and {@code Serializable} providing that the base clock is.
Params:
| Name | Type | Attribute | Description |
| baseClock | * | the base clock to add the duration to, not null |
|
| duration | * | the duration to add, not null |
Return:
| * | a clock based on the base clock with the duration added, not null |
public static systemDefaultZone(): Clock source
Obtains a clock that returns the current instant using the best available system clock, converting to date and time using the default time-zone.
This clock is based on the available system clock using the Date.getTime() UTC millis
Using this method hard codes a dependency to the default time-zone into your application.
The UTC clock (see systemUTC) should be used when you need the current instant without the date or time.
public static systemUTC(): Clock source
Obtains a clock that returns the current instant using the system clock, converting to date and time using the Date.getTime() UTC millis.
This clock, rather than systemDefaultZone, should be used when you need the current instant without the date or time.
Public Methods
public instant(): Instant source
Gets the current instant of the clock.
This returns an instant representing the current instant as defined by the clock.
public millis(): * source
Gets the current millisecond instant of the clock.
This returns the millisecond-based instant, measured from 1970-01-01T00:00Z (UTC). This is equivalent to the definition of Date#getTime.
Most applications should avoid this method and use Instant to represent an instant on the time-line rather than a raw millisecond value. This method is provided to allow the use of the clock in high performance use cases where the creation of an object would be unacceptable.
The default implementation currently calls instant.
Return:
| * | the current millisecond instant from this clock, measured from the Java epoch of 1970-01-01T00:00Z (UTC), not null |
public withZone(): * source
Returns a copy of this clock with a different time-zone.
A clock will typically obtain the current instant and then convert that to a date or time using a time-zone. This method returns a clock with similar properties but using a different time-zone.
Return:
| * | a clock based on this clock with the specified time-zone, not null |


Federal judge tosses suit challenging Wynn's casino license
by EndPlayBOSTON (AP) - A federal judge in Massachusetts has dismissed a $3 billion lawsuit accusing Wynn Resorts of cheating to win its casino license for Encore Boston Harbor.
U.S. District Court Chief Judge Patti Saris says Sterling Suffolk Racecourse's allegations do not constitute racketeering violations under the federal RICO act.
Sterling Suffolk says it's "exploring all its options." Wynn Resorts declined to comment.
Sterling Suffolk proposed building a Mohegan Sun casino on the Suffolk Downs horse track in Boston.
It argued Wynn Resorts fraudulently obtained its license through "unlawful methods," including kickbacks, political cronyism, and concealing allegations of sexual misconduct against company founder Steve Wynn.
Massachusetts fined the company $35.5 million for failing to disclose the allegations but allowed it to keep its license.
Steve Wynn resigned as CEO but denies the allegations against him.


chalkworks
turning blueprints into sideprojects
We're a group of students who got together on
Hack Club
's Slack team to build kickass sideprojects,the rest is 🐓💨
we're kids, alright 🙈
meet the sideprojects


features/characters_favorites
/
com.whatstoday.dynamicfeatures.charactersfavorites.ui.favorite
/
CharactersFavoriteViewState
/
Listed
Listed
object
Listed
:
CharactersFavoriteViewState
Favorite characters displayed.


base
/
net.corda.v5.base.stream
/
DurableCursorBuilder
/
build
build
abstract
fun
build
(
)
:
DurableCursor
<
T
>


Julia Set Fractal Generator
Your browser does not support the canvas element.
Change these settings to change the fractal output (button stays blue while fractal is generating):
C1:
C2:
N:
Generate Fractal
Download as image
Outer Color
Inner Color
Zoom Value:


On the first page of interactive atlas you can see the list of templates. Each item of the list contains name and description
Notice the arrow button. Usually description text is collapsed into the main screen. If you want to open full description, open it using the arrow button. To choose one of the templates, just click the relevant one from the list.
After you choose the template, brain images will appear on the screen
The simple page of the brain atlas viewer consists of 9 basic parts. The parts are marked with white squares. Now let's describe the parts
1,2,3 - Orthogonal 2D cross sections of the brain volume.
4 - The 3D overview of the brain volume.
5 - Logo and icons to open floating widgets such as search, layers and plugins. click for details
6 - Inside the square, you can see the coordinates of intersection of 2D views and position of cursor. From here, it is possible to reset position, rotation, and zoom level for both 2D cross sections and 3D overview of brain volume. click for details
7 - Scale bar indicating current level of zoom.
8 - In this part it is possible to select templates and parcellations. Also, it provides the ability to search, select or deselect regions of parcellation. This panel contains help and login buttons as well. click for details
9 - By clicking on the text, you can hide and show frontal octant in the 3D overview of the brain volume.
Let's deep dive into the regions 5, 6 and 8. Here you can access more functionality.
5
As mentioned above, this part consists of a logo and icons. Icons are used to open and collapse floating widgets such as layer browser, plugins, and search. Let's look at the image of these icons
There are 3 types of icons. 1. The icon for layer browser. 2. Icons for plugins. 3. Icons for search functions. And here is the image of the floating widgets themselves
| Layer Browser | Plugin | Search |
6
In the first example, the part under the number 6 is not visible well. So let's have a closer look at it.
As you can see, we have 4 constant and 1 transient line
1 - Reset: by clicking labels on this line you can reset position, rotation and zoom.
2 - Space: here you can change display units from physical space to voxel-based coordinates.
3 - Navigation: from here you can see and change the coordinates of the intersection point of orthogonal 2D cross sections of the brain volume.
4 - Mouse: coordinates of the position under mouse cursor either in physical space or in voxel units.
5 - The last line is only visible when mouse cursor hovers over some region of parcellation. Accordingly, the line content is the region name.
8
Let's now have a closer look at part 8
You can select different templates and parcellation from drop-down menus. Also, you can find and select the specific regions of parcellation.


A random number from 1 to 100 has been selected. The objective is to guess what number was chosen.
Enter a guess into the field to the right, then click the "Submit Guess" button:


public class Util
extends java.lang.Object
| Constructor and Description |
|---|
Util() |
| Modifier and Type | Method and Description |
|---|---|
static int[] |
convertToCoords(int i)
The convertToCoords method converts an integer i to coordinates.
|
static int |
convertToIndex(int x,
int y)
The convertToIndex method converts two integers in one index.
|
static java.lang.String |
getCorrectPlayerBoardMode(Player player)
The getCorrectPlayerBoardMode method retrieves the value bar of a player, then it returns the game mode.
|
static int |
getMapId(Board board) |
static javafx.scene.image.Image |
getPlayerToken(PlayerColor color)
The getPlayerToken method returns the correct color token to add in damage and/or marker bar.
|
static void |
ifFirstSelection(javafx.scene.control.Button confirmButton,
javafx.scene.layout.GridPane progressBar)
The ifFirstSelection method checks whether the selections is the first in th sequence, if true it enables
the confirm button.
|
static boolean |
isLastSelection(javafx.scene.layout.GridPane progressBar)
The isLastSelection method checks whether the progress bar has only green circles.
|
static void |
setLabelColor(javafx.scene.control.Label label,
PlayerColor playerColor)
The setLabelColor method sets a label's color according to the player color input.
|
static void |
updateCircle(javafx.scene.layout.GridPane progressBar)
The updateCircle method colors the first white circle to green.
|
public static int[] convertToCoords(int i)
i
- the integer to convert.public static int convertToIndex(int x, int y)
x
- the x coordinate.y
- the y coordinate.public static int getMapId(Board board)
public static void ifFirstSelection(javafx.scene.control.Button confirmButton, javafx.scene.layout.GridPane progressBar)
confirmButton
- is the confirm button.progressBar
- is the progress bar.public static void updateCircle(javafx.scene.layout.GridPane progressBar)
progressBar
- is the progress bar in the selection phase.public static boolean isLastSelection(javafx.scene.layout.GridPane progressBar)
progressBar
- is the grid pane containing the progress bar.public static java.lang.String getCorrectPlayerBoardMode(Player player)
player
- the player for which the player player board is going to be shown.public static void setLabelColor(javafx.scene.control.Label label, PlayerColor playerColor)
label
- the label that is to be set the player color.playerColor
- the color used to set the label.public static javafx.scene.image.Image getPlayerToken(PlayerColor color)
color
- is the player color.


Premier League confirm why Son Heung-min was sent off following Andre Gomes injury
Tottenham star Son Heung-min was sent off after a tackle on Everton midfielder Andre Gomes having originally seen yellow
by Alex SmithThe Premier League have confirmed that Son Heung-min was sent off for endangering Andre Gomes' safety during Tottenham's draw with Everton .
Toffees midfielder Gomes suffered a horrific leg injury after Son had tackled him and he collided with Serge Aurier.
Gomes was taken off on a stretcher by medical staff and immediately taken to hospital in an ambulance after a number of minutes treatment.
Referee Martin Atkinson originally handed the South Korean a yellow card for a trip but quickly upgraded his decision to a red card after seeing the extent of the damage to Gomes.
There was also an emotional response from Son, who was left in tears on the pitch, and players from both teams which might have assisted Atkinson's decision making.
It was not sent to VAR to have a look.
The Premier League explained what happened in a statement: "The red card for Son was for endangering the safety of a player which happened as a consequence of his initial challenge."
Spurs midfielder Dele Alli, who had given his side the lead, gave his reaction to the incident to Sky Sports after the match.
"Didn’t want to look too much at what happened. I want to send best wishes.
"Son is devastated and in tears. It’s not his fault. Son is one of nicest people you’ve ever met. He can’t even lift his head up, he’s crying so much.
"The injury does play on your mind but you have to stay professional.
"We switched off for a second and they scored."
Cenk Tosun earned Everton a late point to keep them 17th, while Spurs remain in the bottom half of the table in 11th.


The new part of the JavaScript is called an if...else statement, or a branch. If the condition in the parentheses is true, then the first statement is run. If not, the statement following the else keyword is run. The curly braces after the if statement don't end with a semicolon. This is because an if statement isn't a statement itself; rather, it's a collection of statements. Or something like that. Just know that it's a rule: no semicolons after the curly braces for if statements.
**WITHIN THE SCRIPTS.JS FILE** $(document).ready(function() { var age = parseInt(prompt("How old are you?")); if (age > 21) { $('#drinks').show(); } else if (age === 21) { alert("Now don't go crazy!"); $('#drinks').show(); } else { $('#under-21').show(); } }); **DESCRIPTION** Here's how the for branch works: The parseInt is converting a logged input of a string into an interger from the user and setting the variable to age. (ParseFloat would be for intergers that aren't whole numbers. 1. Setting the variable (age) to prompt a question ('How old are you?') 2. If the age is greater than 21 3. The ID drinks will show 4. If the age is equal to 21 then it will not only show the ID drinks, but it will give an alert. 5. Else is saying "if the interger is anything else" 6. then the id under-21 will show.


ADC
AND
ASL
BCC
BCS
BEQ
BIT
BMI
BNE
BPL
BRK
BVC
BVS
CLC
CLD
CLI
CLV
CMP
CPX
CPY
DEC
DEX
DEY
EOR
INC
INX
INY
JMP
JSR
LDA
LDX
LDY
LSR
NOP
ORA
PHA
PHP
PLA
PLP
ROL
ROR
RTI
RTS
SBC
SEC
SED
SEI
STA
STX
STY
TAX
TAY
TSX
TXA
TXS
TYA
Add Memory to Accumulator with Carry
"AND" Memory with Accumulator
Shift Left One Bit (Memory or Accumulator)
Branch on Carry Clear
Branch on Carry Set
Branch on Result Zero
Test Bits in Memory with Accumulator
Branch on Result Minus
Branch on Result not Zero
Branch on Result Plus
Force Break
Branch on Overflow Clear
Branch on Overflow Set
Clear Carry Flag
Clear Decimal Mode
Clear interrupt Disable Bit
Clear Overflow Flag
Compare Memory and Accumulator
Compare Memory and Index X
Compare Memory and Index Y
Decrement Memory by One
Decrement Index X by One
Decrement Index Y by One
"Exclusive-Or" Memory with Accumulator
Increment Memory by One
Increment Index X by One
Increment Index Y by One
Jump to New Location
Jump to New Location Saving Return Address
Load Accumulator with Memory
Load Index X with Memory
Load Index Y with Memory
Shift Right One Bit (Memory or Accumulator)
No Operation
"OR" Memory with Accumulator
Push Accumulator on Stack
Push Processor Status on Stack
Pull Accumulator from Stack
Pull Processor Status from Stack
Rotate One Bit Left (Memory or Accumulator)
Rotate One Bit Right (Memory or Accumulator)
Return from Interrupt
Return from Subroutine
Subtract Memory from Accumulator with Borrow
Set Carry Flag
Set Decimal Mode
Set Interrupt Disable Status
Store Accumulator in Memory
Store Index X in Memory
Store Index Y in Memory
Transfer Accumulator to Index X
Transfer Accumulator to Index Y
Transfer Stack Pointer to Index X
Transfer Index X to Accumulator
Transfer Index X to Stack Pointer
Transfer Index Y to Accumulator


Design Team 0 Slides
Eric Bridgeford, Albert Lee, Eric Walker
F2G pipeline leg overview
Eric Bridgeford
Design Team 0 Slides
Eric Bridgeford, Albert Lee, Eric Walker
F2G pipeline leg overview
Eric Bridgeford
Purpose for Developers
- Adding modules: Verify that things don't go out of whack
- Changing modules: Ability to show the change's impact in a quantifiable/visualizable way
- May be easier to page thru QC manuals than search through thousands of figures manually
Purpose for Users
- They're trusting that you are doing things correctly; at least some insight into what's being done is helpful
- Users need to be able to easily determine how good their data is, or "benchmark" measures
- Graphs, Data, etc can be downloaded from here, so users can take what they want/need
What goes into a quality control page
- Figures that are natural along the way: figures of the motions corrected, quality of registration, etc
- Summary statistics and figures: make sense of the processed outputs
Raw Data
Processed Data
Graphs
Signal: voxelwise mean
Signal: voxelwise standard deviation
Signal: voxelwise SNR
Signal: statistics page
Motion: Translational Parameters
Motion: Translational Displacement
Motion: Absolute Trans Statistics
Motion: Relative Trans Statistics
Motion: Rotational Parameters
Motion: Absolute Rot Statistics
Motion: Relative Rot Statistics
What to do next
- Start running data: Benchmarks are KKI, SWU, and NKI
- Consider making QC pages HTML in near future (within next month?)
- Add modules in order of importance: Spatial Smoothing, Skullstripping possible firsts
Javascript based visualization
Albert Lee
Introduction to ClarityExplorer
NOTE: for all csvs please use the file located here
What should ClarityExplorer look like?
- WebGL based Javascript application
- Scalable up to a million points
- Fast, professional, open source
- WebGL based Javascript application
- Scalable up to million points but very slow
Problems
- Composed of mostly other people's code
- Code is derived from Philip Pedrucko's code which was largely derived from WebGL's example
- Very difficult to develop
- I don't completely understand what is going on
Realistic Goals
- Following goals should be finished by the end of July
- Should be 99% my own original code
- Should be able to be scalable up to a million points
- Fast, professional, open source
Reach Goals
- Should ideally be integrated in such a way that you are able to upload a nifti format file
- Should be able to choose from a database of different preuploaded brains
- Should be extensively documented with each function properly explained
Progress this Week
- Mostly debugging (further elaborated in the next slide)
- Started manual documentation of code so I understand what each function does
- Basic modifications tested (these can be seen in the JavascriptJovo folder)
Error log
- ThreeJS interaction with csv files is much more difficult than I originally thought
- Papaparse compatatibility has been difficult for me to set up
- Many Examples of Failures
- Changing minute details like the color in the example scatterplot renders the entire program broken
- Frustratingly the documentation for ThreeJS is extremely elementary and the "tutorials" are just examples with no explanation given to structure
- Only a few scatterplot examples are easily found online, and several of them are based off the original WebGL tutorial
When design goes astray
- D3.js is a powerful tool that uses modern design to supplement versatility
- This makes Bostock a sad man
- This is a mediocre example less egregious coloring
- Unfortunately still not a good representation of Clarity data (intensity is not represented)
Possible Solutions
- 1) Represent intensity scale with different colors ranging from low hex values to high hex values that are callibrated to the intensity range
- 2) Size of points callibrated to intensity scale - depends on the data scale
- 3) Intensity is represented by how many faces each 3 dimensional point has - terrible idea considering it will be very difficult to see
- 4) Intensity represented by opacity
Next Week
- Even if it's far worse, create my own original version of the csv based visualizer
- Email the creator of the Cosmic Visualizer for which function she used for intensity representation
- Figure out the whole color ordeal - only being able to use gray or colored monstrosity is not ideal
fMRI Data Analysis
Eric Walker
Transformation models
- Linear operators
- Translation, rotation, scaling, shearing (12 parameters)
- Rigid body transformation (6 parameters)
- Nonlinear transformations
- Basis functions – polynomial function of original XYZ (many more parameters increasing with the order)
Cost functions
- Within-modality and between-modality
- Least squares (averaged squared difference between voxel intensities)
- Normalized correlation (measures linear relationship – default for FSL)
Cost functions
- Mutual information
- Joint histogram plots frequency of combinations of intensities (diagonal if equal)
- MI is the difference between the total entropy of the individual images and the joint entropy
Cost functions
- Optimization attempts to minimize cost function
- Gradient descent – start at particular values then modify
- Susceptible to local minima (evident when large # of parameters)
- Regularization – penalty for more complex warps
- Multiscale optimization – estimate parameters at low resolution then move higher
Interpolation
- Nearest neighbor (rarely used)
- Tri-linear (weighted average)
- Higher order (sinc, basis functions) - different windows
Quality control techniques
- Spikes, ghosting, etc.
- Remove artifactual component to create “denoised” dataset
- Explicit criteria for rejection to prevent bias
Distortion correction
- Distortions occur where air and tissue meet
- Use field map that characterizes B0 field to correct dropout
Slice timing correction
- Choose reference slice and interpolate rest of data (know timing of acquisition)
- Move away from this type of correction in practice
- Artifacts in one image can be propagated throughout the time series
- Event-related analysis relatively robust to slice timing problems
Motion correction
- Bulk motion vs spin history effect (disruption in signal itself – cannot be correct with standard techniques)
- Each image aligned to common reference scan (rigid body transformation)
Motion correction
- Prospective motion correction – modify location during acquisition
- Should occur before slice timing correction (if latter is used) – effect of motion on voxel intensity
- Monitor physiological motion (heart rate, breathing) or use cardiac gating
Spatial smoothing
- Apply low-pass filter to blur image
- Increases signal-to-noise ratio
- Benefits of gain in larger features outweighs loss of smaller features
- Some analysis methods require specific degree of spatial smoothness
- In general, FWHM of twice voxel size is good starting point


[The next 30 lines are missing; some of the fragmentary lines from 35 on are restored from parallels in the Old Babylonian.]
"Why ..."(?) His own counsel ... At his instruction ... Who knows his heart... Shamhat pulled off her clothing, and clothed him with one piece while she clothed herself with a second. She took hold of him as the gods do' and brought him to the hut of the shepherds. The shepherds gathered all around about him, they marveled to themselves: "How the youth resembles Gilgamesh-- tall in stature, towering up to the battlements over the wall! Surely he was born in the mountains; his strength is as mighty as the meteorite(!) of Anu!"  The harlot spoke to Enkidu, saying: "Eat the food, Enkidu, it is the way one lives. Drink the beer, as is the custom of the land." Enkidu ate the food until he was sated, he drank the beer-seven jugs!-- and became expansive and sang with joy! He was elated and his face glowed. He splashed his shaggy body with water, and rubbed himself with oil, and turned into a human. He put on some clothing and became like a warrior(!). He took up his weapon and chased lions so that the shepherds could eat He routed the wolves, and chased the lions. With Enkidu as their guard, the herders could lie down. A wakeful man, a singular youth, he was twice as tall (?) (as normal men
[The next 33 lines are missing in the Standard Version; lines 57-86 are taken from the Old Babylonian.]
Then he raised his eyes and saw a man. He said to the harlot: "Shamhat, have that man go away! Why has he come'? I will call out his name!" The harlot called out to the man and went over to him and spoke with him. "Young man, where are you hurrying! Why this arduous pace!" The young man spoke, saying to Enkidu: "They have invited me to a wedding, as is the custom of the people. ... the selection(!) of brides(!) .. I have heaped up tasty delights for the wedding on the ceremonial(!) platter. For the King of Broad-Marted Uruk, open is the veil(!) of the people for choosing (a girl). For Gilgamesh, the King of Broad-Marted Uruk, open is the veil(?) of the people for choosing. He will have intercourse with the 'destined wife,' he first, the husband afterward. This is ordered by the counsel of Anu, from the severing of his umbilical cord it has been destined for him."  [Several lines are missing.] Enkidu walked in front, and Shamhat after him. [The Standard Version resumes.] He (Enkidu) walked down the street of Uruk-Haven, ... mighty... He blocked the way through Uruk the Sheepfold. The land of Uruk stood around him, the whole land assembled about him, the populace was thronging around him, the men were clustered about him, and kissed his feet as if he were a little baby(!). Suddenly a handsome young man ... For Ishara the bed of night(?)/marriage(?) is ready, for Gilgamesh as for a god a counterpart(!) is set up. Enkidu blocked the entry to the marital chamber, and would not allow Gilgamreh to be brought in. They grappled with each other at the entry to the marital chamber, in the street they attacked each other, the public square of the land. The doorposts trembled and the wall shook,
[About 42 lines are missing from the Standard Version; lines 103-129 are taken from the Old Babylonian version.]
  [19 lines are missing here.]
They kissed each other and became friends. [The Old Babylonian becomes fragmentary. The Standard Version resumes] "His strength is the mightiest in the land! His strength is as mighty as the meteorite(?) of Anu, The mother of Gilgamesh spoke to Gilgamesh, saying; Rimat-Ninsun said to her son: "(I!), Rimar-Ninsun... My son... Plaintively ... She went up into his (Shamash's) gateway, plaintively she implored ...: "Enkidu has no father or mother, his shaggy hair no one cuts. He was born in the wilderness, no one raised him." Enkidu was standing there, and heard the speech. He ... and sat down and wept, his eyes filled with tears, his arms felt limp, his strength weakened. They took each other by the hand, and.., their hands like ...  He can hear 100 leagues away any rustling(?) in his forest! Who would go down into his forest! Enlil assigned him as a terror to human beings, and whoever goes down into his forest paralysis(?) will strike!" Gilgamesh spoke to Enkidu saying: "What you say .. ." [About 42 lines are missing here in the Standard Version; lines 228-249 are taken from the Old Babylonian.] "Who, my Friend, can ascend to the heavens!" (Only) the gods can dwell forever with Shamash. As for human beings, their days are numbered, and whatever they keep trying to achieve is but wind! Now you are afraid of death-- what has become of your bold strength!  Should I fall, I will have established my fame. (They will say:)'It was Gilgamesh who locked in battle with Humbaba the Terrible!' You were born and raised in the wilderness, a lion leaped up on you, so you have experienced it all!' [5 lines are fragmentary] I will undertake it and I will cut down the Cedar. It is I who will establish fame for eternity! Come, my friend, I will go over to the forge and have them cast the weapons in our presence!" Holding each other by the hand they went over to the forge. [The Standard Version resumes at this point.] The craftsmen sat and discussed with one another. "We should fashion the axe... The hatchet should he one talent in weight ... Their swords should be one talent... Their armor one talent, their armor ..." Gilgamesh said to the men of Uruk: "Listen to me, men... [5 lines are missing here. You, men of Uruk, who know ... I want to make myself more mighty, and will go on a distant(!) journey! I will face fighting such as I have never known, I will set out on a road I have never traveled! Give me your blessings! ... I will enter the city gate of Uruk ... I will devote(?) myself to the New Year's Festival. I will perform the New Year's (ceremonies) in... The New Year's Festival will take place, celebrations ... They will keep shouting 'Hurrah!' in..."" Enkidu spoke to the Elders: "What the men of Uruk... Say to him that he must nor go to the Cedar Forest-- the journey is not to be made! A man who... The Guardian of the Cedar Forest ... The Noble Counselors of Uruk arose and delivered their advice toGilgamesh: "You are young, Gilgamesh, your heart carries you off you do not know what you are talking about! ...gave birth to you.  He can hear any rustling(!) in his forest 100 leagues away! Who would go down into his forest! Who among (even!) the Igigi gods can confront him? In order to keep the Cedar safe, Enlil assigned him as a terror to human beings." Gilgamesh listened to the statement of his Noble Counselors. [About 5 lines are missing to the end of Tablet II.]


cartoframes.context module¶
CartoContext and BatchJobStatus classes
-
class
cartoframes.context.
BatchJobStatus
(carto_context, job)¶ Bases:
object
Status of a write or query operation. Read more at Batch SQL API docs about responses and how to interpret them.
Example
Poll for a job’s status if you’ve caught the
BatchJobStatus
instance.import time job = cc.write(df, 'new_table', lnglat=('lng_col', 'lat_col')) while True: curr_status = job.status()['status'] if curr_status in ('done', 'failed', 'canceled', 'unknown', ): print(curr_status) break time.sleep(5)
Create a
BatchJobStatus
instance if you have a job_id output from a cc.write operation.>>> from cartoframes import CartoContext, BatchJobStatus >>> cc = CartoContext(username='...', api_key='...') >>> cc.write(df, 'new_table', lnglat=('lng', 'lat')) 'BatchJobStatus(job_id='job-id-string', ...)' >>> batch_job = BatchJobStatus(cc, 'job-id-string')
- Attrs:
- job_id (str): Job ID of the Batch SQL API job
last_status (str): Status of
job_id
job when last polled created_at (str): Time and date when job was created
Parameters: - carto_context (carto.CartoContext) – CartoContext instance
- job (dict or str) – If a dict, job status dict returned after sending a Batch SQL API request. If str, a Batch SQL API job id.
-
get_status
()¶ return current status of job
-
status
()¶ Checks the current status of job
job_id
Returns: Status and time it was updated Return type: dict Warns: UserWarning – If the job failed, a warning is raised with information about the failure
-
class
cartoframes.context.
CartoContext
(base_url=None, api_key=None, creds=None, session=None, verbose=0)¶ Bases:
object
CartoContext class for authentication with CARTO and high-level operations such as reading tables from CARTO into dataframes, writing dataframes to CARTO tables, and creating custom maps from dataframes and CARTO tables. Future methods interact with CARTO’s services like Data Observatory, and routing, geocoding, and isolines.
Manages connections with CARTO for data and map operations. Modeled after SparkContext.
Example
Create a CartoContext object:
import cartoframes cc = cartoframes.CartoContext(BASEURL, APIKEY)
- Attrs:
- creds (cartoframes.Credentials):
Credentials
instance
Parameters: - base_url (str) – Base URL of CARTO user account. Cloud-based accounts
are of the form
https://{username}.carto.com
(e.g., https://eschbacher.carto.com for usereschbacher
). On-premises installation users should ask their admin. - api_key (str) – CARTO API key.
- session (requests.Session, optional) – requests session. See requests documentation for more information.
- verbose (bool, optional) – Output underlying process states (True), or suppress (False, default)
Returns: A CartoContext object that is authenticated against the user’s CARTO account.
Return type: -
data_augment
(table_name, metadata)¶ Augment an existing CARTO table with Data Observatory measures. See the full Data Observatory catalog for all available measures. The result of this operation is:
- It updates table_name by adding columns from the Data Observatory
- It returns a pandas DataFrame representation of that newly augmented table.
Note
This method alters table_name in the user’s CARTO database by adding additional columns. To avoid this, create a copy of the table first and use the new copy instead.
Example
Add new measures to a CARTO table and pass it to a pandas DataFrame. Using the “Median Household Income in the past 12 months” measure from the Data Observatory Catalog.
import cartoframes cc = cartoframes.CartoContext(BASEURL, APIKEY) median_income = [{'numer_id': 'us.census.acs.B19013001', 'geom_id': 'us.census.tiger.block_group', 'numer_timespan': '2011 - 2015'}] df = cc.data_augment('transaction_events', median_income)
Parameters: - table_name (str) – Name of table on CARTO account that Data Observatory measures are to be added to.
- metadata (list of dicts) –
List of all measures to add to table_name. Each dict has the following keys:
- numer_id (str): The identifier for the desired measurement
- geom_id (str, optional): Identifier for a desired geographic boundary level to use when calculating measures. Will be automatically assigned if undefined
- normalization (str, optional): The desired normalization. One of ‘area’, ‘prenormalized’, or ‘denominated’. ‘Area’ will normalize the measure per square kilometer, ‘prenormalized’ will return the original value, and ‘denominated’ will normalize by a denominator.
- denom_id (str, optional): Measure ID from DO catalog
- numer_timespan (str, optional): The desired timespan for the measurement. Defaults to most recent timespan available if left unspecified.
- geom_timespan (str, optional): The desired timespan for the geometry. Defaults to timespan matching numer_timespan if left unspecified.
- target_area (str, optional): Instead of aiming to have target_geoms in the area of the geometry passed as extent, fill this area. Unit is square degrees WGS84. Set this to 0 if you want to use the smallest source geometry for this element of metadata, for example if you’re passing in points.
- target_geoms (str, optional): Override global target_geoms for this element of metadata
- max_timespan_rank (str, optional): Override global max_timespan_rank for this element of metadata
- max_score_rank (str, optional): Override global max_score_rank for this element of metadata
Returns: A DataFrame representation of table_name which has new columns for each measure in metadata.
Return type: pandas.DataFrame
-
data_boundaries
(df=None, table_name=None)¶ Not currently implemented
-
data_discovery
(keywords=None, regex=None, time=None, boundary=None)¶ Not currently implemented
-
delete
(table_name)¶ Delete a table in user’s CARTO account.
Parameters: table_name (str) – Table name to delete Returns: None
-
map
(layers=None, interactive=True, zoom=None, lat=None, lng=None, size=(800, 400), ax=None)¶ Produce a CARTO map visualizing data layers.
Examples
Create a map with two data layers, and one BaseMap layer:
import cartoframes from cartoframes import Layer, BaseMap, styling cc = cartoframes.CartoContext(BASEURL, APIKEY) cc.map(layers=[BaseMap(), Layer('acadia_biodiversity', color={'column': 'simpson_index', 'scheme': styling.tealRose(7)}), Layer('peregrine_falcon_nest_sites', size='num_eggs', color={'column': 'bird_id', 'scheme': styling.vivid(10))], interactive=True)
Create a snapshot of a map at a specific zoom and center:
cc.map(layers=Layer('acadia_biodiversity', color='simpson_index'), interactive=False, zoom=14, lng=-68.3823549, lat=44.3036906)
Parameters: - layers (list, optional) –
List of one or more of the following:
- Layer: cartoframes Layer object for visualizing data from a CARTO table. See layer.Layer for all styling options.
- BaseMap: Basemap for contextualizng data layers. See layer.BaseMap for all styling options.
- QueryLayer: Layer from an arbitrary query. See layer.QueryLayer for all styling options.
- interactive (bool, optional) – Defaults to
True
to show an interactive slippy map. Setting toFalse
creates a static map. - zoom (int, optional) – Zoom level of map. Acceptable values are
usually in the range 0 to 19. 0 has the entire earth on a
single tile (256px square). Zoom 19 is the size of a city
block. Must be used in conjunction with
lng
andlat
. Defaults to a view to have all data layers in view. - lat (float, optional) – Latitude value for the center of the map.
Must be used in conjunction with
zoom
andlng
. Defaults to a view to have all data layers in view. - lng (float, optional) – Longitude value for the center of the map.
Must be used in conjunction with
zoom
andlat
. Defaults to a view to have all data layers in view. - size (tuple, optional) – List of pixel dimensions for the map.
Format is
(width, height)
. Defaults to(800, 400)
. - ax – matplotlib axis on which to draw the image. Only used when
interactive
isFalse
.
Returns: Interactive maps are rendered in an
iframe
, while static maps are rendered inimg
tags.Return type: IPython.display.HTML
- layers (list, optional) –
-
query
(query, table_name=None, decode_geom=False)¶ Pull the result from an arbitrary SQL query from a CARTO account into a pandas DataFrame. Can also be used to perform database operations (creating/dropping tables, adding columns, updates, etc.).
Parameters: - query (str) – Query to run against CARTO user database.
- table_name (str, optional) – If set, this will create a new table in the user’s CARTO account that is the result of the query. Defaults to None (no table created).
Returns: DataFrame representation of query supplied. Pandas data types are inferred from PostgreSQL data types. In the case of PostgreSQL date types, the data type ‘object’ is used.
Return type: pandas.DataFrame
-
read
(table_name, limit=None, index='cartodb_id', decode_geom=False)¶ Read tables from CARTO into pandas DataFrames.
Example
import cartoframes cc = cartoframes.CartoContext(BASEURL, APIKEY) df = cc.read('acadia_biodiversity')
Parameters: - table_name (str) – Name of table in user’s CARTO account.
- limit (int, optional) – Read only
limit
lines fromtable_name
. Defaults to None, which reads the full table. - index (str, optional) – Not currently in use.
Returns: DataFrame representation of table_name from CARTO.
Return type: pandas.DataFrame
-
sync
(dataframe, table_name)¶ Depending on the size of the DataFrame or CARTO table, perform granular operations on a DataFrame to only update the changed cells instead of a bulk upload. If on the large side, perform granular operations, if on the smaller side use Import API.
Note
Not yet implemented.
-
write
(df, table_name, temp_dir='/tmp', overwrite=False, lnglat=None, encode_geom=False, geom_col=None, **kwargs)¶ Write a DataFrame to a CARTO table.
Example
Write a pandas DataFrame to CARTO.
cc.write(df, 'brooklyn_poverty', overwrite=True)
Scrape an HTML table from Wikipedia and send to CARTO with content guessing to create a geometry from the country column. This uses a CARTO Import API param content_guessing parameter.
url = 'https://en.wikipedia.org/wiki/List_of_countries_by_life_expectancy' df = pd.read_html(url, header=0)[0] cc.write(df, 'life_expectancy', content_guessing=True)
Parameters: - df (pandas.DataFrame) – DataFrame to write to
table_name
in user CARTO account - table_name (str) – Table to write
df
to in CARTO. - temp_dir (str, optional) – Directory for temporary storage of data
that is sent to CARTO. Default is
/tmp
(Unix-like systems). - overwrite (bool, optional) – Behavior for overwriting
table_name
if it exits on CARTO. Defaults toFalse
. - lnglat (tuple, optional) – lng/lat pair that can be used for
creating a geometry on CARTO. Defaults to
None
. In some cases, geometry will be created without specifying this. See CARTO’s Import API for more information. - encode_geom (bool, optional) – Whether to write geom_col to CARTO as the_geom.
- geom_col (str, optional) – The name of the column where geometry information is stored. Used in conjunction with encode_geom.
- kwargs – Keyword arguments from CARTO’s Import API. See the params listed in the documentation for more information. For example, when using content_guessing=’true’, a column named ‘countries’ with country names will be used to generate polygons for each country. To avoid unintended consequences, avoid file, url, and other similar arguments.
Returns: If lnglat flag is set and the DataFrame has more than 100,000 rows, a
BatchJobStatus
instance is returned. Otherwise, None.Return type: BatchJobStatus
or None- df (pandas.DataFrame) – DataFrame to write to


Education and skills funding
Funding for children, young people and adults
The ESFA brings together the Education Funding Agency and Skills Funding Agency to create an agency responsible for funding education and skills for children, young people and adults.
PE and sport premium 2018 to 2019
- schools maintained by the local authority
- academies and free schools
- non-maintained special schools for children with special educational needs
- city technology colleges (CTCs)
- pupil referral units (PRUs provide education for children who can’t go to a mainstream school)
- general hospitals


| ID | Message | Phone | Created At | |
|---|---|---|---|---|
| {{paginated_sent_messages.from + i}} | {{sent_message.message}} | {{sent_message.phone}} | {{sent_message.created_at | date: 'short'}} |
| ID | Message | Phone | Created At | |
|---|---|---|---|---|
| {{paginated_sent_messages.from + i}} | {{sent_message.message}} | {{sent_message.phone}} | {{sent_message.created_at | date: 'short'}} |


expression, concatenation, function − rwl syntax for expressions and standard functions
primary_expression
::=
identifier
| constant
| function
| ( concatenation )
function ::=
uniform ( expression , expression )
| ( erlang | erlang2 ) ( expression
)
| erlangk ( expression , expression )
| ( sqrt | round ) ( expression
)
| ( exp | log ) ( [ expression
,) ] expression )
| lengthb ( concatenation )
| instrb ( concatenation , concatenation [
, expression ] )
| substrb ( concatenation , expression [
, expression ] )
| sql_id ( identifier )
| ( activesessioncount | opensessioncount )
( identifier )
| ( serverrelease ) ( identifier |
default | results )
| getenv ( expression )
| system ( concatenation [ , identifier ]
)
| access ( concatenation , expression )
| identifier ( [ concatenation { ,
concatenation } ] )
unary_expression
::=
primary_expression [ is [ not ] null ]
| ( - | ! | not ) multiplication
multiplication
::=
unary_expression
| multiplication ( * | / | % )
unary_expression
addition ::=
multiplication
| addition ( + | - ) multiplication
comparison ::=
addition
| comparison ( < | > | <= |
>= ) addition
| comparison between addition and addition
equality ::=
comparison
| equality ( = | != | <> )
comparison
logicaland ::=
equality
| logicaland and equality
logicalor ::=
logicaland
| logicalor or logicaland
conditional ::=
logicalor
| logicalor ? conditional : conditional
expression ::=
conditional
| expression || conditional
concatenation
::=
expression { expression }
constant ::=
integer
| string
| digit { digit } . { digit } { exponent }
| digit { digit } { exponent }
| null
integer ::= digit { digit }
digit ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
exponent ::= e [ + | - ] digit { digit }
string ::=
" {character} "
| $ ( A | B | ... Z { A |
B ... | 0 | 1 ... | _ }
In the RWP*Load Simulator, expressions are very similar to expressions in any other programming language with operator precedence, association etc. The operator syntax is a mix of operators from C and SQL.
String concatenation has the same syntax as in the SQL language, i.e. using || as the concatenation operator. However, in many contexts where a disambiguation does not exist, the operator can be omitted.
Although variables are declared with some type (integer, double, string) they are internally always represented as all three types, similar to how awk does it. Expressions always have a "dominant" type which in case of assignments is the type of the variable being assigned to. In other cases, the dominant type will be determined from the presence of constants of integer or double found in the expression. Strings are implicitly converted to integer or double without error handling similar to how atoi(3) or atof(3) do it. If complete control of this is needed, it is recommended to only use variables and functions of one specific type in the expression.
In rwloadsim, you can have constants of type integer, double or string and the additional constant null. Integer constants are sequences of digits, double constants are sequences of digits, a decimal dot, and potentially another sequence of digits. Double constants can additionally have an exponent which is the letter e (or E), potentially followed by + or - and terminated by a sequence of digits.
A potential - in front of an integer or double constant is not part of the constant; where appropriate, it will be parsed as the unary minus operator.
Strings are delimited by double quotes and they can span newline in which case the newline becomes part of the string unless preceded by \. Within a string a backslash initiates one of the following escapes:
\" represents the double quote character
\\ represents a backslash
\t represents the TAB character
\n represents newline
\e represents the ESC characters
\r represents the CR character
No other escapes are allowed.
In string constants, all characters in your terminals character set are allowed; however, they are always treated as a sequence of bytes. You must always ensure the NLS_LANG environment variable includes the correct setting for the actual character used by your terminal session.
Environment variables of the form $NAME where NAME is upper case potentially followed by uppercase, underscore or digits are also string constants. Except when used in the $if $then directive, attempts at using non existing environment variables cause a warning to be displayed. Due to the fact that expressions are always calculated as all three simple types, you can assign such environment variables to integers and doubles.
Please note that $ followed by lower case are directives, so you cannot expand environment variables in lower case using $. If needed, use the getenv() function.
There are also variables named $#, $1, $2, etc, see identifier(1rwl).
A random string array is treated like a string constant.
The rwl language has the following operators in order of precedence. All logical operators have the result 1 when true and 0 when false, and all operators operating on logic values use 0 as false and any other value as true. Except when noted, operators are dyadic.
|
is null |
|||
|
is not null |
Similar to their equivalents in the SQL language; these are monadic and post-fix. | ||
|
- ! not |
These monadic prefix operators are respectively numeric negative and two synonyms for boolean not. | ||
|
* / % |
Multiplication, division and integer remainder. | ||
|
+ - |
Addition and subtraction. | ||
|
< <= > >= |
|||
|
between and |
The first four are the standard inequality comparison operators. The latter is like its counterpart in the SQL language and is a triadic operator. If either operand is numeric, all comparisons are done on the numeric value; If both operands are string, all comparisons are done using the byte values of the strings. All operands of the between and operator are calculated irrespective of their values. | ||
|
= <> != |
Equality and two synonyms for inequality comparison. | ||
|
and |
Logical and; if the first operand is 0, the second operand is not calculated. | ||
|
or |
Logical or; if the first operand is not 0, the second operand is not calculated. | ||
|
? : |
Comparison operator as found in the C programming language. Only one of the second and third operand is calculated depending on the value of the first. | ||
|
|| |
String concatenation. Note that in most cases, the concatenation operator can be omitted as two expressions immediately after each other are taken as concatenation. |
User declared functions can be called as part of expression evaluation using the syntax
name( arguments )
where arguments is a potentially empty list of comma-separated expressions; note that functions without arguments still require the parenthesis.
The following lists all built-in functions. Note that neither user defined nor built-in functions are available in a $if $then directive, except when explicitly noted.
|
uniform(a,b) |
Return a random uniformly distributed number. If either of the arguments are double, the value will be greater than or equal to the value of the first argument and less than the second argument. If both arguments are integer, the value will be greater than or equal to the value of the first argument and less than or equal to the second argument. |
erlang(a) erlang2(a)
Return a random double value with an average of a. The value will be erlang distributed with k=1 or k=2 respectively. Erlang distribution with k=1 is also known as exponential distribution. Erlang distribution with k=2 is often used when simulating expected arrival rates.
|
erlangk(k,a) |
Return a random value with an average of a using an erlang k distribution. Only the integer part of k is used. | ||
|
sqrt(a) |
Return the square root of the argument. | ||
|
round(a) |
Return the value of the argument rounded to an integer. |
exp(p,a) exp(a)
Return the value of p raised to the power a. If p is omitted, return e raised to the power of a.
log(l,a) log(a)
Return the logarithm of base l, respectively e, of the argument a.
|
lengthb(s) |
Return the length in bytes of the string s. |
instrb(x,s) instrb(x,s,p)
Returns the byte position (starting at 1) of the string s in the string x or 0 if not found. With three arguments, start the search at position p. Semantics is like the same function in SQL with two or three arguments, although negative values for p are not allowed.
substrb(s,p) substrb(s,p,l)
Returns a sub-string of its first argument, starting at byte position p; if l is specified that number of bytes will be returned. Semantics is like the same function in SQL.
|
sql_id(n) |
Returns the sqlid of the named identifier which must be a sql statement. The function is only available if both the client and the server are release 12.2 or newer, and the value is only available after the sql statement has been executed. |
activesessioncount(n) opensessioncount(n)
The argument must be an identifier naming a database using a sessionpool, and the value returned is respectively the OCI_ATTR_SPOOL_BUSY_COUNT or OCI_ATTR_SPOOL_OPEN_COUNT from the associated session pool handle.
serverrelease(n)
The argument must be an identifier naming a database or either of the keywords default or results and the return value is the five element release of that database as a string in the format a.b.c.d.e.
|
getenv(s) |
Return the value of the environment variable provided as the argument. If the environment variable does not exist, an empty string is returned. |
system(s) system(s,n)
Execute the first argument as an operating system command and return the exit code from its execution. If there is a second argument, it must be the name of a string variable into which the stdout from the execution is stored. If the last character in stdout from the call is a newline (which is normally the case), the newline is removed. This is somewhat equivalent to doing something like n=‘$s‘ in the shell.
|
access(f,c) |
Return true (1) if the file named as the first argument has the access explained as the second argument. The second argument must be a combination of the characters r, w, x, f, d. The first three refer to the standard access methods, f means check if the path refers to an ordinary file, d to check if it refers to a directory. As an exception to the general rule, this function is available in $if $then directives. | ||
|
defined(n) |
Return true if the identifier named as its argument has been defined. This function is only available inside the $if $then directive. |
# assign either
1 or 2 with equal probability to the variable a
integer a := uniform(1,2);
# assign a
random number at least 0 but smaller than 1 to the variable
d
double d := uniform(0.0,1.0);
# Print a line
telling if this is executed by root or not
printline access("/root","dw") ?
"you are root" : "you are not root";
# Print the
value of a, then a :, then the value of d.
printline a ":" d;
If the serverrelease function is used with a database version 18 or later when the client is version 12 or earlier, only the major release (the first number) is correct. This is not a bug in rwloadsim itself.
Copyright
© 2021 Oracle Corporation
Licensed under the Universal Permissive License v 1.0 as
shown at https://oss.oracle.com/licenses/upl
identifier(1rwl), simpledeclaration(1rwl), statement(1rwl), declaration(1rwl), functiondeclaration(1rwl), atoi(3), atof(3), randomstringdeclaration(1rwl)


Omayma Ahmad
Aspiring Software Engineer.Learning how to code at the University of Manchester Coding Bootcamp! So far I have gained skills in: JavaScript, HTML, CSS, BootStrap and Bulma.
Email MeThings I enjoy!
In my spare time I like to read, if you want to see what books I recommend and am currently reading click here for my GoodReads account! My other hobbies include painting, yoga, watching anime, gaming and gym-ing :)
Meet my Cat
Say hello to my furry best friend - Chanel! She is 10 years-old with a fiesty personality. She enjoys long naps, fresh bedding and cat treats.


walletlock
Removes the wallet encryption key from memory, locking the wallet.
After calling this method, you will need to call walletpassphrase again
before being able to call any methods which require the wallet to be unlocked.
Examples:
Set the passphrase for 2 minutes to perform a transaction
> bitcoin-cli walletpassphrase "my pass phrase" 120
Perform a send (requires passphrase set)
> bitcoin-cli sendtoaddress "1M72Sfpbz1BPpXFHz9m3CdqATR44Jvaydd" 1.0
Clear the passphrase since we are done before 2 minutes is up
> bitcoin-cli walletlock
As json rpc call
> curl --user myusername --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "walletlock", "params": [] }' -H 'content-type: text/plain;' http://<IP_ADDRESS>:8332/


Footwear Collection
Buy One Today!
Caribou Skin Boots
Moose Boots
Brown Rabbit Slippers
Snow Rabbit Slippers
Continue Shopping


User-friendly and comprehensive, Geotrek allows management and promotion of the area through rich and innovative features
Geotrek-Admin for data management, Geotrek‑Rando for the promotion of activities and Geotrek-Mobile in the field are a unique and compelling offering
Published under free BSD license, Geotrek is evolving thanks to its users community which benefits from investment and contribute for the benefits of all
{% include date.html date=post.date %}{{ month }} {{ year }}
{% if post.excerpt %} {{ post.excerpt }} {% endif %} {% if post.image %} {% endif %}


Typedef
| Static Public Summary | ||
| public |
Compositing operations for images. |
|
| public |
Styles for rendering the endpoint of a stroked line. |
|
| public |
Junction types for stroked lines. |
|
| public |
Rules for determining which regions are interior to a path, used by the fillPath(using:) and clip(using:) methods. |
|
| public |
DispatchTimeInterval represents a number of seconds, millisconds, microseconds, or nanoseconds. |
|
| public |
The partitioning mode used by the tessellator to derive the number and spacing of segments used to subdivide a corresponding edge. |
|
| public |
The type of the color-space mode constants listed in Color Space Models. |
|
| public |
Constants affecting the animation curve of an action, used by the timingMode property. |
|
| public |
Modes for antialiased rendering of the view’s scene, used by the SCNView property. |
|
| public |
Modes that describe how SceneKit blends source colors rendered using a material with destination colors already in a rendering target, used by the blendMode property. |
|
| public |
Options for how often SceneKit should execute the binding handler you provide with the handleBinding(ofBufferNamed:frequency:handler:) method. |
|
| public |
|
|
| public |
Options for which edges of an extruded shape are chamfered, used by the chamferMode property. |
|
| public |
|
|
| public |
The modes SceneKit uses to determine which polygons to render in a surface, used by the cullMode property. |
|
| public |
|
|
| public |
Texture filtering modes, used by the the minificationFilter, magnificationFilter, and mipFilter properties. |
|
| public |
The drawing primitive that connects vertices when rendering a geometry element, used by the primitiveType property to specify how SceneKit interprets the geometry element’s data. |
|
| public |
|
|
| public |
The interpolation formulas for blending between target geometries. |
|
| public |
Values that inform SceneKit’s rendering for movement-related effects, used by the movabilityHint property. |
|
| public |
Options for the initial direction of each emitted particle, used by the birthDirection property. |
|
| public |
Options for the initial location of each emitted particle, used by the birthLocation property. |
|
| public |
Options for combining source and destination pixel colors when compositing particles during rendering, used by the blendMode property. |
|
| public |
Significant events in the life spans of simulate particles, used by the handle(_:forProperties:handler:) method. |
|
| public |
Options for animating each particle with a sequence of images, used by the imageSequenceAnimationMode property. |
|
| public |
Options for the input value of the property controller’s animation, used by the inputMode property. |
|
| public |
Stages of SceneKit’s particle simulation process into which you can insert modifier blocks, used by the addModifier(forProperties:at:modifier:) method. |
|
| public |
Options for restricting the orientation of particles, used by the orientationMode property. |
|
| public |
Options for the rendering order of particles, used by the sortingMode property. |
|
| public |
Constants that determine how a physics body interacts with forces and other bodies, used by the type property and when creating a physics body. |
|
| public |
Options for defining the region of space affected by a physics field, used by the scope property. |
|
| public |
Options for when to load the reference node’s content, used by the loadingPolicy property. |
|
| public |
Options for choosing the graphics technology for an SCNView object (or other SceneKit renderer) to use for drawing its contents. |
|
| public |
Constants identifying phases of SceneKit’s scene loading process, used in a SCNSceneSourceStatusHandler block. |
|
| public |
|
|
| public |
Options for SceneKit’s rendering of shadows cast by a light, used by the shadowMode property. |
|
| public |
|
|
| public |
The modes SceneKit uses to calculate the opacity of pixels rendered with a material, used by the transparencyMode property. |
|
| public |
Modes to apply to texture wrapping, used by the wrapT and wrapS properties. |
|
| public |
The modes that an action can use to adjust the apparent timing of the action. |
|
| public |
The modes that describe how the source and destination pixel colors are used to calculate the new destination color. |
|
| public |
Options for aligning text horizontally. |
|
| public |
Options for aligning text vertically. |
|
| public |
The modes that determine how the scene’s area is mapped to the view that presents it. |
|
| public |
Texture filtering modes to use when the texture is drawn in a size other than its native size. |
Static Public
public CGBlendMode: Object source
Compositing operations for images.
Properties:
| Name | Type | Attribute | Description |
| normal | number | Paints the source image samples over the background image samples. |
|
| multiply | number | Multiplies the source image samples with the background image samples. This results in colors that are at least as dark as either of the two contributing sample colors. |
|
| screen | number | Multiplies the inverse of the source image samples with the inverse of the background image samples. This results in colors that are at least as light as either of the two contributing sample colors. |
|
| overlay | number | ||
| darken | number | ||
| lighten | number | ||
| colorDodge | number | Brightens the background image samples to reflect the source image samples. Source image sample values that specify black do not produce a change. |
|
| colorBurn | number | Darkens the background image samples to reflect the source image samples. Source image sample values that specify white do not produce a change. |
|
| softLight | number | ||
| hardLight | number | ||
| difference | number | ||
| exclusion | number | Produces an effect similar to that produced by difference, but with lower contrast. Source image sample values that are black don’t produce a change; white inverts the background color values. |
|
| hue | number | Uses the luminance and saturation values of the background with the hue of the source image. |
|
| saturation | number | Uses the luminance and hue values of the background with the saturation of the source image. Areas of the background that have no saturation (that is, pure gray areas) don’t produce a change. |
|
| color | number | Uses the luminance values of the background with the hue and saturation values of the source image. This mode preserves the gray levels in the image. You can use this mode to color monochrome images or to tint color images. |
|
| luminosity | number | Uses the hue and saturation of the background with the luminance of the source image. This mode creates an effect that is inverse to the effect created by color. |
|
| clear | number | R = 0 |
|
| copy | number | R = S |
|
| sourceIn | number | R = S*Da |
|
| sourceOut | number | R = S*(1 - Da) |
|
| sourceAtop | number | R = SDa + D(1 - Sa) |
|
| destinationOver | number | R = S*(1 - Da) + D |
|
| destinationIn | number | R = D*Sa |
|
| destinationOut | number | R = D*(1 - Sa) |
|
| destinationAtop | number | R = S(1 - Da) + DSa |
|
| xor | number | R = S(1 - Da) + D(1 - Sa). This XOR mode is only nominally related to the classical bitmap XOR operation, which is not supported by Core Graphics |
|
| plusDarker | number | R = MAX(0, 1 - ((1 - D) + (1 - S))) |
|
| plusLighter | number | R = MIN(1, S + D) |
public CGLineCap: Object source
Styles for rendering the endpoint of a stroked line.
Properties:
| Name | Type | Attribute | Description |
| butt | number | A line with a squared-off end. Core Graphics draws the line to extend only to the exact endpoint of the path. This is the default. |
|
| round | number | A line with a rounded end. Core Graphics draws the line to extend beyond the endpoint of the path. The line ends with a semicircular arc with a radius of 1/2 the line’s width, centered on the endpoint. |
|
| square | number | A line with a squared-off end. Core Graphics extends the line beyond the endpoint of the path for a distance equal to half the line width. |
public CGLineJoin: Object source
Junction types for stroked lines.
Properties:
| Name | Type | Attribute | Description |
| miter | number | ||
| round | number | A join with a rounded end. Core Graphics draws the line to extend beyond the endpoint of the path. The line ends with a semicircular arc with a radius of 1/2 the line’s width, centered on the endpoint. |
|
| bevel | number | A join with a squared-off end. Core Graphics draws the line to extend beyond the endpoint of the path, for a distance of 1/2 the line’s width. |
public CGPathFillRule: Object source
Rules for determining which regions are interior to a path, used by the fillPath(using:) and clip(using:) methods.
public DispatchTimeInterval: Object source
DispatchTimeInterval represents a number of seconds, millisconds, microseconds, or nanoseconds. You use DispatchTimeInterval values to specify the interval at which a DispatchSourceTimer fires or I/O handlers are invoked for a DispatchIO channel, as well as to increment and decrement DispatchTime values.
public MTLTessellationPartitionMode: Object source
The partitioning mode used by the tessellator to derive the number and spacing of segments used to subdivide a corresponding edge.
public NSColorSpaceModel: Object source
The type of the color-space mode constants listed in Color Space Models.
public SCNActionTimingMode: Object source
Constants affecting the animation curve of an action, used by the timingMode property.
Properties:
| Name | Type | Attribute | Description |
| linear | number | Linear pacing. The animation progresses evenly throughout its duration. |
|
| easeIn | number | Ease-in pacing. The animation begins slowly, and then speeds up as it progresses. |
|
| easeOut | number | Ease-out pacing. The animation begins quickly, and then slows as it completes. |
|
| easeInEaseOut | number | Ease-in ease-out pacing. The animation begins slowly, accelerates through the middle of its duration, and then slows again before completing. |
public SCNAntialiasingMode: Object source
Modes for antialiased rendering of the view’s scene, used by the SCNView property.
Properties:
| Name | Type | Attribute | Description |
| none | number | Disables antialiased rendering. |
|
| multisampling2X | number | Enables multisample antialiasing, with two samples per screen pixel. |
|
| multisampling4X | number | Enables multisample antialiasing, with four samples per screen pixel. |
|
| multisampling8X | number | Enables multisample antialiasing, with eight samples per screen pixel. |
|
| multisampling16X | number | Enables multisample antialiasing, with sixteen samples per screen pixel. |
public SCNBlendMode: Object source
Modes that describe how SceneKit blends source colors rendered using a material with destination colors already in a rendering target, used by the blendMode property.
Properties:
| Name | Type | Attribute | Description |
| alpha | number | Blend by multiplying source and destination color values by their corresponding alpha values. |
|
| add | number | Blend by adding the source color to the destination color. |
|
| subtract | number | Blend by subtracting the source color from the destination color. |
|
| multiply | number | Blend by multiplying the source color with the background color. |
|
| screen | number | Blend by multiplying the inverse of the source color with the inverse of the destination color. |
|
| replace | number | Blend by replacing the destination color with the source color, ignoring alpha. |
public SCNBufferFrequency: Object source
Options for how often SceneKit should execute the binding handler you provide with the handleBinding(ofBufferNamed:frequency:handler:) method.
Properties:
| Name | Type | Attribute | Description |
| perFrame | number | Execute the binding handler once for each frame to be rendered using the shader. |
|
| perNode | number | Execute the binding handler once for each frame, for each node to be rendered using the shader. |
|
| perShadable | number | Execute the binding handler once for each frame, for each node, for each material or geometry to be rendered using the shader. |
public SCNChamferMode: Object source
Options for which edges of an extruded shape are chamfered, used by the chamferMode property.
public SCNCullMode: Object source
The modes SceneKit uses to determine which polygons to render in a surface, used by the cullMode property.
public SCNFilterMode: Object source
Texture filtering modes, used by the the minificationFilter, magnificationFilter, and mipFilter properties.
Properties:
| Name | Type | Attribute | Description |
| none | number | No texture filtering is applied. |
|
| nearest | number | Texture filtering returns the color from only one texel, whose location is nearest to the coordinates being sampled. |
|
| linear | number | Texture filtering sample texels from the neighborhood of the coordinates being sampled and linearly interpolates their colors. |
public SCNGeometryPrimitiveType: Object source
The drawing primitive that connects vertices when rendering a geometry element, used by the primitiveType property to specify how SceneKit interprets the geometry element’s data.
Properties:
| Name | Type | Attribute | Description |
| triangles | number | The geometry element’s data is a sequence of triangles, with each triangle described by three new vertices. |
|
| triangleStrip | number | The geometry element’s data is a sequence of triangles, with each triangle described by one new vertex and two vertices from the previous triangle. |
|
| line | number | The geometry element’s data is a sequence of line segments, with each line segment described by two new vertices. |
|
| point | number | The geometry element’s data is a sequence of unconnected points. |
|
| polygon | number |
public SCNHitTestOption: Object source
Properties:
| Name | Type | Attribute | Description |
| backFaceCulling | string | An option to ignore faces not oriented toward the camera. |
|
| boundingBoxOnly | string | An option to search for objects by bounding box only. |
|
| categoryBitMask | string | ||
| clipToZRange | string | An option to search for objects only within the depth range of the current point of view. |
|
| firstFoundOnly | string | An option to return only the first object found. |
|
| ignoreChildNodes | string | An option to ignore child nodes when searching. |
|
| ignoreHiddenNodes | string | An option to ignore hidden nodes when searching. |
|
| rootNode | string | The root of the node hierarchy to be searched. |
|
| sortResults | string | An option to sort the results of a hit-test. |
public SCNMorpherCalculationMode: Object source
The interpolation formulas for blending between target geometries.
Properties:
| Name | Type | Attribute | Description |
| normalized | number | Target weights must be in the range between 0.0 and 1.0, and the contribution of the base geometry to the morphed surface is related to the sum of target weights. This is the default mode. |
|
| additive | number | Target weights may take on any value, and weighted contributions for each target are added to the base geometry, |
public SCNMovabilityHint: Object source
Values that inform SceneKit’s rendering for movement-related effects, used by the movabilityHint property.
public SCNParticleBirthDirection: Object source
Options for the initial direction of each emitted particle, used by the birthDirection property.
Properties:
| Name | Type | Attribute | Description |
| constant | number | The emitting direction is the same for all particles. |
|
| surfaceNormal | number | The emitting direction for each particle is along the surface normal vector at the point where the particle is emitted. |
|
| random | number | SceneKit randomizes the emitting direction for each particle. |
public SCNParticleBirthLocation: Object source
Options for the initial location of each emitted particle, used by the birthLocation property.
Properties:
| Name | Type | Attribute | Description |
| surface | number | New particles can be created at any location on the surface of the emitter shape. |
|
| volume | number | New particles can be created at any location within the volume of the emitter shape. |
|
| vertex | number | New particles can be created at only at the locations of the vertices in the emitter shape. |
public SCNParticleBlendMode: Object source
Options for combining source and destination pixel colors when compositing particles during rendering, used by the blendMode property.
Properties:
| Name | Type | Attribute | Description |
| additive | number | The source and destination colors are added together. |
|
| subtract | number | The source color is subtracted from the destination color. |
|
| multiply | number | The source color is multiplied by the destination color. |
|
| screen | number | The source color is added to the destination color times the inverted source color. |
|
| alpha | number | The source and destination colors are blended by multiplying the source alpha value. |
|
| replace | number | The source color replaces the destination color. |
public SCNParticleEvent: Object source
Significant events in the life spans of simulate particles, used by the handle(_:forProperties:handler:) method.
public SCNParticleImageSequenceAnimationMode: Object source
Options for animating each particle with a sequence of images, used by the imageSequenceAnimationMode property.
public SCNParticleInputMode: Object source
Options for the input value of the property controller’s animation, used by the inputMode property.
Properties:
| Name | Type | Attribute | Description |
| overLife | number | The controller’s effect on a particle property is a function of the time since the particle’s birth. |
|
| overDistance | number | The controller’s effect on a particle property is a function of the particle’s distance from the position of a specified node. |
|
| overOtherProperty | number | The controller’s effect on a particle property is a function of another of the particle’s properties. |
public SCNParticleModifierStage: Object source
Stages of SceneKit’s particle simulation process into which you can insert modifier blocks, used by the addModifier(forProperties:at:modifier:) method.
Properties:
| Name | Type | Attribute | Description |
| preDynamics | number | The stage before SceneKit simulates the motion of particles. |
|
| postDynamics | number | The stage after SceneKit simulates the motion of particles. |
|
| preCollision | number | The stage before SceneKit simulates the results of collisions between particles and scene geometry. |
|
| postCollision | number | The stage after SceneKit simulates the results of collisions between particles and scene geometry. |
public SCNParticleOrientationMode: Object source
Options for restricting the orientation of particles, used by the orientationMode property.
Properties:
| Name | Type | Attribute | Description |
| billboardScreenAligned | number | Each particle’s orientation is always fixed with respect to the point of view camera. |
|
| billboardViewAligned | number | Each particle always faces the point of view camera (but may rotate about an axis parallel to the view direction). |
|
| free | number | Particle orientations are not restricted; they may rotate freely in all axes. |
|
| billboardYAligned | number | The y-axis direction of each particle is always fixed with respect to the point of view camera. |
public SCNParticleSortingMode: Object source
Options for the rendering order of particles, used by the sortingMode property.
Properties:
| Name | Type | Attribute | Description |
| none | number | Particles are not sorted; they may be rendered in any order. |
|
| projectedDepth | number | Particles farther from the point of view (as measured using projected depth) are rendered before closer particles. |
|
| distance | number | Particles farther from the point of view (as measured using distance from the camera in scene space) are rendered before closer particles. |
|
| oldestFirst | number | Particles emitted earlier are rendered before particles emitted more recently. |
|
| youngestFirst | number | Particles emitted more recently are rendered before particles emitted earlier. |
public SCNPhysicsBodyType: Object source
Constants that determine how a physics body interacts with forces and other bodies, used by the type property and when creating a physics body.
Properties:
| Name | Type | Attribute | Description |
| static | number | A physics body that is unaffected by forces or collisions and cannot move. |
|
| dynamic | number | A physics body that can be affected by forces and collisions. |
|
| kinematic | number | A physics body that is unaffected by forces or collisions but that can cause collisions affecting other bodies when moved. |
public SCNPhysicsFieldScope: Object source
Options for defining the region of space affected by a physics field, used by the scope property.
public SCNReferenceLoadingPolicy: Object source
Options for when to load the reference node’s content, used by the loadingPolicy property.
public SCNRenderingAPI: Object source
Options for choosing the graphics technology for an SCNView object (or other SceneKit renderer) to use for drawing its contents. Used by the renderingAPI property and the preferredRenderingAPI option when initializing an SCNView object.
Properties:
| Name | Type | Attribute | Description |
| metal | number | Use the Metal framework for SceneKit rendering. |
|
| openGLES2 | number | Use the OpenGL ES 2.0 API for SceneKit rendering in iOS. |
|
| openGLLegacy | number | Use the Legacy OpenGL API for SceneKit rendering in macOS. |
|
| openGLCore32 | number | Use the OpenGL 3.2 Core Profile API for SceneKit rendering in macOS. |
|
| openGLCore41 | number | Use the OpenGL 4.1 Core Profile API for SceneKit rendering in macOS. |
|
| webGL | number | Use the OpenGL 4.1 Core Profile API for SceneKit rendering in macOS. |
public SCNSceneSourceStatus: Object source
Constants identifying phases of SceneKit’s scene loading process, used in a SCNSceneSourceStatusHandler block.
Properties:
| Name | Type | Attribute | Description |
| error | number | An error occurred when SceneKit attempted to load the scene. |
|
| parsing | number | SceneKit has begun deserializing the source file. |
|
| validating | number | SceneKit has begun validating the scene file’s format. |
|
| processing | number | SceneKit has begun generating scene graph objects from the scene file’s contents. |
|
| complete | number | SceneKit has successfully finished loading the scene file’s contents. |
public SCNShaderModifierEntryPoint: Object source
Properties:
| Name | Type | Attribute | Description |
| fragment | string | Use this entry point to change the color of a fragment after all other shading has been performed. |
|
| geometry | string | Use this entry point to deform a geometry’s surface or alter its vertex attributes. |
|
| lightingModel | string | Use this entry point to provide a custom lighting equation. |
|
| surface | string | Use this entry point to modify the surface properties of a material before lighting is computed. |
public SCNShadowMode: Object source
Options for SceneKit’s rendering of shadows cast by a light, used by the shadowMode property.
public SCNTransparencyMode: Object source
The modes SceneKit uses to calculate the opacity of pixels rendered with a material, used by the transparencyMode property.
public SCNWrapMode: Object source
Modes to apply to texture wrapping, used by the wrapT and wrapS properties.
Properties:
| Name | Type | Attribute | Description |
| clamp | number | Texture coordinates are clamped to the range from 0.0 to 1.0, inclusive. |
|
| repeat | number | Texture sampling uses only the fractional part of texture coordinates, passing through the range from 0.0 to (but not including) 1.0. |
|
| clampToBorder | number | Texture sampling uses texture colors for coordinates in the range from 0.0 to 1.0 (inclusive) and the material property’s borderColor value otherwise. |
|
| mirror | number | Texture sampling of texture coordinates outside range from 0.0 to 1.0 should behave as if the range reverses before repeating. |
public SKActionTimingMode: Object source
The modes that an action can use to adjust the apparent timing of the action.
Properties:
| Name | Type | Attribute | Description |
| linear | number | Specifies linear pacing. Linear pacing causes an animation to occur evenly over its duration. |
|
| easeIn | number | Specifies ease-in pacing. Ease-in pacing causes the animation to begin slowly and then speed up as it progresses. |
|
| easeOut | number | Specifies ease-out pacing. Ease-out pacing causes the animation to begin quickly and then slow as it completes. |
|
| easeInEaseOut | number | Specifies ease-in ease-out pacing. An ease-in ease-out animation begins slowly, accelerates through the middle of its duration, and then slows again before completing. |
public SKBlendMode: Object source
The modes that describe how the source and destination pixel colors are used to calculate the new destination color.
Properties:
| Name | Type | Attribute | Description |
| alpha | number | The source and destination colors are blended by multiplying the source alpha value. |
|
| add | number | The source and destination colors are added together. |
|
| subtract | number | The source color is subtracted from the destination color. |
|
| multiply | number | The source color is multiplied by the destination color. |
|
| multiplyX2 | number | The source color is multiplied by the destination color and then doubled. |
|
| screen | number | The source color is added to the destination color times the inverted source color. |
|
| replace | number | The source color replaces the destination color. |
public SKLabelVerticalAlignmentMode: Object source
Options for aligning text vertically.
Properties:
| Name | Type | Attribute | Description |
| baseline | number | Positions the text so that the font’s baseline lies on the node’s origin. |
|
| center | number | Centers the text vertically on the node’s origin. |
|
| top | number | Positions the text so that the top of the text is on the node’s origin. |
|
| bottom | number | Positions the text so that the bottom of the text is on the node’s origin. |
public SKSceneScaleMode: Object source
The modes that determine how the scene’s area is mapped to the view that presents it.
Properties:
| Name | Type | Attribute | Description |
| fill | number | Each axis of the scene is scaled independently so that each axis in the scene exactly maps to the length of that axis in the view. |
|
| aspectFill | number | The scaling factor of each dimension is calculated and the larger of the two is chosen. Each axis of the scene is scaled by the same scaling factor. This guarantees that the entire area of the view is filled but may cause parts of the scene to be cropped. |
|
| aspectFit | number | The scaling factor of each dimension is calculated and the smaller of the two is chosen. Each axis of the scene is scaled by the same scaling factor. This guarantees that the entire scene is visible but may require letterboxing in the view. |
|
| resizeFill | number | The scene is not scaled to match the view. Instead, the scene is automatically resized so that its dimensions always match those of the view. |
public SKTextureFilteringMode: Object source
Texture filtering modes to use when the texture is drawn in a size other than its native size.
Properties:
| Name | Type | Attribute | Description |
| nearest | number | Each pixel is drawn using the nearest point in the texture. This mode is faster, but the results are often pixelated. |
|
| linear | number | Each pixel is drawn by using a linear filter of multiple texels in the texture. This mode produces higher quality results but may be slower. |


This page has a sticky ad—it sticks to the bottom of the page, and it's dismissable.
Sticky ads are created by wrapping an amp-ad inside an amp-sticky-ad component, like this:
<amp-sticky-ad layout="nodisplay"> <amp-ad width="320" height="50" type="doubleclick" data-slot="/12345678/sticky"> </amp-ad> </amp-sticky-ad>
Following this brief diversion, the sole purpose of which is to ensure that there is enough content so that there's more than one viewport of content (lorem ipsum meh), we'll see a sticky ad.
We will, in fact, be coming to the end of this diversion very soon, very soon indeed. In the meantime, I wanted to tell you something: "Meow" means "woof" in cat."
Following this brief diversion, the sole purpose of which is to ensure that there is enough content so that there's more than one viewport of content (lorem ipsum meh), we'll see a sticky ad.
We will, in fact, be coming to the end of this diversion very soon, very soon indeed. In the meantime, I wanted to tell you something: "Meow" means "woof" in cat."


Investigation
Part 1: How to behave in the office
World exclusive
New Column!
Timeless!
Plus! How to choose your next intage piece
Summer chic
(Ryan gosling wears them)