“For fast and consistent setup night after night we count on tune-bot. No matter the city or venue, simply pull up your saved settings and soundcheck is a breeze.”
“For fast and consistent setup night after night we count on tune-bot. No matter the city or venue, simply pull up your saved settings and soundcheck is a breeze.”


Class LineBreaks
Located at ext-view-helper-linebreaks/src/MvcCore/Ext/View/Helpers/LineBreaks.php
public
|
#
GetInstance(
Create view helper instance. To configure view helper instance, create it by this method in your $baseController->preDispatch(); method, after view instance inside controller is created, then you can configure anything you want. If Controller contains static property 'Lang', language for this view helper will be loaded from this property. |
public
|
#
__construct(
Create view helper instance. To configure view helper instance, create it by this method in your $baseController->preDispatch(); method, after view instance inside controller is created, then you can configure anything you want. If Controller contains static property 'Lang', language for this view helper will be loaded from this property. |
public
|
#
SetWeekWords( string $weekWords, string $lang = '' )
Set weak words, where you need to place a HTML space entity, to not break line after each configured weak word in processing text. All words has to be configured as single string with all weak words separated by comma character without any space. |
public
|
#
SetShortcuts( string[] $shortcuts, string $lang = '' )
Set special shortcuts for specific language to not have any line break inside. If language is not specified, there is used default language from controller instance. |
public
|
#
SetUnits( string $units )
Set units, where you need to place a HTML space entity, to not break line before each configured unit where is founded digit character before unit and whitespace before in source text. All units has to be configured as single string with all units separated by comma character without any space. |
protected
array
|
#
getWeekWordsUnitsAndShortcuts( string $lang )
Get weak words as array of strings, units and shortcuts. as array of string for currently processed language. |
public
string
|
#
LineBreaks( string $text, string $lang = "" )
Process configured weak words and units and place HTML space entity where is necessary to not line break source text where it's not wanted. |
protected
|
#
processWeakWord( string $word )
Process single weak word - place HTML space entity where is necessary to not line break source text where it's not wanted. |
string |
VERSION
MvcCore Extension - View Helper - Line Breaks - version: Comparation by PHP function version_compare(); |
#
'4.2.0'
|
public
array
|
$WeekWords
Weak words by international language code as array key. Weak words are words, where you dont't want to have a line break after. Weak words have to be configured as string with all weak words separated by comma character without any spaces. |
#
array(
'en' => 'a,an,the,and,but,or,when,of,in,to,with',
// single syllable conjunctions for Czech/Slovak
"cs" => "a,ač,aj,ak,ať,ba,co,či,do,i,k,ke,ku,o,pro,při,s,sa,se,si,sú,v,ve,z,za,ze,že",
)
|
public
array
|
$Shortcuts
Special shortcuts to not have any line break inside, keyed by language. |
#
array(
"cs" => array('př. kr.', 'př. n. l.', 's. r. o.', 'a. s.', 'v. o. s.', 'o. s. ř.',),
)
|
public
string
|
$Units
Units are very short words, where you dont't want to have a line break before, where is any digit before catched unit word and space before catched unit word. Units have to be configured as string with all units separated by comma character without any spaces. |
#
"%,‰,mm,cm,dm,m,km,g,dkg,kg,t,ar,ha,ml,dcl,l,cm²,m²,km²,cm³,m³,°C,°F,K"
|
protected static
|
$instance
Singleton instance. |
|
protected
string
|
$lang
Language used for text processing as default. All text processing shoud be called with custom language value. |
#
""
|
protected
string
|
$text
Source text currently processed. |
#
""
|
protected
array
|
$weekWords
Store with weak words exploded into single strings, keyed by language. |
#
array()
|
protected
string[]
|
$units
Exploded units as array of string to be processed in source text. |
#
array()
|
protected
string[]
|
$shortcuts
Prepared shortcuts with no-line breaking spaces, keyed by language. |
#
array()
|


Sam Thompson calls out footballers for messaging girlfriend Zara McDermott
Made In Chelsea’s Sam Thompson has jokingly called out Manchester United player Brandon Williams and former player Patrice Evra after he allegedly caught both contacting his girlfriend, Love Island star Zara McDermott.
The two officially got together earlier this year, and are no strangers to a cheeky romantic selfie or two shared to social media, as they happily give fans a glimpse into their relationship.
Sam has since noted that his partner seems to be getting a lot of attention from football players recently, as he claims both Brandon and Patrice, who is married to wife Sandra Evra, DMd her on Instagram.
Advertisement Advertisement
Taking to his Instagram story, the 27–year-old decided to grill the two over their actions, although no harm was done, as he joked that he has always ‘dreamed’ of talking to footballers, but is only able to do so through his girlfriend’s phone.
‘I’ve always dreamed of footballers, but no one ever replies to me,’ he begins to say.
‘The only way I can talk to them is through my girlfriend’s phones on the DMs.’
As he shows the audience the messages that the Man Utd players had sent, he congratulates Brandon on his recent debut to the team.
‘We’ve got Brandon Williams today who is actually sick and got his debut, congratulations Brandon,’ he continues. ‘Little eye emoji, yes boy. Love that, classic stuff.
‘We’ve got Patrice Evra on there who’s like a hero of mine and who I absolutely love. He’s sent of one of those things where he says, “I love this game.”
‘Why don’t they reply to me, but slide into her DMs? I’m just as good.’
The reality star then makes a plea for players of Chelsea Football Club to get in contact – a club much closer to his home.
‘It’s always Man United, but where are the Chelsea boys?’ he questions. ‘Mason Mount, slide in. Or Tammy Abraham, you’re my hero, come on.’
Advertisement Advertisement
Metro.co.uk has contacted reps for comment.
Got a showbiz story?
If you've got a story, video or pictures get in touch with the Metro.co.uk Entertainment team by emailing us<EMAIL_ADDRESS>calling 020 3615 2145 or by visiting our Submit Stuff page - we'd love to hear from you.


1
1
The couch
If you want to grow, get outside
your comfort zone.
OK
2
Failing is learning
Pick yourself up, dust yourself off,
and start again.
OK
3
3
Flowers and rainbows
Always be yourself,
unless you can be a unicorn.
OK


opsimsummary.summarize_opsim module¶
Class to summarize the OpSim output
-
class
opsimsummary.summarize_opsim.
SynOpSim
(pointings, opsimversion='lsstv3', raCol='ditheredRA', decCol='ditheredDec', angleUnit='degrees', indexCol='obsHistID', usePointingTree=False, subset='None')[source]¶ Bases:
object
Class with a summary of OpSim data base output.
Attributes: pointingTree
if self.usePointingTree is False, this is set to None. Otherewise
Methods
df_subset_columns
(df, subset)Return the dataframe df with only a subset of the columns as specified in the list subset fromOpSimDB
(dbname[, subset, opsimversion, …])Class Method to instantiate this from an OpSim sqlite database output which largely uses OpSimOutput.fromOpSimDB observedVisitsinRegion
([nside, nest, …])return a pd.DataFrame with the healpixelID=’hid’, ra and dec of the healpixels ‘hpix_ra’, ‘hpix_dec’ in radians, and count the number of visits for all healpixels that have visits satisfying minVisits <= count <= maxVisits . pointingsEnclosing
(ra, dec[, circRadius, …])Helper method returning a generator of pointings overlapping with circles of radius circRadius around a sequence of positions given in terms of `ra and dec. sampleRegion
([numFields, minVisits, nest, …])This method samples a number numFields fields provided they have a minimal number of visits minVisits -
static
df_subset_columns
(df, subset)[source]¶ Return the dataframe df with only a subset of the columns as specified in the list subset
Parameters: - df : pd.DataFrame
the input dataframe to be returned with subset of the columns
- subset: (list of strings| ‘all’)
if ‘all’, df is returned. Otherwise, return df[subset], with the same index.
- ..note: subset=[] returns only the index
-
classmethod
fromOpSimDB
(dbname, subset='combined', opsimversion='lsstv3', zeroDDFDithers=True, user_propIDs=None, dithercolumns=None, add_dithers=False, tableNames=('Summary', 'Proposal'), usePointingTree=False, **kwargs)[source]¶ Class Method to instantiate this from an OpSim sqlite database output which largely uses OpSimOutput.fromOpSimDB
Parameters: - dbname : string
absolute path to database file
- subset : string, optional, defaults to ‘combined’
one of {‘_all’, ‘unique_all’, ‘wfd’, ‘ddf’, ‘combined’} determines a sequence of propIDs for selecting observations appropriate for the OpSim database in use
- propIDs : sequence of integers, defaults to None
proposal ID values. If present, overrides the use of subset
- tableNames : tuple of strings, defaults to (‘Summary’, ‘Proposal’)
names of tables read from the OpSim database
- zeroDDFDithers : bool, defaults to True
if True, set dithers in DDF to 0, by setting ditheredRA, ditheredDec to fieldRA, fieldDec
- opsimversion: {‘lsstv3’|’sstf’|’lsstv4’}
version of OpSim corresponding to the output format.
- dithercolumns: `pd.DataFrame`, defaults to None
a pandas dataframe with the columns ditheredRA, ditheredDec and index obsHistID
- add_dithers : Bool, defaults to False
if add_dithers is True, the ditheredRA, ditheredDec columns will be removed and additional dithered columns either by dithercolumns or get_dithercolumns will be used.
-
observedVisitsinRegion
(nside=256, nest=True, minVisits=1, maxVisits=None, outFile=None, writeFile=False)[source]¶ return a pd.DataFrame with the healpixelID=’hid’, ra and dec of the healpixels ‘hpix_ra’, ‘hpix_dec’ in radians, and count the number of visits for all healpixels that have visits satisfying minVisits <= count <= maxVisits . This will also write out a csv outFile clobbering past version with this dataframe.
-
pointingTree
¶ if self.usePointingTree is False, this is set to None. Otherewise contains a PointingTree Object. This contains a BallTree of the pointings, and a method to find all pointings enclosed in a given radii.
-
pointingsEnclosing
(ra, dec, circRadius=0.0, pointingRadius=1.75, usePointingTree=None, transform=None, subset='all')[source]¶ Helper method returning a generator of pointings overlapping with circles of radius circRadius around a sequence of positions given in terms of `ra and dec. The calculation uses a Tree to make the calculations more efficient if usePointingTree is True, or uses direct calculations if this variable is set to False. A user may choose to obtain a subset of the pointing by supplying a subset in the form a list via the parameter subset.
Parameters: - ra : np.ndarray or a float, unit of degrees
a float or an array of floats representing the ra values
- dec : np.ndarray or a float, unit of degrees
a float or an array of floats representing the dec values
- circRadius: float, unit of degrees, defaults to 0.
a circle around each of the
- pointingRadius : degrees, defaults to 1.75
radius of the field of view
- usePointingTree: {None|True|False}, defaults to `None`
if None, usePointingTree = self.usePointingTree else the variable takes the {True|False} values assigned
- transform: function, Not implemented
- subset: (list of strings| ‘all’)
if ‘all’, df is returned. Otherwise, return df[subset], with the same index.
Returns: - A generator with the pointings that overlap with ra, dec
- .. note: 1. the values in the generator may be accessed by next(generator)
- subset=[] returns only the index
-
sampleRegion
(numFields=50000, minVisits=1, nest=True, nside=256, rng=<mtrand.RandomState object>, outfile=None, usePointingTree=True, subset='wfd', mwebv=0.0)[source]¶ This method samples a number numFields fields provided they have a minimal number of visits minVisits
Parameters: - numFields : int, mandatory
Number of fields to sample
- minVisits : int, number, defaults to 1
minimal number of visits required to consider the tile.
- nest : Bool, defaults to True
use the nest method rather than ring
- nside : int, defaults to 256
Healpix.NSIDE
- rng :
- outfile :
- usePointingTree : Bool, defaults to True
whether to use PointingTree or not
- subset : {‘wfd’|’ddf’|’combined’}
which subset to use.
-
class
opsimsummary.summarize_opsim.
PointingTree
(pointings, raCol='_ra', decCol='_dec', indexCol='obsHistID', leafSize=50)[source]¶ Bases:
object
Methods
pointingsEnclosing
(ra, dec, circRadius[, …])Parameters: validatePointings
(pointings, raCol, decCol)Validates pointings as having required properties according to list of tests below -
pointingsEnclosing
(ra, dec, circRadius, pointingRadius=1.75)[source]¶ Parameters: - ra : float or sequence, degrees
ra of the coordinates
- dec : float or sequence, degrees
dec of the coordinates
- circRadius : degrees, mandatory
radius of circle around point
- pointingRadius : degrees, defaults to 1.75
radius of the field of view
-
static
validatePointings
(pointings, raCol, decCol)[source]¶ Validates pointings as having required properties according to list of tests below
Parameters: - raCol : column name that should be in pointings
- decCol : column name that should be in pointings
- List of Tests:
- 1. raCol and decCol should be in the columns of `pointings`
-
-
opsimsummary.summarize_opsim.
add_simlibCols
(opsimtable, pixSize=0.2)[source]¶ Parameters: - opsimtable: `~pandas.DataFrame` object, mandatory
containing an opsim Output of version X. The main requirements here are that the columns ‘finSeeing’, ‘fiveSigmaDepth’, and ‘filtSkyBrightness’ are defined. If the opsim output has differently named variables or transformed variables, these should be changed to meet the criteria.
- pixSize: float, optional, defaults to LSST value of 0.2
pixel Size in units of arc seconds.
Returns: - DataFrame with additional columns of ‘simLibPsf’, ‘simLibZPTAVG’, and
- ‘simLibSkySig’
- .. note :: This was written from a piece of f77 code by David
Cinabro sent by email on May 26, 2015.


| ||||||||||||||||||||
SSL_CTX_set_verify(3)
NAMESSL_CTX_set_verify, SSL_set_verify, SSL_CTX_set_verify_depth, SSL_set_verify_depth - set peer certificate verification parameters
SYNOPSIS#include <openssl/ssl.h> void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, int (*verify_callback)(int, X509_STORE_CTX *)); void SSL_set_verify(SSL *s, int mode, int (*verify_callback)(int, X509_STORE_CTX *)); void SSL_CTX_set_verify_depth(SSL_CTX *ctx,int depth); void SSL_set_verify_depth(SSL *s, int depth); int verify_callback(int preverify_ok, X509_STORE_CTX *x509_ctx);
DESCRIPTION
NOTESThe verification of certificates can be controlled by a set of logically or'ed mode flags:
Exactly one of the mode flags SSL_VERIFY_NONE and SSL_VERIFY_PEER must be set at any time.
The actual verification procedure is performed either using the built-in
verification procedure or using another application provided verification
function set with
SSL_CTX_set_cert_verify_callback(3). The following descriptions apply in the case of the built-in procedure.
An application provided procedure also has access to the verify depth
information and the
The verify_callback function is used to control the behaviour when the SSL_VERIFY_PEER flag is set. It must be supplied by the application and receives two arguments: preverify_ok indicates, whether the verification of the certificate in question was passed (preverify_ok=1) or not (preverify_ok=0). x509_ctx is a pointer to the complete context used for the certificate chain verification. The certificate chain is checked starting with the deepest nesting level (the root CA certificate) and worked upward to the peer's certificate. At each level signatures and issuer attributes are checked. Whenever a verification error is found, the error number is stored in x509_ctx and verify_callback is called with preverify_ok=0. By applying X509_CTX_store_* functions verify_callback can locate the certificate in question and perform additional steps (see EXAMPLES). If no error is found for a certificate, verify_callback is called with preverify_ok=1 before advancing to the next level. The return value of verify_callback controls the strategy of the further verification process. If verify_callback returns 0, the verification process is immediately stopped with ``verification failed'' state. If SSL_VERIFY_PEER is set, a verification failure alert is sent to the peer and the TLS/SSL handshake is terminated. If verify_callback returns 1, the verification process is continued. If verify_callback always returns 1, the TLS/SSL handshake will not be terminated with respect to verification failures and the connection will be established. The calling process can however retrieve the error code of the last verification error using SSL_get_verify_result(3) or by maintaining its own error storage managed by verify_callback. If no verify_callback is specified, the default callback will be used. Its return value is identical to preverify_ok, so that any verification failure will lead to a termination of the TLS/SSL handshake with an alert message, if SSL_VERIFY_PEER is set.
BUGSIn client mode, it is not checked whether the SSL_VERIFY_PEER flag is set, but whether SSL_VERIFY_NONE is not set. This can lead to unexpected behaviour, if the SSL_VERIFY_PEER and SSL_VERIFY_NONE are not used as required (exactly one must be set at any time). The certificate verification depth set with SSL[_CTX]_verify_depth() stops the verification at a certain depth. The error message produced will be that of an incomplete certificate chain and not X509_V_ERR_CERT_CHAIN_TOO_LONG as may be expected.
RETURN VALUESThe SSL*_set_verify*() functions do not provide diagnostic information.
EXAMPLESThe following code sequence realizes an example verify_callback function that will always continue the TLS/SSL handshake regardless of verification failure, if wished. The callback realizes a verification depth limit with more informational output. All verification errors are printed; information about the certificate chain is printed on request. The example is realized for a server that does allow but not require client certificates. The example makes use of the ex_data technique to store application data into/retrieve application data from the SSL structure (see SSL_get_ex_new_index(3), SSL_get_ex_data_X509_STORE_CTX_idx(3)). ... typedef struct { int verbose_mode; int verify_depth; int always_continue; } mydata_t; int mydata_index; ... static int verify_callback(int preverify_ok, X509_STORE_CTX *ctx) { char buf[256]; X509 *err_cert; int err, depth; SSL *ssl; mydata_t *mydata; err_cert = X509_STORE_CTX_get_current_cert(ctx); err = X509_STORE_CTX_get_error(ctx); depth = X509_STORE_CTX_get_error_depth(ctx); /* * Retrieve the pointer to the SSL of the connection currently treated * and the application specific data stored into the SSL object. */ ssl = X509_STORE_CTX_get_ex_data(ctx, SSL_get_ex_data_X509_STORE_CTX_idx()); mydata = SSL_get_ex_data(ssl, mydata_index); X509_NAME_oneline(X509_get_subject_name(err_cert), buf, 256); /* * Catch a too long certificate chain. The depth limit set using * SSL_CTX_set_verify_depth() is by purpose set to "limit+1" so * that whenever the "depth>verify_depth" condition is met, we * have violated the limit and want to log this error condition. * We must do it here, because the CHAIN_TOO_LONG error would not * be found explicitly; only errors introduced by cutting off the * additional certificates would be logged. */ if (depth > mydata->verify_depth) { preverify_ok = 0; err = X509_V_ERR_CERT_CHAIN_TOO_LONG; X509_STORE_CTX_set_error(ctx, err); } if (!preverify_ok) { printf("verify error:num=%d:%s:depth=%d:%s\n", err, X509_verify_cert_error_string(err), depth, buf); } else if (mydata->verbose_mode) { printf("depth=%d:%s\n", depth, buf); } /* * At this point, err contains the last verification error. We can use * it for something special */ if (!preverify_ok && (err == X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT)) { X509_NAME_oneline(X509_get_issuer_name(ctx->current_cert), buf, 256); printf("issuer= %s\n", buf); } if (mydata->always_continue) return 1; else return preverify_ok; } ... mydata_t mydata; ... mydata_index = SSL_get_ex_new_index(0, "mydata index", NULL, NULL, NULL); ... SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER|SSL_VERIFY_CLIENT_ONCE, verify_callback); /* * Let the verify_callback catch the verify_depth error so that we get * an appropriate error in the logfile. */ SSL_CTX_set_verify_depth(verify_depth + 1); /* * Set up the SSL specific data into "mydata" and store it into th SSL * structure. */ mydata.verify_depth = verify_depth; ... SSL_set_ex_data(ssl, mydata_index, &mydata); ... SSL_accept(ssl); /* check of success left out for clarity */ if (peer = SSL_get_peer_certificate(ssl)) { if (SSL_get_verify_result(ssl) == X509_V_OK) { /* The client sent a certificate which verified OK */ } }
SEE ALSOssl(3), SSL_new(3), SSL_CTX_get_verify_mode(3), SSL_get_verify_result(3), SSL_CTX_load_verify_locations(3), SSL_get_peer_certificate(3), SSL_CTX_set_cert_verify_callback(3), SSL_get_ex_data_X509_STORE_CTX_idx(3), SSL_get_ex_new_index(3) | ||||||||||||||||||||


This intention removes a class from implements (extends) list with all methods, which implement (override) methods from it.


| Name | Item Name | Detail | Operation |
|---|---|---|---|
| Alvin | Eclair | more detail | edit delete |
| Alan | Jellybean | more detail | edit delete |
| Jonathan | Lollipop | more detail | edit delete |
- Samira Rezaei
-<PHONE_NUMBER>78
- my account
- sign out
top-height
| Name | Item Name | Detail | Operation |
|---|---|---|---|
| Alvin | Eclair | more detail | edit delete |
| Alan | Jellybean | more detail | edit delete |
| Jonathan | Lollipop | more detail | edit delete |


Techpreneur Victor Asemota shares personal experience as he speaks about forgiveness
- A Nigerian social media user, Victor Asemota, has used his platform to share words of encouragement with members of the online community
- The individual referenced some of his personal life struggles to drive home his point
- Asemota also approached the topic of forgiveness and the sacrifices he had to make before he married his wife
A Nigerian social media user with a verified account on micro messaging platform, Twitter, identified as Victor Asemota, recently flooded his timeline with several tweets, as he encouraged members of the internet community.
Asemota who is a techpreneur according to his Twitter bio, started his long ‘sermon’ by recounting how he was once in a bad financial situation, and how his life had taken a turn after he prayed to the lord.
He said his prayers had been answered by someone who had owed him some money in the past showing up, and paying his debt. This same individual also gave him a deal that turned his life around for good.
PAY ATTENTION: Read best news on Nigeria's #1 news app
See tweets below:
Taking on the topic of forgiveness, Asemota disclosed that he has made it a way of life to always forgive those that wronged him. He added that just like forgiving people, he also learnt to put away his pride and ask for forgiveness.
"I also learned to ask for forgiveness too. I learned to remove pride. Before I met my wife, I had to go celibate for almost 2 years and apologized to every girl I had wronged. I asked them for forgiveness. I decided never to lie after that or cheat on women. My life changed," his post read.
PAY ATTENTION: Get your daily relationship tips and advice on Africa Love Aid group
See the rest of his tweets below:
PAY ATTENTION: NAIJ.com upgrades to Legit.ng: a letter from our Editor-in-Chief Bayo Olupohunda
Still on the topic of forgiveness, Legit.ng compiled a report that has a selection of the best forgiveness quotes that guarantee to ease the pain and prepare an individual for a peaceful and fresh start. The powerful messages in the quotes helps people learn that the past cannot be changed, but the future holds all possibilities.
NAIJ.com (naija.ng) -> Legit.ng We have upgraded to serve you better
Faces of Nigeria: They killed my family but I have forgiven them | Legit TV


Full-stack developer with a research scientist background in the pharmaceutical industry and a passion for learning. Known for depth and breadth of research skill complete with a unique ability to develop software tools and mine data in order to help companies achieve their business objectives.
Previously working with laboratory robotic automation to perform early discovery pharmaceutical experiments has inspired me to learn full-stack web development. I am enjoying building apps and bots with my bootcamp cohorts and continuing the learning journey. In my free time I love to do endurance sports and travel.
Tools used were Jquery and Bootstrap. Used quotesondesign.com API data.
Tools used were Jquery and Bootstrap. Used wikipedia.com API data to get array of search results.
Tools used were Jquery and bootstrap. Used quotesondesign.com API data.
Tools used were JavaScript and Jquery. Modeled after the google calculator.
Tools used were JavaScript, Jquery and Bootstrap.
Tools used were JavaScript, Jquery, Bootstrap and the Weather Underground API.
Tools used were JavaScript and Jquery.
Tools used were JavaScript, Jquery, Bootstrap and the Twitch API to receive JSON for the results.


StreamingContext(sparkContext[, …])
StreamingContext
Main entry point for Spark Streaming functionality.
DStream(jdstream, ssc, jrdd_deserializer)
DStream
A Discretized Stream (DStream), the basic abstraction in Spark Streaming, is a continuous sequence of RDDs (of the same type) representing a continuous stream of data (see RDD in the Spark core documentation for more details on RDDs).
RDD
StreamingContext.addStreamingListener(…)
StreamingContext.addStreamingListener
Add a [[org.apache.spark.streaming.scheduler.StreamingListener]] object for receiving system events related to streaming.
StreamingContext.awaitTermination([timeout])
StreamingContext.awaitTermination
Wait for the execution to stop.
StreamingContext.awaitTerminationOrTimeout(timeout)
StreamingContext.awaitTerminationOrTimeout
StreamingContext.checkpoint(directory)
StreamingContext.checkpoint
Sets the context to periodically checkpoint the DStream operations for master fault-tolerance.
StreamingContext.getActive()
StreamingContext.getActive
Return either the currently active StreamingContext (i.e., if there is a context started but not stopped) or None.
StreamingContext.getActiveOrCreate(…)
StreamingContext.getActiveOrCreate
Either return the active StreamingContext (i.e.
StreamingContext.getOrCreate(checkpointPath, …)
StreamingContext.getOrCreate
Either recreate a StreamingContext from checkpoint data or create a new StreamingContext.
StreamingContext.remember(duration)
StreamingContext.remember
Set each DStreams in this context to remember RDDs it generated in the last given duration.
StreamingContext.sparkContext
Return SparkContext which is associated with this StreamingContext.
StreamingContext.start()
StreamingContext.start
Start the execution of the streams.
StreamingContext.stop([stopSparkContext, …])
StreamingContext.stop
Stop the execution of the streams, with option of ensuring all received data has been processed.
StreamingContext.transform(dstreams, …)
StreamingContext.transform
Create a new DStream in which each RDD is generated by applying a function on RDDs of the DStreams.
StreamingContext.union(*dstreams)
StreamingContext.union
Create a unified DStream from multiple DStreams of the same type and same slide duration.
StreamingContext.binaryRecordsStream(…)
StreamingContext.binaryRecordsStream
Create an input stream that monitors a Hadoop-compatible file system for new files and reads them as flat binary files with records of fixed length.
StreamingContext.queueStream(rdds[, …])
StreamingContext.queueStream
Create an input stream from a queue of RDDs or list.
StreamingContext.socketTextStream(hostname, port)
StreamingContext.socketTextStream
Create an input from TCP source hostname:port.
StreamingContext.textFileStream(directory)
StreamingContext.textFileStream
Create an input stream that monitors a Hadoop-compatible file system for new files and reads them as text files.
DStream.pprint([num])
DStream.pprint
Print the first num elements of each RDD generated in this DStream.
DStream.saveAsTextFiles(prefix[, suffix])
DStream.saveAsTextFiles
Save each RDD in this DStream as at text file, using string representation of elements.
DStream.cache()
DStream.cache
Persist the RDDs of this DStream with the default storage level (MEMORY_ONLY).
DStream.checkpoint(interval)
DStream.checkpoint
Enable periodic checkpointing of RDDs of this DStream
DStream.cogroup(other[, numPartitions])
DStream.cogroup
Return a new DStream by applying ‘cogroup’ between RDDs of this DStream and other DStream.
DStream.combineByKey(createCombiner, …[, …])
DStream.combineByKey
Return a new DStream by applying combineByKey to each RDD.
DStream.context()
DStream.context
Return the StreamingContext associated with this DStream
DStream.count()
DStream.count
Return a new DStream in which each RDD has a single element generated by counting each RDD of this DStream.
DStream.countByValue()
DStream.countByValue
Return a new DStream in which each RDD contains the counts of each distinct value in each RDD of this DStream.
DStream.countByValueAndWindow(…[, …])
DStream.countByValueAndWindow
Return a new DStream in which each RDD contains the count of distinct elements in RDDs in a sliding window over this DStream.
DStream.countByWindow(windowDuration, …)
DStream.countByWindow
Return a new DStream in which each RDD has a single element generated by counting the number of elements in a window over this DStream.
DStream.filter(f)
DStream.filter
Return a new DStream containing only the elements that satisfy predicate.
DStream.flatMap(f[, preservesPartitioning])
DStream.flatMap
Return a new DStream by applying a function to all elements of this DStream, and then flattening the results
DStream.flatMapValues(f)
DStream.flatMapValues
Return a new DStream by applying a flatmap function to the value of each key-value pairs in this DStream without changing the key.
DStream.foreachRDD(func)
DStream.foreachRDD
Apply a function to each RDD in this DStream.
DStream.fullOuterJoin(other[, numPartitions])
DStream.fullOuterJoin
Return a new DStream by applying ‘full outer join’ between RDDs of this DStream and other DStream.
DStream.glom()
DStream.glom
Return a new DStream in which RDD is generated by applying glom() to RDD of this DStream.
DStream.groupByKey([numPartitions])
DStream.groupByKey
Return a new DStream by applying groupByKey on each RDD.
DStream.groupByKeyAndWindow(windowDuration, …)
DStream.groupByKeyAndWindow
Return a new DStream by applying groupByKey over a sliding window.
DStream.join(other[, numPartitions])
DStream.join
Return a new DStream by applying ‘join’ between RDDs of this DStream and other DStream.
DStream.leftOuterJoin(other[, numPartitions])
DStream.leftOuterJoin
Return a new DStream by applying ‘left outer join’ between RDDs of this DStream and other DStream.
DStream.map(f[, preservesPartitioning])
DStream.map
Return a new DStream by applying a function to each element of DStream.
DStream.mapPartitions(f[, preservesPartitioning])
DStream.mapPartitions
Return a new DStream in which each RDD is generated by applying mapPartitions() to each RDDs of this DStream.
DStream.mapPartitionsWithIndex(f[, …])
DStream.mapPartitionsWithIndex
Return a new DStream in which each RDD is generated by applying mapPartitionsWithIndex() to each RDDs of this DStream.
DStream.mapValues(f)
DStream.mapValues
Return a new DStream by applying a map function to the value of each key-value pairs in this DStream without changing the key.
DStream.partitionBy(numPartitions[, …])
DStream.partitionBy
Return a copy of the DStream in which each RDD are partitioned using the specified partitioner.
DStream.persist(storageLevel)
DStream.persist
Persist the RDDs of this DStream with the given storage level
DStream.reduce(func)
DStream.reduce
Return a new DStream in which each RDD has a single element generated by reducing each RDD of this DStream.
DStream.reduceByKey(func[, numPartitions])
DStream.reduceByKey
Return a new DStream by applying reduceByKey to each RDD.
DStream.reduceByKeyAndWindow(func, invFunc, …)
DStream.reduceByKeyAndWindow
Return a new DStream by applying incremental reduceByKey over a sliding window.
DStream.reduceByWindow(reduceFunc, …)
DStream.reduceByWindow
Return a new DStream in which each RDD has a single element generated by reducing all elements in a sliding window over this DStream.
DStream.repartition(numPartitions)
DStream.repartition
Return a new DStream with an increased or decreased level of parallelism.
DStream.rightOuterJoin(other[, numPartitions])
DStream.rightOuterJoin
Return a new DStream by applying ‘right outer join’ between RDDs of this DStream and other DStream.
DStream.slice(begin, end)
DStream.slice
Return all the RDDs between ‘begin’ to ‘end’ (both included)
DStream.transform(func)
DStream.transform
Return a new DStream in which each RDD is generated by applying a function on each RDD of this DStream.
DStream.transformWith(func, other[, …])
DStream.transformWith
Return a new DStream in which each RDD is generated by applying a function on each RDD of this DStream and ‘other’ DStream.
DStream.union(other)
DStream.union
Return a new DStream by unifying data of another DStream with this DStream.
DStream.updateStateByKey(updateFunc[, …])
DStream.updateStateByKey
Return a new “state” DStream where the state for each key is updated by applying the given function on the previous state of the key and the new values of the key.
DStream.window(windowDuration[, slideDuration])
DStream.window
Return a new DStream in which each RDD contains all the elements in seen in a sliding window of time over this DStream.
KinesisUtils.createStream(ssc, …[, …])
KinesisUtils.createStream
Create an input stream that pulls messages from a Kinesis stream.
InitialPositionInStream.LATEST
InitialPositionInStream.TRIM_HORIZON


This installation will guide you through the setup process of GUIA.
There are only a view steps you have to perform to start right off!
Please read the next sites carefully.


Software Copyright © 2014 PxO Ink. Some Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
If you've learned from this repository and you wish to contribute to it monetarily, you can show your support by contacting the owner, contributing through Gratipay, or contributing through Patreon.
The Ice Framework is a modifiable and reusable proof of concept designed to provide a basic structure for implementing fluid and accessible website designs. Originally, Ice was designed to be a working alternative to other modern frameworks that focused too heavily on pixel-based grid systems. However, as Ice has progressed over time, it has become abundantly clear that frameworks should not try and reinvent design, but to provide a fast and scalable groundwork for the imagination to take advantage of.
Ice Framework comes packaged compiled and compressed for implementation. The following table describes what files are required for implementation, where they should be located, and what they are designed to accomplish. This example page can act as an HTML template outlining the structure Ice expects, as well as a how-to on implementing the Ice Framework.
| File | Description | Required |
|---|---|---|
css/stylesheet.css
|
Pre-compiled stylesheet containing all rules. | Yes |
js/modernizr.js
|
Pre-compiled custom Modernizr build. | No |
js/vendor.js
|
Compilation of vendor libraries. | No |
js/framework.js
|
Pre-compiled framework containing all JS. | No |
fonts/*
|
All of the necessary fonts for basic use. | No |
Here's an example of how a basic page structure might look:
<!DOCTYPE html>

<title>Title Tag</title>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" />
<meta name="HandheldFriendly" content="true" />
<meta name="MobileOptimized" content="320" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="icon" href="images/favicon.png" />
<link rel="shortcut icon" href="favicon.ico" />
<link rel="stylesheet" type="text/css" href="css/stylesheet.css" />

<-- Replace this with your custom HTML. -->

Because Ice is built to be a framework, and does not come packaged with a design, it's up to the developer how they want to modify or extend the framework. The core of the framework is entirely based on Sass, and is run through the task runner known as Gulp. Gulp is written to work with Node.js. If you're not familiar with these technologies, take a look at Travis Maynard's article here.
If you have npm
or yarn
previously installed, once you've cloned this
repository, you should simply need to install the dependencies found in the
package.json
file. Then you can begin working by calling gulp
for
production, or gulp --dev
for development.
Most common grid systems are designed around an arbitrary standard of 960px maximum width. This, coupled with the adoption of a mobile-first design strategy, has once again put pixel perfect design above organic architectural design. This methodology has inadvertently forced websites to cut back on innovative functionality in favor of simplistic form. Although effective on smaller resolution devices, it is the opinion of this author that this has significantly deteriorated the browsing experience on higher resolution devices. Ultimately, what these grid systems lack is functional scalability across a plethora of device widths.
Despite the fact that developing an accessible experience across a vast number of device widths is a complicated and difficult task, abandoning major functionality to attain said accessibility is not necessary. Ice hopes to introduce a conceptual argument in favor of highly scalable grid systems that are geared toward a desktop first experience. In doing so, it is expected that developers will be able to maintain a rich browsing experience for higher resolution devices, while also catering to the simplistic expectations found in smaller resolution devices.
In order to accomplish this level of scalability, five major breakpoints have been selected based on a variety of device width data as of Q1 2016. In order of greatest to least:
| Description | Selector | Breakpoint | Font Size Multiplier | Example |
|---|---|---|---|---|
| High Resolution | hd |
2160 | 1.60 | hd-6 |
| Desktop Resolution | des |
1440 | 1.60 | des-8 |
| Standard Devices | std |
1000 | 1.40 | std-10 |
| Tablet Devices | tab |
768 | 1.40 | tab-12 |
| Mobile Devices | mob |
640 | 1.20 | mob-14 |
| Legacy Phones | tel |
384 | 1.20 | tel-16 |

Lorem Ipsum Dolor

Sit Amet

Unordered 1

Unordered 2

Sub-List 1

Sub-List 2

Sub-Sub 1

Sub-Sub 2

Sub-List 3

Sub-List 4

Unordered 3

Unordered 4

Ordered 1

Ordered 2

Sub-List 1

Sub-List 2

Sub-Sub 1

Sub-Sub 2

Sub-List 3

Sub-List 4

Ordered 3

Ordered 4

Menu

Menu 1

Menu 2

Dropdown

Menu Three-One

Menu Three-Two

Menu Three-Dropdown

Menu Three-Three-One

Menu Three-Three-Two

Menu 4

Menu 5

Menu

Menu 1

Menu 2

Dropdown

Menu Three-One

Menu Three-Two

Menu Three-Dropdown

Menu Three-Three-One

Menu Three-Three-Two

Menu 4

Menu 5

Parent

Child

Current

1

2

3

4

5

…

8

Error: Lorem Ipsum Dolor Sit Amet.

Message: Lorem Ipsum Dolor Sit Amet.

Success: Lorem Ipsum Dolor Sit Amet.

Warning: Lorem Ipsum Dolor Sit Amet.

<button>Button</button>
<button class="highlight">Highlight</button>
<button class="focus">Focus</button>
<button class="warn">Warn</button>

Button
Highlight
Focus
Warn

Note that tables encapsulated in the table-container
class, will be responsive
horizontal scrolling tables on smaller devices.
| Column | Column | Column | Column |
|---|---|---|---|
| Row | Row | Row | $50.00 |
| Row | Row | Row | $50.00 |
| Foot | Foot | $100.00 |
| Column | Column | Column | Column |
|---|---|---|---|
| Row | Row | Row | $50.00 |
| Row | Row | Row | $50.00 |
| Foot | Foot | $100.00 |
| Column | Column | Column | Column |
|---|---|---|---|
| Row | Row | Row | $50.00 |
| Row | Row | Row | $50.00 |
| Foot | Foot | $100.00 |
| Column | Column | Column | Column |
|---|---|---|---|
| Row | Row | Row | $50.00 |
| Row | Row | Row | $50.00 |
| Foot | Foot | $100.00 |
| Column | Column | Column | Column |
|---|---|---|---|
| Row | Row | Row | $50.00 |
| Row | Row | Row | $50.00 |
| Foot | Foot | $100.00 |

Column
Column
Column
Column

Row
Row
Row
$50.00

Row
Row
Row
$50.00

Foot
Foot
$100.00

Both HTML5 Video and Audio elements are supported through built-in browser applets adjusted to act responsively.
FutureDeluxe – Intel Experiments (Embedded Vimeo)

Erik Schermer, Bas Icke, and Gary Berendsen – Analog Recycling VJ loops II (HTML5 Player)
<video controls>
<source src="https://archive.org/download/Analog_Recycling_VJ_Loops_II/Ar_8BIT_8_512kb.mp4" type="video/mp4" />
</video>
<audio controls>
<source<EMAIL_ADDRESS>type="audio/mp3" />
</audio>
The way of life can be free and beautiful. But we have lost the way.

The way of life can be free and beautiful. But we have lost the way.

Charlie Chaplin, The Great Dictator

While the JavaScript in Ice is not absolutely necessary for its operation, there is functionality that it provides that will help the user's overall experience. jQuery is the current library of choice for Ice, and most of the JavaScript herein depends on jQuery.
By default, menus for mobile devices depend on JavaScript being enabled.

To the top
No Scroll

Click this to toggle a hidden box.

This is your typical hidden content.

Curabitur eu justo et orci vehicula ornare. Sed mollis efficitur cursus. Interdum et malesuada fames ac ante ipsum primis in faucibus. Aenean eget euismod nisl. In dignissim turpis eu dui feugiat molestie. Nam aliquet, ex sed rutrum condimentum, nunc ligula aliquam quam, sed aliquet orci leo eget odio. Sed ex velit, elementum a tortor id, vestibulum fermentum metus.
Integer vestibulum ut nulla volutpat aliquet. Maecenas dictum sem sit amet consectetur bibendum. Aliquam molestie sapien quis arcu ullamcorper, at gravida purus facilisis. Cras nec auctor nisl. Integer varius neque quis mauris dapibus, vitae venenatis erat vehicula. Aliquam ullamcorper, orci ut semper mollis, dolor tortor lobortis risus, at suscipit sem felis quis quam. Nam eget purus purus.
Duis eu fringilla mi. Etiam lorem nisl, faucibus id ex in, pretium hendrerit nibh. Fusce fringilla, eros nec ultrices sollicitudin, nunc neque gravida dui, in efficitur nisl elit id magna.
Maecenas purus est, luctus a nisi non, eleifend varius quam. Cras eu elit eleifend, luctus turpis id, eleifend lectus. Nullam luctus auctor lectus id dictum. Nam iaculis nisl quis orci facilisis laoreet. Donec dapibus, purus nec dictum congue, odio eros luctus tortor, sit amet mattis quam ligula in ipsum. Cras tincidunt purus justo. Nullam tristique nulla ut facilisis ullamcorper.
Fusce laoreet tellus velit, eget rutrum eros rhoncus et. Nullam sit amet lacinia sem. Morbi laoreet lobortis ex, id lacinia mauris semper nec. Integer aliquet sit amet nisi vel ultricies. Nulla ultrices justo ut tellus ornare, eget dignissim est blandit. Praesent ut molestie ligula. Morbi ornare leo commodo arcu volutpat convallis. Quisque mauris nisl, faucibus ac leo porttitor, pulvinar ultrices tellus.
Sed pellentesque viverra tempus. Aliquam ac massa eget odio mattis mollis vel nec arcu. Fusce pretium turpis tristique, pretium nisl ac, porttitor massa. Quisque a lacus mattis, suscipit justo at, porttitor diam. Cras sed orci non velit tempus venenatis vitae vitae elit. Nullam dictum, purus sit amet imperdiet tristique, enim magna posuere diam, et condimentum libero justo sed sem.
Want to show a tab on page load? Click Here.
Linecons can be used with either
or
elements.

⇧
.i-heart
.i-cloud
.i-star
.i-tv
.i-sound
.i-video
.i-trash
.i-user
.i-key
.i-search
.i-settings
.i-camera
.i-tag
.i-lock
.i-bulb
.i-pen
.i-diamond
.i-display
.i-location
.i-eye
.i-bubble
.i-stack
.i-cup
.i-phone
.i-news
.i-mail
.i-like
.i-photo
.i-note
.i-clock
.i-paperplane
.i-params
.i-banknote
.i-data
.i-music
.i-megaphone
.i-study
.i-lab
.i-food
.i-t-shirt
.i-fire
.i-clip
.i-shop
.i-calendar
.i-wallet
.i-vinyl
.i-truck
.i-world
⇦
⇧
⇨
⇩


Registration
Register
Check Registration
Polling
See Ballot
More Info


Click on the microphone and begin speaking.
Speak now.
No speech was detected. You may need to adjust your microphone settings.
Click the "Allow" button to enable your microphone. Using the https version helps avoid this.
Permission to use microphone was denied.
Permission to use microphone is blocked. To change, go to chrome://settings/contentExceptions#media-stream
This browser doesn't support the Web Speech API. Use Chrome version 25 or later.


## Canvas- vs SVG-based Adapter Feel free to toggle seamlessly between the two possible adapters:
## Samples More probing samples below:


“How would you girls like a drink of pearl powder?” Nancy Drew asked her friends Bess and
George. “It’s calcium and is guaranteed to cure anything that’s wrong with you.”
The two girls laughed, sure that Nancy was joking. The attractive, blue-eyed, strawberry
blond sleuth shook her head.
“I’m not kidding. It’s true.”
Bess, a slightly overweight blond who, like the others, was eighteen years old, made a face.
“You know how I like to eat, but powder made from pearls!”
George, to whom food meant little, was a slender athletic-looking brunette. “So far as I
know, there’s nothing wrong with me, so I’ll pass.”
“Well, Nancy,” Bess urged, “tell us what the joke is.”
Once more Nancy insisted that pearl powder had been used extensively as a cure-all. “In an
cient Japan and other Asiatic and Oriental countries, it was very popular. Nowadays
1
physicians prescribe other medications, but pearl powder can still be purchased in certain
pharmacies.”
George stopped smiling and looked intently at her friend. “My guess is that you’ve started
working on a new mystery, and it has something to do with pearls. Am I right?”
“Yes,” Nancy replied. “There’s a Japanese jeweler in town who’s a specialist in repairing fine
old pieces of jewelry. His name is Mr. Moto. Recently he came to my Dad asking for help on
a mystery.”
Bess spoke up. “But your dad isn’t a detective. He’s a lawyer.”
“True,” Nancy agreed, “but in this case, a fantastic theft took place. Mr. Moto didn’t want to
go to the police because, if the loss became known, he feared it might cause international
complications.”
George took a deep breath. “I’m hooked. Tell us more.”
Nancy told the girls that a large firm with offices all over the world might be involved.
Bess interrupted. “Is this very confidential?”
“Very,” Nancy replied. She went on to say that her father was unable to help with the case
at the present time and had told Mr. Moto that Nancy was an amateur detective. Mr. Drew
had suggested that the three girls start working on the mystery until he could take over.
“What did Mr. Moto say?” Bess asked.
“He agreed.”
“Greatl” George exclaimed. “When shall we begin?”
“Right now,” Nancy replied. “I’ll tell Hannah where we’re going.” She was referring to the
Drews’ lovely housekeeper, who had acted as a mother to Nancy since she was three years
old and her own mother had passed away. At the moment Hannah Gruen was in the kitchen
bak ing a lemon meringue pie, which happened to be Mr. Drew’s favorite dessert.
Minutes later the girls drove off in Nancy’s sleek blue car to the center of River Heights. As
they turned into a side street looking for the jewelry shop, Bess suddenly said, “Oh, there it
is. But what’s happening?”
Nancy and George gazed at the front door of the shop. A young Asiatic man was racing from
the store with a pearl necklace dangling from one hand.
“I’ll bet he’s a thief!” George cried out. “Let’s nab him!”
2
But by the time Nancy stopped her car at the curb across from the jeweler’s, the young man
had jumped into an automobile and sped off in the opposite direction. Unfortunately, the
car had been too far away for Nancy and the others to glimpse the number on the license
plate.
“I’ll bet he’s a thief!” George cried out.
“Oh dear!” Bess said with a sigh. “There was our chance to be heroines, and we lost it!”
Nancy was eager to see if Mr. Moto was all right and hurried across the street into the shop.
Bess and George followed. No one was inside, but in a few moments an elderly, kind-looking
Japanese man came from a rear room.
He smiled and bowed to the girls. “May I assist you?” he asked.
Nancy spoke quickly. “We just saw a young man run from your shop with a pearl necklace in
his hand. Did he buy it?”
“No. I have been in the back room. I did not see or hear anyone.”
He looked into a display case, then clasped his hands in dismay. “It is gone! A very expensive
necklace!”
Nancy, Bess, and George described the young man as best as they could. Mr. Moto did not
recognize him.
“He was a thief, indeed!” the jeweler lamented.
The girls expressed their sympathy, and Nancy asked Mr. Moto if he was going to call the
police. The rather frail-looking jeweler shook his head. “Not now. I have a bigger problem on
my mind.”
“I know,” Nancy said and introduced herself and the other girls. “You came to see my father
about the theft of an unusual piece of jewelry. He told you that until he is free, we would
work on your case.”
Mr. Moto frowned. The girls assumed that he was thinking, “What do they know about
solving mysteries?”
Bess spoke up at once and glibly told how many cases Nancy had successfully concluded.
“And sometimes George and I helped her,” she added.
Mr. Moto stroked his chin. “Ah, so. Then I will tell you about my trouble. But you must
promise to keep this matter to yourselves.”
3
Each girl said she would honor his secret.
“I have a client named Mrs. Tanya Rossmeyer,” the jeweler began. “She is a very wealthy
lady and owns a great deal of expensive jewelry. Her most precious piece is a necklace of
pearls. There are twelve on each side of a very large one, which has the luster of the moon.
The strand is made of natural, not cultured pearls.”
“It must be worth a fortune!” Bess burst out.
“It is,” Mr. Moto agreed. “I believe there is no other one like it in the world.”
Nancy asked him about the theft.
“Someone entered my shop and opened the safe,” Mr. Moto replied. “He cut off the
thirteenth pearl from the rest of the strand. Mrs. Rossmeyer will be very angry and sue me
for a lot of money. I will lose my insurance and will be forced to close my shop!”
The three girls were surprised that the burglar had cut only one pearl from the necklace.
How much easier it would have been to steal the whole thing!

The jeweler obligingly opened the safe, which was built into the counter and was well-
hidden from view.
Nancy thought, “A casual customer would not realize this is a safe. The thief must have been
somebody who knows about it, besides being an expert safe-cracker.”
Mr. Moto twirled the dials of the lock left and right, then opened the heavy door. Inside
were many small drawers. He pulled one out and reached in for the pearl necklace.
“You see where—” he began, then stared at the strand before him. Finally he cried out,
“This is not Mrs. Rossmeyer’s necklace! The thief substituted this one! These are smaller
than Mrs. Rossmeyer’s pearls. Oh—she—”
The jeweler suddenly put a hand in his pocket, then fainted, sinking to the floor. The girls
ran behind the counter. Nancy and Bess picked him up and carried him to the back room.
 Nancy called out.
After putting Mr. Moto on a couch, she felt in his pocket where he had put his hand, and she
discovered a small bottle of heart tablets. Quickly she placed one under the man’s tongue.
“Don’t you think we should call a doctor?” Bess asked worriedly.
4
Nancy thought that Mr. Moto probably had attacks like this from time to time and carried
the special pills for that reason. “If he doesn’t revive in a few minutes, then we’d better call
an ambulance.”
George had locked the front door and had gone behind the counter. She restored the pearl
necklace to the safe and closed the heavy door. Then she twirled the knob back and forth
and tried the handle. The safe was locked.
By this time Mr. Moto had recovered in the back room but was glad to lie on the couch. He
insisted he did not need a doctor but asked the girls not to leave him for a while.
George reported that she had locked everything, and he thanked her. “You are most kind,”
he said. “When I first noticed that the thirteenth pearl was gone, I was so excited that I did
not examine the rest of the necklace. Now I know the substitute is not nearly as valuable as
the stolen one. Oh, oh! What shall I do?”
Nancy suggested that Mr. Moto lie still until he felt completely well. He agreed and used this
time to tell them the full story of what he suspected had happened.
“I believe the thief who was here is working for an international organization called World
Wide Gems, Incorporated, which deals in old and rare jewelry. Recently it has been hinted in
the trade that an underworld organization has infiltrated World Wide Gems. This does not
mean that the whole company is dishonest, but it is felt that certain employees are not
above steal ing.  George asked, puzzled.
“Probably he did not want to leave that compartment in my safe empty. With the other
necklace in it, I might not have noticed the loss for a while,” Mr. Moto replied.
“Where is World Wide Gems located?” Nancy inquired.
“They have branches in many big cities all over the world,” Mr. Moto replied. “You can see
that an investigation of them would cause many problems.”
“Yes, it would,” came the stern voice of an unseen man. “You’d better forget the whole
thing if you value your life!”
Mr. Moto and the girls were startled. Nancy and her friends jumped up and ran to the back
door from where the voice had seemed to originate. No one was there! Puzzled, they
searched the premises inside and out, but in vain. It was as if a ghost had spoken.
Bess shivered. “This is positively spooky!”
5


Pysc2 is a Deepmind Learning environment based on Starcraft 2.
We will go through the analysis for minigame construction and give some tips for creating your own
Requirements
Minigames are environments that focus on different elements of Starcraft II gameplay that have been created to investigate elements of the game in isolation
We will go through the analysis for minigame construction and give some tips for creating your own


{{pr.Time | date:'medium'}} (+{{pr.Additions}}/-{{pr.Deletions}})
{{pr.Time | date:'medium'}}
Health percents are the fraction of the time that a given job is stable for the last day, or since the submit queue restarted ({{ cntl.sqStats.StartTime | date:'medium'}}), whichever is shorter. The 24-Hour Test Report shows more detail, along with a list of flaky and broken tests in merge-blocking jobs.
| {{stat.$key}} | {{stat.Count}} | {{stat.CachedCount}} | {{stat.UncachedCount}} |
k8s-ci-robot
by commenting on a PR with the
various commands entered in comments.


Man charged after allegedly setting off fireworks during Remembrance Day silence
by Cillian O'Brien, CTVNews.ca WriterVeterans are outraged after a man set off a firework during a Remembrance Day silence.
The 38-year-old was due to appear in court Monday following the incident on Sunday in Salford, England, police said in a statement.
In the U.K., the main remembrance ceremonies are held on Remembrance Sunday, the Sunday nearest to November 11, when a two-minute silence is observed at 11 a.m.
Stuart Potts is alleged to have shot the firework shortly after 11 a.m. on Remembrance Sunday.
Greater Manchester Police said they were called to reports of a disturbance at a pub on Church Street in Eccles, a town in Salford.
The London Independent reports that the firework was thrown from a first-floor window as hundreds of people gathered in silence for the event.
The newspaper reported that a crowd of angry veterans gathered outside the building shouting “get him out” and tried to break down the door of the pub while others attempted to climb up to the window.
Potts was arrested shortly after. There were no reports of injuries, according to the Independent.


An R wrapper around the fast T-distributed Stochastic Neighbor Embedding implementation by Van der Maaten (see <https://github.com/lvdmaaten/bhtsne/> for more information on the original implementation).
| Version: | 0.15 |
| Imports: | Rcpp (≥ 0.11.0), stats |
| LinkingTo: | Rcpp |
| Suggests: | irlba, testthat |
| Published: | 2018-11-10 |
| Author: | Jesse Krijthe [aut, cre], Laurens van der Maaten [cph] (Author of original C++ code) |
| Maintainer: | Jesse Krijthe <jkrijthe at gmail.com> |
| License: | file LICENSE |
| URL: | https://github.com/jkrijthe/Rtsne |
| NeedsCompilation: | yes |
| Citation: | Rtsne citation info |
| Materials: | README NEWS |
| CRAN checks: | Rtsne results |
| Reference manual: | Rtsne.pdf |
| Package source: | Rtsne_0.15.tar.gz |
| Windows binaries: | r-devel: Rtsne_0.15.zip, r-release: Rtsne_0.15.zip, r-oldrel: Rtsne_0.15.zip |
| OS X binaries: | r-release: Rtsne_0.15.tgz, r-oldrel: Rtsne_0.15.tgz |
| Old sources: | Rtsne archive |
| Reverse imports: | CINNA, densityClust, diceR, FateID, PAC, projector, RaceID, randomcoloR, Rdimtools, scRNAtools, Seurat, visvow |
| Reverse suggests: | coRanking, dimRed, stm, themetagenomics |
Please use the canonical form https://CRAN.R-project.org/package=Rtsne to link to this page.


ZOZO UI EXAMPLES
Accordion
Vertical Accordion
Horizontal Accordion
Vertical Navigation Accordion
Slider Accordion with Autoplay
Slider Accordion (HTML5)
Look and Feel
Load Content with Ajax
Grouped Vertical Accordion
FAQ accordion
Accordion with keyboard Navigation
Nested and Multiple Instance Accordion
HTML5 Data Attributes


1
Something cool
1
Something cool
1
Something cool
1
Something cool
10
Something cool
1
Something cool
1
Something cool
Something cool
1
Cool icon
Cool icon


WERK + Snøhetta Win Competition to Design a New Maritime Center in Denmark
- Written by Christele Harrouk
- about 18 hours
WERK and Snøhetta have been selected as the winners of the maritime center competition on the harbor of Esbjerg, in Denmark. The proposal puts in place a glowing building entitled Lanternen or the Lantern, a new addition that will gather communal activities.
The new coastal landmark is both a maritime and a living center for the community along the Westcoast of Denmark. Imagined as a radiant lantern in a very particular landscape, the project will enhance the connection between the city and the sea.
Expected to be built in 2021, in wood, the Lantern, commissioned by Esbjerg Kommune & Lokale og Anlægsfonden, is a house that celebrates community and togetherness. The project depicts the everyday life of a sailor, highlights key elements of the community and underlines specific assets of the maritime world.
Related Article
BOGL Wins Urban Development Competition in a Norwegian Harbor City
The winning team designed a proposal that “has with a firm grip created a unifying building,” according to the judges. Actually, the team behind the Lantern, WERK, Snøhetta, and Oluf Jørgensen A/S have created a dynamic house celebrating the close relationship to the sea and the traditions of fishermen and boats.
On another hand, regarding the criteria of selection of the winning team, they have also added that “overall the proposal is evaluated to balance aesthetics, rawness and robust functionality in a very beautiful combination specifically made for Esbjerg, the new context and the tough climate and for that reason is evaluated as meeting the wishes of the competition program in an excellent way.”
In their statement, the jury announced that “the proposal excels in the finest way by combining the wish of fascinating and innovating architecture with a high level of functionality and the intention of creating a frame, supporting the community and creating a new togetherness between everyone involved.”


In this tutorial we're going to write a 'real-time' web-application using vert.x.
The application is a shop application called "vToons" which allows you to buy music tracks online.
The application architecture is very simple; it consists of a modern client-side JavaScript MVVM (MVC) application which communicates using the Vert.x event bus with a persistor module on the server. The persistor is used to store the music catalogue and also for persisting orders.
It also consists of a web server module on the server which serves the static resource - html, css and js files, and which bridges the server side event bus with client side JavaScript.
The application does not require any custom server side modules to be written. You just write your client side JavaScript and it communicates with the persistor as if it was running locally.
The only thing that needs to be written on the server is a simple script which tells Vert.x to start the persistor and the web server. The script can also contain configuration needed for the application.
In this version of this tutorial we've written the script in Ruby. If you'd prefer to write it in Groovy or JavaScript, please see the Groovy or JavaScript version of this tutorial.
If you'd rather just run the complete code, the working example is present in the webapp
directory of the examples in the distribution. Read the README there for instructions on how to run it.
There's also a version of the tutorial using AngularJS in the angularjs
directory of the distribution.
You can also see the code in github.
If you haven't yet installed vert.x, do that now.
The rest of the tutorial will assume you have installed vert.x in directory VERTX_HOME
.
We're going to need a web server to serve the static resources. Let's get one running. With Vert.x you can write a web server in just a few lines of code, but we're not going to do that. Instead Vert.x ships with an out-of-the-box web server module, so we'll just use that.
We'll create a script which starts the web server module and also contains the configuration.
Open a text editor and copy the following into it:
web_server_conf = { 'port' : 8080, 'host' : 'localhost' } # Start the web server, with the config we defined above import vertx vertx.deploy_module('vertx.web-server-v1.0', web_server_conf)
The call to deploy_module
tells Vert.x to deploy an instance of the vertx.web-server
module. If the module is not already installed, Vert.x will install it automatically from the module repository. For detailed information on modules please see the modules manual.
Save it as app.py
.
Now, create a directory called web
with a file index.html
in it:
mkdir web echo "Hello World" > web/index.html
And run the web server:
vertx run app.py
Point your browser at http://localhost:8080
. You should see a page returned with 'Hello World'.
That's the web server done.
Now we have a working web server, we need to serve the actual client side app.
For this demo, we've written it using knockout.js and Twitter bootstrap, but in your apps you can use whatever client side toolset you feel most comfortable with (e.g. jQuery, backbone.js, ember.js or whatever). Any client side JavaScript will do.
The purpose of this tutorial is not to show you how knockout.js or Twitter bootstrap works so we won't delve into the client app in much detail.
Copy the client side application from the vert.x installation into our web directory as follows:
cp -r $VERTX_HOME/examples/python/webapp/web/* web
Now, refresh your browser. The client application should now be served.
Of course, it won't do anything useful yet, since we haven't connected it up to anything, but you should at least see the layout. It should look like this:
Take some time to click around the app. It's pretty self explanatory.
In the centre there's a set of tabs which let you flick between the shop, and your cart.
On the left hand bar there's a form which allows you to login.
The Vert.x module repository contains a module called vertx.mongo-persistor
.
This module allows you to store/update/delete/find data in a MongoDB database. (For detailed info on modules please see the modules manual).
We're going to use a persistor in our application for a few different things:
Add a line to app.py
which starts the persistor, so the file now looks like:
web_server_conf = { 'port' : 8080, 'host' : 'localhost' } # Deploy a MongoDB persistor module import vertx vertx.deploy_module('vertx.mongo-persistor-v1.2') # Start the web server, with the config we defined above vertx.deploy_module('vertx.web-server-v1.0', web_server_conf)
Of course you'll also need to make sure you have installed a MongoDB instance on the local machine, with default settings.
Now CTRL-C the web server you started earlier and run app.py
with
vertx run app.py
The persistor and web server should be running and it should serve the client application as before.
So far we have a web server running, and a server side persistor listening on the event bus, but not doing anything.
We need to connect up the client side so it can interact with the persistor via the event bus.
To that we use a SockJS bridge.
SockJS is a technology which allows a full-duplex WebSocket-like connection between browsers and servers, even if the browser or network doesn't support websockets.
You can create a SockJS server manually in the Vert.x API (see the core manual for more information on this), but the vertx.web-server
module contains bridge functionality built in, so we're just going to tell it to activate the bridge. This is done in the configuration we specify to the web server.
Edit the web server configuration so it looks like:
web_server_conf = { 'port' : 8080, 'host' : 'localhost', 'bridge' : True, 'inbound_permitted' : [ # Allow calls to get static album data from the persistor { 'address' : 'vertx.mongopersistor', 'match' : { 'action' : 'find', 'collection' : 'albums' } } ], 'outbound_permitted' : [ {} ] }
Setting the bridge
field to True
tells the web server to also act like an event bus bridge as well as serving static files.
The other new things here are the inbound_permitted
and outbound_permitted
fields. These are arrays of JSON objects which determine which event bus messages we're going to allow through the client side. The bridge basically acts like a firewall and only allows through those messages that we want to come through. inbound_permitted
determines which messages we are going to allow from the client --> server, and outbound_permitted
determines which messages we are going to allow from server --> client.
If we allowed the client to send any messages to the persistor, it would be able to do things like delete all data in the database, or perhaps view data it is not entitled to see.
(For detailed information on how the firewall works, please see the core documentation.)
Initially, we only want to allow through requests to the persistor to load the album data. This will be used by the client side application to display the list of available items to buy.
The above configuration will only allow messages from the client that are addressed to vertx.mongopersistor
(that's the event bus address of the MongoDB persistor), and which have a field action
with a value find
, and a field collection
with a value albums
.
Save the file.
We're almost at the point where the client side app can see the catalogue data. But first we need to insert some static data.
To do this we need a script which inserts catalogue and other data needed by the application in the database. It does this by sending JSON messages on the event bus to the persistor.
Copy static_data.py
into your directory as follows:
cp $VERTX_HOME/examples/python/webapp/static_data.py .
We want to insert the static data only after the persistor verticle has completed starting up so we edit app.py
as follows:
import vertx def after_deploy(): execfile('static_data.py') vertx.deploy_module('vertx.mongo-persistor-v1.2', after_deploy)
The block that we're specifying in the call to deploy_module
won't be invoked until the persistor is fully started. In that function we just load the static data script.
Save the edited app.py
and restart it.
vertx run app.py
Refresh your browser.
You should now see the catalogue displayed in the client side app:
Now there is some stuff to buy, you should be able to add stuff to your cart, and view the contents of your cart by clicking on the cart tab.
As previously mentioned, this isn't a tutorial on how to write a knockout.js client-side application, but let's take a quick look at the code in the client side app that requests the catalogue data and populates the shop.
The client side application JavaScript is contained in the file web/js/client_app.js
. If you open this in your text editor you will see the following line, towards the top of the script:
var eb = new vertx.EventBus(window.location.protocol + '//' + window.location.hostname + ':' + window.location.port + '/eventbus');
This is using the vertxbus.js
library to create an EventBus
object. This object is then used to send and receive messages from the event bus.
If you look a little further down the script, you will find the part which loads the catalogue data from the server and renders it:
eb.onopen = function() { // Get the static data eb.send('vertx.mongopersistor', {action: 'find', collection: 'albums', matcher: {} }, function(reply) { if (reply.status === 'ok') { var albumArray = []; for (var i = 0; i < reply.results.length; i++) { albumArray[i] = new Album(reply.results[i]); } that.albums = ko.observableArray(albumArray); ko.applyBindings(that); } else { console.error('Failed to retrieve albums: ' + reply.message); } }); };
};
The onopen
is called when, unsurprisingly, the event bus connection is fully setup and open.
At that point we are calling the send
function on the event bus to a send a JSON message to the address vertx.mongopersistor
. This is the address of the MongoDB persistor module that we configured earlier.
The JSON message that we're sending specifies that we want to find and return all albums in the database. (For a full description of the operations that the MongoDBPersistor module expects you can consult the README.md in the mod-mongo-persistor
repository).
The final argument that we pass to to send
is a reply handler. This is a function that gets called when the persistor has processed the operation and sent the reply back here. The first argument to the reply handler is the reply itself.
In this case, the reply contains a JSON message with a field results
which contains a JSON array containing the albums.
Once we get the albums we give them to knockout.js to render on the view.
In order to actually send an order, you need to be logged in.
To handle login we will start an instance of the vertx.auth-mgr
which lives in the repository. This is a simple module which handles simple user/password authentication and authorisation. Users credentials are stored in the MongoDB database. Fore more sophisticated auth, you can easily write your own auth module and the bridge can talk to that instead.
To login, the client sends a message on the event bus to the address vertx.basicauthmanager.login
with fields username
and credentials
, and if successful it replies with a message containing a unique session id, in the sessionID
field.
This session id should then be sent in any subsequent message from the client to the server that requires authentication (e.g. persisting an order).
When the bridge receives a message with a sessionID
field in it, it will contact the auth manager to see if the session is authorised for that resource.
Let's add a line to start the auth-mgr
:
Edit app.py
and add the following, just after where the Mongo Persistor is deployed.
# Deploy an auth manager to handle the authentication vertx.deploy_module('vertx.auth-mgr-v1.1')
We'll also need to tell the bridge to let through any login messages:
'inbound_permitted' : [ # Allow calls to login { 'address' : 'vertx.basicauthmanager.login' }, ...
Save, and restart the app.
You can test login by attempting to log-in with username tim
and password password
. A message should appear on the left telling you you are logged in!.
Let's take a look at the client side code which does the login.
Open web/js/client_app.js
and scroll down to the login
function. This gets trigged by knockout when the login button is pressed on the page.
eb.send('vertx.bridge.login', {username: that.username(), password: that.password()}, function (reply) { if (reply.status === 'ok') { that.sessionID(reply.sessionID); } else { alert('invalid login'); } });
As you can see, it sends a login JSON message to the bridge with the username and password.
When the reply comes back with status ok
, it stores the session id which causes knockout to display the "Logged in as... " message.
It's as easy as that.
Persisting an order is equally simple. We just send a message to the MongoDB persistor component saying we want to store the order.
We also need to tell the bridge to let through requests to persist an order. We also need to add the further constraint that only logged-in users can persist orders.
Edit the web server configuration so it looks like:
web_server_conf = { 'port' : 8080, 'host' : 'localhost', 'bridge' : true, # This defines which messages from the client we will let through # to the server side 'inbound_permitted': [ # Allow calls to login { 'address': 'vertx.basicauthmanager.login' }, # Allow calls to get static album data from the persistor { 'address': 'vertx.mongopersistor', 'match': { 'action': 'find', 'collection': 'albums' } }, # And to place orders { 'address': 'vertx.mongopersistor', 'requires_auth': True, # User must be logged in to send let these through 'match': { 'action': 'save', 'collection': 'orders' } } ], # This defines which messages from the server we will let through to the client 'outbound_permitted': [ {} ] }
Setting the requires_auth
field to True
means the bridge will only let through the message if the user is logged in.
Ok, let's take a look at the client side code which sends the order.
Open up web/js/client_app.js
again, and look for the function submitOrder
.
that.submitOrder = function() { if (!orderReady()) { return; } var orderItems = ko.toJS(that.items); var orderMsg = { sessionID: that.sessionID(), action: "save", collection: "orders", document: { username: that.username(), items: orderItems } } eb.send('vertx.mongopersistor', orderMsg, function(reply) { if (reply.status === 'ok') { that.orderSubmitted(true); // Timeout the order confirmation box after 2 seconds // window.setTimeout(function() { that.orderSubmitted(false); }, 2000); } else { console.error('Failed to accept order'); } }); };
This function converts the order into a JSON object, then calls send
on the event bus to send it to the database where it will get persisted.
Notice that we add a sessionID
field to the message with the session id that was returned when we logged in. The bridge requires this field to be set with a valid session id or the message will not make it through the bridge firewall, since we set the requires_auth
field to true in the server side config.
When the reply comes back we tell knockout to display a message.
Everything should be in order, so restart the app again:
vertx run app.py
Refresh the browser.
Now log-in and add a few items into your cart. Click to the cart tab and click "Submit Order". The message "Your order has been accepted, an email will be on your way to you shortly" should be displayed!
Take a look in the console window of the application. You should see the order has been logged.
Congratulations! You have just placed an order.
So far in this tutorial, all client-server traffic has been over an unsecured socket. That's not a very good idea in a real application since we're sending login credentials and orders.
Configuring Vert.x to use secure sockets is very easy. (For detailed information on configuring HTTPS, please see the manual).
Edit app.rb
again, and add the field ssl
in the web server config, with the value True
.
web_server_conf = { 'port' : 8080, 'host' : 'localhost', 'ssl' : True, 'bridge' : True, ...
You'll also need to provide a key store. The keystore is just a Java keystore which contains the certificate for the server. It can be manipulated using the Java keytool
command.
Copy the keystore from the distribution
cp $VERTX_HOME/examples/python/webapp/server-keystore.jks .
Now restart the app again.
vertx run app.py
And go to your browser. This time point your browser at https://localhost:8080
. Note it is https not http.
You'll initially get a warning from your browser saying the server certificate is unknown. This is to be expected since we haven't told the browser to trust it. You can ignore that for now. On a real server your server cert would probably be from a trusted certificate authority.
Now login, and place an order as before.
Easy peasy. It just works
Scaling up the web server part is trivial. Simply start up more instances of the webserver. You can do this by changing the line that starts the vertx.web-server
module to something like:
# Start 32 instances of the web server! import vertx vertx.deploy_module('vertx.web-server-v1.0', web_server_conf, 32)
(Vert.x is clever here, it notices that you are trying to start multiple servers on the same host and port, and internally it maintains a single listening server, but round robins connections between the various instances.)
In this simple web application, there was no need to write any custom server side modules, but in more complex applications you might want to write your own server side services which can be used by clients (or by other server side code).
Doing this with Vert.x is very straightforward. Here's an example of a trivial server side service which listens on the event bus for messages and sends back the current time to the caller:
import time import vertx from core.event_bus import EventBus def handler(message): message.reply({'current_time' : time.time()*1000}) EventBus.register_handler("acme.timeService", handler)
Save this in time_service.py
, and add a line in your app.py
to load it on startup.
Then you can just call it from client side JavaScript, or other server side components:
eventBus.send("acme.timeService", null, function(reply) { console.log("Time is " + reply.current_time); });
You can package up your entire application, or just individual Verticles as modules, so they can be easily reused by other applications, or started on the command line more easily.
For an explanation of how to do this, please see the modules manual.


My freshmen year of college, I was talking to my friend Ross at this exact spot; right in front of my freshmen dorm. I had just came from my only Friday class, Calculus 1 from 2:30pm - 3:30pm, and was headed back to change into real clothing. This was my usual after-class routine. I was notorious on-campus for longboarding to class in my pajamas or penguin/dinosaur kigurumi.
On this day however, I was wearing my favorite combination; my Pac-Man pajamas along with my School of Undergraduate Studies t-shirt. At the University of Texas at Austin, students who do not know which college they want to attend at the University may enroll in the School of Undergraduate studies for two years. This grace period is meant to give students time to discover, experiment, and apply to the many different majors our University offers until they have decided which degree they want to pursue. In this period, the student's major is referred to as undeclared.
What's special about this moment though was Ross. In my usual ridiculousness, Ross very lovingly said, "Ali, you're exactly what I picture when I think of an undeclared student." And I very lovingly said, "That's the greatest compliment I've ever heard," and I meant it. When I was applying to college, I knew I was going to be an undeclared student for the first couple years. There just wasn't a single career/major that satisfied all the different things I wanted to learn about: technology, leadership, creativity. I wanted to study all three of these to the same level of knowledge that professionals in these industries would.
Since that day, I've become a student with majors and minors in many different things. These majors and minors I've elaborated on down below. But, at heart, I am and will always be an undeclared student; that is my true major. Because to me, an undeclared student studies how to be the best learner at anything. And that's what I came to college for.
Below are some key courses and projects that I completed while studying Computer Science at UT Austin. What makes them key? Check out my section on Technology!
Tap thumbnails to see projects (if available)
GitHub: alidarwiche
LinkedIn: darwiche2005
Creative Writing is the only subject that I 100% knew I would study during my college experience. I've been writing poetry, since 2009. However, it was only after taking my first Creative Writing course at UT Austin that I truly became a poet. In this course, I got to work under Dean Young while he was the Poet Laureate for Texas. Learning under Dean was a life changing experience that I will cherish forever.  This collection is titled "Find Me" and is an exploration of the reader/writer relationship. This exploration follows and is meant to address my own anxiety with the concept of a "reader". Up until this collection, there was no reader involved in my work; only myself. To me, poetry was this safe space where I could experiment with word and sound to discover new ways of portraying emotion. To be honest, it still is. But, for this collection, my experimental thoughts needed to make sense to a reader. In that way I had to satisfy the reader, and that scares me. What is this relationship between the reader and the writer? What is expected of each of us? What is fair?
I intent to continue growing this collection, and will be avoiding posting it online until it is complete. If you would like to read my collection, send me a private message. Twitter or LinkedIn will work if you do not have my contact info. I would love to hear your thoughts on my work, thus far!
I've always wanted to sing, but didn't have the courage to begin until Senior year of high school. Now, when I say want... I mean WANT. However, I was an incredibly insecure kid and the fear of being laughed at was immense. When I started school at Cairo American College in 5th grade, I learned about the CAC Vocal CDs that the Choir department released every year. This CD was a collection of choirs and solo acts professionally recorded for the community to hear. From 5th grade till graduation, I bought these CDs and idolized the singers on it. In 10th grade, I started singing the song "Lullabye" by Fall Out Boy just incase a miracle happened and I got the chance to audition for the CD. In 12th grade, that miracle came in the form of courage, hard-work, and the best human ever (Ben Gallego) playing guitar.
This accomplishment gave me a confidence and drive that I had never experienced before. When I arrived at The University of Texas at Austin. The only thing on my mind was "How can I keep singing?" So, I joined the UT Men's Chorus and became Treasurer of the organization; later Vice-President. I joined the Texas Songhorns, the only all-male A Capella group at UT Austin, and even managed to land a solo! I wrote and produced my first song with the help of my good friend Adam Barrett on guitar. But, my world truly changed when I learned about Non-Major's voice lessons and begun private instructions with Masters and Doctoral Opera students.
UT Men's Chorus
Texas Songhorns
My First Song
That video on the right is of my Voice recital from Fall 2014! Since then my voice has changed a lot, but I don't have anything recent to share. Wondering why? Check out my section on Music!


When you created this account, you provided your email address. It is the method we use to identify users. It is also used to send you confirmation messages for account updates, like password changes. For example, a password reset request is sent to this email address.
We do not use your email address for marketing purposes, unless you used the same email address to sign up for our newsletter or other such mailing list. Your email address is never shared with third parties.
When you register a device with Mycroft, the Add Device screen asks for the geographical location of yor device. This data is synchronized to your device when it is registered and when it is changed via the Edit Device screen. Your device uses this data for location-specific services such as date, time and weather.
When you register your first device, you are asked for your preferred date format, time format, and measurement system. This data is synchronized to each of your devices when they are registered. If the values of these preferences change, the new values are synchronized to all your devices. Your device uses this data for when formatting data for presentation such as date, time and weather.
When you issue a command or request to your voice assistant, the audio data is transcribed into text. The transcription can be performed on your device, but on-device transcription software does not provide the best user experience. Transcriptions are more accurate when sent to a third party service provider over the internet.
When you ask the Mycroft voice assistant a question that cannot be answered by one of the installed skills, a textual representation of the question is sent to services like Wolfram Alpha, Duck Duck Go and Wikipedia in an attempt to find the answer.