NORTH EAST, Penn. - The MCC men's basketball team kicked off the spring semester the same way they ended the fall - with a victory.
Mike Kelly Jr. had 19 points and nine rebounds, and the Tribunes won for the 12th time in 13 games with an 83-58 win over Mercyhurst North East Wednesday night.
After starting the season unranked, MCC has played its way into the national Top 10. The Tribunes currently sit at eighth in the NJCAA Division 2 national rankings.
Kelly hit 8-of-9 from the field and helped anchor a defense that harassed the Saints into 32 percent shooting (22-for-68) from the floor. Conversely, Monroe shot 51 percent overall, including 46 percent from beyond the arc.
Gilberto Cue hit four 3's and scored 16 of his 17 as MCC raced out to a 22-point lead at the half. MCC also received a big boost from the bench. Ryan Beckles also connected on four 3's on his way to a career-high 16 points, and Jaymes Jackson was 6-for-7 from the floor and tallied 14 points.


Canadian housing starts rose 0.6% to a seasonally adjusted annual rate of 223,232 units in August, Canada Mortgage and Housing Corp. said Monday.
The result beat market expectations for housing starts to hit 215,000 in August, according to economists at Royal Bank of Canada.
August marked the eighth straight month Canadian housing starts exceeded the 200,000 level, at a time when the Canadian economy is growing at a pace leading the Group of Seven countries.
"Demand for new homes remains strong, consistent with consumer confidence which reached its highest level in 10 years," said Bob Dugan, chief economist at the Canadian housing agency.


text:
The Cycles of Time
Ask Me About Truth, Episode 100
A question about Swami Kriyananda's mission in life turns into a discussion of the mission of Paramhansa Yogananda, his place in history, and in the cycles of time known as the Yugas.
Kriyananda says that we are in a period of time in history when there may be much conflict, but that peace is I'll come in time, and spiritual communities are part of the answer.
Questions include:
Would you describe yourself as having a mission in life, and if so, what is that mission?
What will Yogananda's impact on civilization be?
Do people from other countries live in the communities you've founded?
Next in Ask Me About Truth
Ask Me About Truth, Swami Kriyananda
How We Become Attached
More videos from Swami Kriyananda
A Way to Awakening
How to Apply Common Sense to Your Intuition
You Can Learn to Be Joyful Always with Swami Kriyananda
Stories by P.G. Wodehouse
The Passing of Ambrose
Gayatri Mantra Arati
Sir Agravaine
Honeysuckle Cottage
Jeeves and the Song of Songs
Lord Emsworth and the Girlfriend
Mrs. Packletide's Tiger
A Way to Awakening, Swami Kriyananda
The Joyful Journey of Finding God with Swami Kriyananda
Swami Kriyananda, The Essence of the Bhagavad Gita
What Is True Wisdom? with Swami Kriyananda – Inspiration From the Bhagavad Gita

redpajama_set_name: RedPajamaCommonCrawl


text:
James Monroe (Westmoreland County (Virginia), 28 april 1758 – Albany (New York), 4 juli 1831) was een Amerikaans politicus en slavenhouder. Hij was de 5e president van de Verenigde Staten van 1817 tot 1825.

Nadat Monroe in de Amerikaanse Onafhankelijkheidsoorlog in het leger had gediend, sloot hij zich aan bij de antifederalisten. Hij was daarna lid van de Senaat, gouverneur van Virginia, minister van Oorlog en minister van Buitenlandse Zaken.

Levensloop

Jeugd en betrokkenheid Amerikaanse Onafhankelijkheidsoorlog
Zijn vader was een planter. Toen die in 1774 overleed erfde James Monroe een kleine plantage, inclusief een aantal slaven. Hij ging in datzelfde jaar studeren aan het College of William and Mary en was net als de meeste van zijn medestudenten enthousiast over de Amerikaanse opstand tegen koning George III. Toen de opstand overging in een heuse oorlog nam Monroe begin 1776 dienst in het Continentaal Leger. Hij keerde niet meer terug in de schoolbanken. Zijn goede afkomst leverde hem een positie op als officier. Hij was betrokken bij de overval op het Governor's palace in Williamsburg, waar tweehonderd musketten en driehonderd zwaarden werden buitgemaakt om de militie van Williamsburg te bewapenen. Met de rest van generaal Washingtons leger werd Monroe verjaagd door de Britten van Long Island.

Op kerstavond 1776 viel Washington de Hessen bij Trenton aan en behaalde daar een overwinning die het moreel van de koloniale troepen veel goed deed. Bij een aanval op de artillerie werd Monroe door een kogel geraakt in zijn linkerschouder en moest van het slagveld worden gedragen. De kogel werd niet verwijderd en bleef de rest van zijn leven in zijn schouder zitten. Na zijn herstel nam hij dienst als luitenant-kolonel bij de Virginia-militie. In september 1779 vertrok hij daar en ging rechten studeren, eerst bij George Wythe en later bij Thomas Jefferson. Toen de Britten Richmond aanvielen wees Jefferson, op dat moment gouverneur als Virginia hem aan als verbindingsman met het Continentale Leger in North Carolina. In 1783 werd hij toegelaten tot de Balie en startte zijn eigen rechtenpraktijk in Fredericksburg, Virginia.

Entree in de politiek
Monroe maakte in 1782 zijn entree in de Amerikaanse politiek met zijn verkiezing in het Huis van Afgevaardigden van Virginia. Van 1783 tot 1786 was hij lid van het Continental Congress. Monroe speelde een belangrijke rol bij de ratificatie van de grondwet door Virginia. Aan de ene kant waren er de voorstanders, onder leiding van George Washington en James Madison. Patrick Henry en George Mason gingen voorop in oppositie. Daardoor kwam de doorslaggevende stem te liggen bij de gematigde figuren als Monroe en Edmund Pendleton. Zij waren bezorgd over de afwezigheid van een Bill of Rights en over de mogelijkheid voor de federale regering om belasting te heffen. Zij wilden dat alleen de individuele staten die mogelijkheid zouden hebben. Uiteindelijk besloten ze in te stemmen om, als de Grondwet eenmaal was aangenomen, te proberen de door hen gewenste veranderingen alsnog door te voeren. Met een nipte meerderheid ratificeerde Virginia vervolgens de Grondwet. Monroe stelde zich verkiesbaar voor het eerste Huis van Afgevaardigden, maar werd verslagen door Madison. In 1790 koos de wetgevende vergadering van Virginia hem wel in de Senaat. Daar voegde hij zich al snel bij de Democratisch-Republikeinse Partij van Jefferson en Madison en was na korte tijd fractieleider in de Senaat.

Ambassadeur naar Frankrijk
De regering benoemde Monroe in 1794 als ambassadeur naar Frankrijk. Hij zette zich daar in voor de vrijlating van Thomas Paine, die gearresteerd was vanwege zijn bezwaar tegen de executie van koning Lodewijk XVI. De Franse regering stond erop dat Paine meteen vertrok naar de Verenigde Staten. Verder sloot hij een akkoord over de vrijlating van alle Amerikaanse gevangenen, inclusief Adrienne de La Fayette en haar familie die door hun inzet tijdens de Revolutie allemaal de Amerikaanse nationaliteit hadden gekregen.

De Amerikaanse ambassadeur probeerde de Franse regering ervan te overtuigen dat president Washingtons neutraliteitspolitiek niet uitwerkte in het voordeel van Groot-Brittannië, waar Frankrijk op dat moment in oorlog mee was. Dat viel niet langer vol te houden nadat de Verenigde Staten en Groot-Brittannië het Verdrag van Jay ('treaty of Jay') hadden getekend, tot verbijstering van Monroe zelf. President Washington vond dat Monroe de belangen van zijn land niet goed behartigde en riep hem terug.

Gouverneur van Virginia
De ontslagen ambassadeur keerde terug naar zijn rechtenpraktijk totdat hij in 1799 als gouverneur gekozen werd. Hij kreeg in 1800 te maken met een slavenopstand onder leiding van Gabriel Prosser. Monroe stuurde de staatsmilitie erop af, die de opstand neersloeg. Prosser en 26 andere slaven werden opgehangen. Monroe overwoog ook om de staatsmilitie te gebruiken om Jefferson in 1800 aan de macht te helpen als president.

Ambassadeur naar Groot-Brittannië
President Jefferson stuurde Monroe in 1803 naar Frankrijk om Robert Livingston te assisteren bij de onderhandelingen over de Louisiana Purchase. Daarna benoemde de president hem als ambassadeur naar Groot-Brittannië. Hij onderhandelde met Groot-Brittannië over een nieuw verdrag dat het Jay Treaty moest vervangen, omdat dat na tien jaar afliep. Destijds had Jefferson afwijzend tegen dat verdrag gestaan, hoewel het verdrag voor tien jaar van vrede had gezorgd waarin veel geld het land binnenkwam door handel. Monroe sloot het Monroe-Pinkney-akkoord in december 1806, wat Amerika een nieuwe periode van vrede zou hebben opgeleverd, maar het verdrag maakte geen einde aan de gedwongen opname van Amerikaanse zeemannen in de Britse marine. Groot-Brittannië had deze manschappen hard nodig om alle oorlogsschepen te bemannen in de strijd tegen Napoleon Bonaparte. Jefferson legde het verdrag niet eens voor aan de Senaat ter ratificatie, maar deed ook geen poging om een nieuw akkoord te sluiten. Daardoor groeide beide landen verder uit elkaar en dat mondde uiteindelijk uit in de Oorlog van 1812. Monroe zelf was boos over de afwijzing van het akkoord en raakte daarover gebrouilleerd met minister van Buitenlandse Zaken James Madison.

In aanloop naar de presidentsverkiezingen van 1808 was de Democratisch-Republikeinse Partij behoorlijk verdeeld. Een deel van de partij moest weinig hebben van het beleid van Jefferson en vroegen Monroe om zich te kandideren. Het plan was om hem in samenwerking met de Federalistische Partij te kiezen als president. De aanhangers van Monroe kregen niet de overhand en op de partijconventie werd gekozen voor Madison, die vervolgens ook als president gekozen werd.

Minister van Oorlog en Buitenlandse Zaken
Monroe keerde terug naar het Huis van Afgevaardigden van Virginia en werd in 1811 opnieuw gekozen als gouverneur. Hij vervulde die positie maar vier maanden, omdat Madison hem vroeg als zijn minister van Buitenlandse Zaken. Op die manier hoopte de president steun te winnen van de tegenstanders binnen zijn eigen partij. Monroe had geen groot aandeel in de Oorlog van 1812, omdat hij overvleugeld werd door president Madison en de oorlogshaviken in het Congres. De oorlog verliep desastreus voor Amerika. In augustus 1814 veroverden de Britten Washington D.C. en brandden het Capitool en het Witte Huis plat. Madison verving John Armstrong als minister van Oorlog en vroeg Monroe voor die post. Deze stapte op als minister van Buitenlandse Zaken, maar Madison wees geen vervanger aan, waardoor Monroe feitelijk twee ministerposten bezette. Hij lanceerde nog een plan om Canada binnen te vallen, maar een vredesverdrag maakte in maart 1815 een einde aan de oorlog.

President van de Verenigde Staten
Madison stelde zich in 1816 niet meer verkiesbaar en Monroe was zijn beoogde opvolger. De Federalistische Partij had veel steun verloren omdat ze de Oorlog van 1812 niet gesteund had. Ze nomineerden zelfs geen officiële kandidaat. De meeste Federalisten steunden Rufus King, tweemaal eerder kandidaat voor het vicepresidentschap. Monroe won daardoor de verkiezingen met gemak. De ontbinding van de Federalistische Partij ging verder en vier jaar later had hij zelfs geen enkele tegenkandidaat, iets wat daarvoor alleen bij de verkiezing van George Washington was voorgekomen. Na 1820 is dat nooit meer voorgekomen.

Monroe kreeg in 1819 te maken met een grote economische crisis als nasleep van de napoleontische oorlogen. Groot-Brittannië had zijn industriële capaciteit opgevoerd om aan alle oorlogsinspanningen te kunnen voldoen. Europa lag in puin en daardoor werd veel van de Britse overproductie tegen lage prijzen op de Amerikaanse markt gedumpt. Veel Amerikaanse bedrijven konden hier niet mee concurreren en gingen failliet. Daarnaast ontbrak het aan goed toezicht op de snel groeiende bankensector. Daardoor was er veel geld in omloop en vonden er massale speculaties op land plaats. Door de voedseltekorten werd dit als interessante belegging gezien, zeker omdat de overheid onder gunstige voorwaarden veel land verkocht. Beleggers verloren veel geld toen de grondprijzen kelderden. Ondanks de crisis, die tot 1821 duurde, bleef Monroe populair.

De grootste uitdaging in zijn presidentschap was de toetreding van Missouri tot de Unie. In de Senaat was het aantal staten waar slavernij wel en niet was toegestaan in evenwicht, maar dat zou anders komen te liggen met de toetreding van Missouri. Voor- en tegenstanders sloten het zogenaamde Missouri-compromis waarbij o.a. werd afgesproken dat Maine zou worden afgesplitst van Massachusetts en als aparte staat, waar slavernij verboden was, toe zou treden tot de Unie, waarmee de balans was hersteld.

Het Congres verlangde veel subsidies voor de verbetering van de nationale infrastructuur. Monroe sprak zijn veto uit over een wet waardoor de federale overheid zou opdraaien voor de onderhoudskosten van de Cumberland Road, een weg die werd aangelegd van Cumberland, Maryland naar Vandalia, Illinois. Hij vond dat de staten daar zelf voor verantwoordelijk waren.

Monroe zorgde voor een grote controverse toen bleek dat hij in 1817 generaal Andrew Jackson naar Spaans Florida had gestuurd. Jackson lanceerde daar een militaire campagne tegen de Seminole-indianen en de Spanjaarden die hen beschermden. Velen meenden dat hij daar de toestemming van de president voor had, maar Monroe ontkende dat. De president had het voordeel dat de meeste leden van het Congres voor een verdere expansie waren en alle resoluties tegen Monroe en Jackson werden weggestemd. Minister van Buitenlandse Zaken John Quincy Adams sloot een jaar later een verdrag met de Spanjaarden waarbij Florida voor vijf miljoen dollar werd gekocht.

De naam van Monroe leeft vooral voort voor het nageslacht door de door hem gevestigde Monroedoctrine. Dit was een beginsel in de buitenlandse politiek van de Verenigde Staten. De term zelf is ontleend aan een speech die Monroe in 1823 hield voor het Congres. Monroe verklaarde elke vorm van Europese bemoeienis op het westelijk halfrond taboe, waarmee hij doelde op politiek ingrijpen in de pas sinds kort onafhankelijke naties in Zuid-Amerika en op nieuwe pogingen Amerika te koloniseren. Monroe beloofde evenwel de bestaande kolonies in handen van de Europese machten te respecteren. De Monroedoctrine zou lange tijd staand Amerikaans beleid zijn. Veel historici zijn van mening dat de doctrine echter na zijn presidentschap uit haar verband is gerukt, en gebruikt om buitenlandse politiek te justificeren. Monroe bedoelde zijn doctrine defensief, om uitbreiding van macht van Europa in het westen in te dammen. Deze doctrine werd echter later gebruikt als een excuus voor expansie van de VS.

Tijdens zijn presidentschap steunde Monroe de vestiging van vrijgelaten slaven in wat later bekend zou komen te staan als Liberia. De blanke elite was de vrijgelaten slaven liever kwijt dan rijk, omdat zij vreesden dat ze in opstand zouden kunnen komen tegen hun vroegere meesters. De federale overheid kocht voor zo'n honderdduizend dollar aan land in Liberia. Als dank vernoemden de Liberianen hun hoofdstad Monrovia naar de Amerikaanse president.

Een derde termijn liet Monroe aan zich voorbijgaan. Hij werd opgevolgd door zijn minister van Buitenlandse Zaken, John Quincy Adams.

Laatste levensjaren
Hij keerde terug naar Virginia en na het overlijden van zijn vrouw leefde hij in New York. Hij overleed op 4 juli 1831 en was de derde president die op de Amerikaanse Onafhankelijkheidsdag overleed; vijf jaar eerder waren zowel John Adams als Thomas Jefferson ook op deze datum overleden.

Kabinetsleden onder Monroe

Amerikaans minister van Buitenlandse Zaken
Amerikaans gouverneur
Amerikaans senator
Amerikaans minister van Oorlog
Amerikaans ambassadeur
Slavernij
Monrovia
President van de Verenigde Staten
Amerikaans politicus in de 19e eeuw

redpajama_set_name: RedPajamaWikipedia


text:
Q: Efficiently handling time series data from multiple sources in TF.Keras I have a dataset which looks something like this:
time | src | a | b | c | d | e | Label
----------------------------------------
0.   | 1   | # | # | # | # | # | #
1.   | 1   | # | # | # | # | # | #
2.   | 1   | # | # | # | # | # | #
3.   | 1   | # | # | # | # | # | #
4.   | 1   | # | # | # | # | # | #
....
0.   | 2   | # | # | # | # | # | #
1.   | 2   | # | # | # | # | # | #
2.   | 2   | # | # | # | # | # | #
3.   | 2   | # | # | # | # | # | #
4.   | 2   | # | # | # | # | # | #

I'm training a model to predict label against a window of [a,b,c,d,e] values. So my X is of shape (window_size,5) and my y would be the value of label at the end of the window. All values of X must have the same value in src (i.e. a window of data should only come from a single source).
I've been previously compiling X/y pairs, with a little tf.keras.utils.Sequence to hack semi usable memory management. In looking for a better way, I found tf.keras.utils.timeseries_dataset_from_array, but, based on my understanding, it would have no concept of src, meaning a single X datum could be from numerous src's. How can I leverage something like tf.keras.utils.timeseries_dataset_from_array, but have it only extract windows of data that have one src value?
note: I'd like to get a rolling window. i.e. every possible window with overlap, from each source.

Progress
1
I successfully used timeseries_dataset_from_array, but it doesn't respect src
# ============= Prep ===========

import tensorflow as tf
import numpy as np

#creating numpy data structures representing the problem
X = np.random.random((100,5))
y = np.random.random((100))
src = np.array([0]*50 + [1]*50)
window_size = 5

#making a time series dataset which does not respect src
Xy_ds = tf.keras.utils.timeseries_dataset_from_array(X, y, batch_size = 2, sequence_length=window_size,
                                                     sequence_stride=window_size, shuffle=True)

# ============= Train ===========
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, InputLayer, LSTM, Flatten

#training a model, to validate the dataset is working correctly
model = Sequential()
model.add(InputLayer(input_shape=[window_size,5]))
model.add(LSTM(3))
model.add(Flatten())
model.add(Dense(1, activation='relu'))
optimizer = tf.keras.optimizers.Adam(learning_rate=0.001)

model.compile(loss='categorical_crossentropy', optimizer=optimizer, metrics=['accuracy'])
history = model.fit(Xy_ds,epochs=1)

2
Implemented mdaoust's solution, but I'm getting shape errors when training
# ============= Prep ===========

import tensorflow as tf
import numpy as np

#creating numpy data structures representing the problem
X = np.random.random((100,5))
y = np.random.random((100))
src = np.expand_dims(np.array([0]*50 + [1]*50),1)
window_size = 5

#appending source information to X, for filtration
X = np.append(src, X, 1)

#making a time series dataset which does not respect src
Xy_ds = tf.keras.utils.timeseries_dataset_from_array(X, y, sequence_length=window_size,
                                                     sequence_stride=1, shuffle=True)
def single_source(x,y):
    source = x[:,0]
    return tf.reduce_all(source == source[0])

#filtering by and removing src info
def drop_source(x,y):
    return x[:, 1:], y

def set_shapes(x,y, shape):
    x.set_shape(shape)
    return x,y

Xy_ds = Xy_ds.filter(single_source).map(drop_source)

# ============= Train ===========
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, InputLayer, LSTM, Flatten

#training a model, to validate the dataset is working correctly
model = Sequential()
model.add(InputLayer(input_shape=[window_size,5]))
model.add(LSTM(3))
model.add(Flatten())
model.add(Dense(1, activation='relu'))
optimizer = tf.keras.optimizers.Adam(learning_rate=0.001)

model.compile(loss='categorical_crossentropy', optimizer=optimizer, metrics=['accuracy'])
history = model.fit(Xy_ds,epochs=1)

Error:
ValueError: Input 0 is incompatible with layer sequential_3: expected shape=(None, None, 5), found shape=(None, None, 6)

Presumably related to this Github thread
I tried this and something like this, but no dice.

A: The simplest thing you can do is:

*

*Include the source as one of the coluns of X.

*Use timeseries_dataset_from_array.

*Use filter to drop slices that have mixed sources.
Xy_ds = tf.keras.utils.timeseries_dataset_from_array(...)

def single_source(x,y):
  source = x[:,0]
  return tf.reduce_all(source == source[0])

def drop_source(x,y):
  return x[:, 1:], y

Xy_ds = Xy_ds.filter(single_source).map(drop_source)

A: Based on mdaoust's answer, but the final working code.
Prep
This will create the time series dataset and do all the manipulation to format it correcly
# ============= Prep ===========

import tensorflow as tf
import numpy as np
batch_size = 32

#creating numpy data structures representing the problem
X = np.random.random((100,5))
y = np.random.random((100))
src = np.expand_dims(np.array([0]*50 + [1]*50),1)
window_size = 5

#appending source information to X, for filtration
X = np.append(src, X, 1)

#making a time series dataset which does not respect src
Xy_ds = tf.keras.utils.timeseries_dataset_from_array(X, y, sequence_length=window_size, batch_size=1,
                                                     sequence_stride=1, shuffle=True)

#filtering by and removing src info
def single_source(x,y):
    source = x[:,:,0]
    return tf.reduce_all(source == source[0])

def drop_source(x,y):
    x_ = x[:, :, 1:]
    print(x_)
    return x_, y

Xy_ds = Xy_ds.filter(single_source)
Xy_ds = Xy_ds.map(drop_source)
Xy_ds = Xy_ds.unbatch().batch(batch_size)

#printing the dataset
i = 0
for x, y in Xy_ds:
    i+=1
    print(x)
    print(y)
print('total batches: {}'.format(i))

Training
training, just to sanity check that everything is working
# ============= Train ===========
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, InputLayer, LSTM, Flatten

#training a model, to validate the dataset is working correctly
model = Sequential()
model.add(InputLayer(input_shape=[window_size,5]))
model.add(LSTM(3))
model.add(Flatten())
model.add(Dense(1, activation='relu'))
optimizer = tf.keras.optimizers.Adam(learning_rate=0.001)

model.compile(loss='categorical_crossentropy', optimizer=optimizer, metrics=['accuracy'])
history = model.fit(Xy_ds,epochs=1)

Important Note: in order for this to work, batching must occur after the filter and map are applied. That's why batch_size = 1 initially, then batching happens after.

redpajama_set_name: RedPajamaStackExchange


text:
Great Central Railway CEO steps down after less than a year
The GCR told the Echo that whilst it is recruiting for a new chief executive current director of the GCR, Richard Patching, will be the acting interim CEO.
Liam Coleman
THE CHIEF Executive of the Great Central Railway has stepped down from his position after taking on the role less than a year ago.
Andy Munro took over from former managing director Bill Ford in July last year and a spokesperson from the Great Central Railway (GCR) told the Echo that Andy had now stepped down as chief executive for his own family reasons.
Mr Munro took over from previous managing director Bill Ford who had been involved with the railway for the last 40 years.
The board issued an announcement that Mr Munro would be stepping down as CEO on Tuesday, May 16.
The GCR confirmed to the Echo that Mr Munro's decision to step down will not affect any of the ongoing plans for the new £18m heritage museum or the bridge over the Midland Mainline.
The GCR said: "We have a lot of great support from our many supporters and stakeholders in terms of funding and all projects including the museum and the bridge will continue to progress."
"The board would like to thank Mr Munro for his work with the Great Central Railway and to wish him well for the future."
The final plans for the heritage museum which will be part funded by the Heritage Lottery Fund were selected in October last year.
The new museum will be at its terminus Leicester North, near Birstall, and is expected to be open to the public in 2021.
It was also reported in the Echo last month that work to construct a bridge over the Midland Mainline in Loughborough to reunite two halves of the Great Central Railway had began.
The 30 metre structure will carry GCR trains as part of an 18 mile heritage line and the bridge itself will be craned into place over in late summer.


Massive Dynamic has over 10 years of experience in Design, Technology and Marketing. We take pride in delivering Intelligent Designs and Engaging Experiences for clients all over the World.Massive Dynamic has over 10 years of experience in Design, Technology and Marketing. We take pride in delivering Intelligent Designs and Engaging Experiences for clients all over the World.Massive Dynamic has over 10 years of experience in Design, Technology and Marketing. We take pride in delivering Intelligent Designs and Engaging Experiences for clients all over the World.Massive Dynamic has over 10 years of experience in Design, Technology and Marketing.


IQS Directory provides a comprehensive list of load sensor manufacturers and suppliers in British Columbia. Use our website to review and source top load sensor manufacturers with roll over ads and detailed product descriptions. Find load sensor companies that can design, engineer, and manufacture load sensors to your companies specifications. Then contact the load sensor companies through our quick and easy request for quote form. Website links, company profile, locations, phone, product videos and product information is provided for each company. Access customer reviews and keep up to date with product news articles. Whether you are looking for manufacturers of miniature load cells, strain gauges, torque sensors, or customized load sensors of every type, this is the resource for you.
Headquartered in Canada, ANYLOAD has been in business for 20 years. ANYLOAD is experienced in the design and production of high quality standard load cells, specialty load cells, weigh modules, indicators, scales for commercial and industrial applications, and wide varieties of weighing components. Load Sensors in British Columbia.
Stress-tek designs and manufactures custom and high volume weighing, force measurement, pressure and deflection sensors. The result is an extensive line of shear beam, bending beam, shear pin, tension and compression load cells. We design and manufacture digital, two-wire electronics to integrate with our load cells and sensors to provide complete solutions. Contact us! Load Sensors in Washington.


Please fill out the form below to submit your volunteer application.
Have you volunteered for Ribfest before?
This is the volunteer check in area, where People's Choice ballets are filled out, and Westjet Tickets are sold.


It plays a very important role to backup C Drive in Windows 7. In order to complete the task of system backup efficiently, a free tool-AOMEI Backupper can do great help.
Have you ever encountered any tiresome system problem in Windows 7, such as system crash, boot failure, etc? According a survey, there are many users that have suffered the pain of these serious system problem. And also, most of the users just want to find out solutions to deal with these bad things. Are you a member of them? Have ever thought about coming up with some ideas to relieve the bad effects of these problems in advance? For the sake of most of the users, AOMEI Technology has developed and released a professional backup software. It has been added a specially designed function of system backup that can help to backup C Drive to an image file, which can be used to restore the operating system to a previous state when there is any system problem. Apart from Windows 7, it can work all the editions of Windows operating system such as Windows 8/Vista/XP/2003/2008 etc.
As a powerful and free tool, the backup software of AOMEI has been regarded as one of the best backup programs by many users. It can support Server and Client editions. So Windows 7 is not an exception. The picture below is the main interface of this backup software.
Tips: download this freeware, install and launch it.
Step 1: Select "System Backup" under the "Backup" tab.
Step 2: The source partition-Drive C and the System Reserved Partition will be set automatically. And then, select a destination to store the image file. And then click "Start Backup".
Step 3: When operation is done, click "Finish" to exit.
The "task name" option can be set according to individual needs.
The "Backup Options" includes the functions of "Comments" "Compression" "Encryption" "Splitting" and so on. You can set any of them based on your own needs.
Therefore, if you need any help to backup C Drive Windows 7, just download this tool to assist you as soon as possible.


text:
Personalization vs. Privacy
Keeping online visitors safe while meeting service needs
By Marshall Breeding | November 1, 2019
In ensuring user privacy, libraries that provide personalized online services often encounter tensions and contradictions. Tools and technologies that offer opportunities for better engagement do not always draw a clear boundary between privacy and personalization.
Commercial websites aim to capture as much personal data as possible. This data powers a global advertising ecosystem designed to strengthen retail sales through finely targeted ad placement. To manage websites and internet technologies in ways that reflect their values, libraries invariably must make difficult choices and compromises.
While they may not be able to entirely isolate their web-based services from commercial technologies, they can take measures to limit exposure and protect patron privacy.
HTTPS at a minimum
Libraries must ensure that their websites provide adequate privacy protection, particularly HTTPS protocol. Without this standard encryption, visitors are vulnerable to exposure. Even with HTTPS, tracking agents placed on the site for analytics or advertising—or added inadvertently as components of a desired feature—can circumvent basic protections.
Almost all libraries use Google Analytics to measure website usage, in which case their data is collected by Google's servers. To help protect patron privacy, libraries can anonymize IP addresses before they are recorded. This essentially truncates the address so that it retains only some information about the user's general location. IP address anonymization can be configured in the administrative console of Google Tag Manager or specified in the JavaScript code. Because Google Analytics is based in the advertising ecosystem, it warrants careful handling to ensure that its use remains consistent with library privacy policies.
Web browsers now routinely flag unencrypted library websites as insecure and untrustworthy. A substantial portion of libraries continue to operate unencrypted websites, while others fail to implement basic HTTPS. The widespread use of tracking agents without employing an anonymization process means that some libraries are putting their patrons at greater risk.
Libraries often borrow scripts or widgets from other libraries or commercial sources to achieve the desired visual effects or functionality. These components may in turn include tracking agents or other code that can have an impact on patron privacy. To mitigate these threats, library staff can use the Ghostery tool to confirm which tracking agents have been installed. An audit allows libraries to identify all tracking agents deployed and review them against their privacy policies.
There is no fast or easy way to encourage the deployment of properly secured HTTPS. Many libraries have made a slow transition from obsolete technology to more modern alternatives. The libraries that remain represent a long tail with sparse resources and low awareness about the technical issues involved.
Patron opt-in
To support user services, recommendations, and social-sharing features, many libraries collect personalized data with patron consent. Users can opt in to allow data retention on borrowed items or other interactions in order to receive personalized services. A library's stated privacy policy can determine whether opt-in or opt-out options are set as a default. As libraries enhance their personalized services, they must consider both the benefits and the privacy risks.
In the future, privacy must be a key consideration in library website design to be consistent with libraries' values and strategic objectives.
MARSHALL BREEDING is an independent consultant, speaker, and author. He is editor of Smart Libraries Newsletter and the website Library Technology Guides. Adapted from "Protecting Privacy on Library Websites: Critical Technologies and Implementation Trends," Library Technology Reports vol. 55, no. 7 (Oct. 2019).
By the Numbers: Privacy
Stats on security and surveillance for Choose Privacy Week
Data Collection and Privacy
Balancing information needs with patron protection


Rhinoplasty can be performed under a general anesthetic, sedation, or with local anesthetic. Initially, local anesthesia, which is a mixture of lidocaine and epinephrine, is injected to numb the area and temporarily reduce vascularity.
There are two possible approaches to the nose: closed approach and open approach.
In closed rhinoplasty, incisions are made inside the nostrils and all the surgery is made through these incisions. Most of the surgeries are done with the closed technique, especially when removing a dorsal hump with or without reducing the nose width.
In open rhinoplasty, an additional inconspicuous incision is made across the columella (the bit of skin that separates the nostrils). Open rhinoplasty is indicated when important corrections of the tip of the nose must be done or when doing a secondary rhinoplasty. The surgeon first separates the skin and soft tissues of the nose from the underlying structures. The cartilage and bone is reshaped, and the incisions are sutured.
At the end of the surgery we place inside the nostrils vaselinated gauze that minimizes the bleeding after the surgery, tape over the nose and a stent or cast covering the nose for few days.
Depending on the case, we may shape a small piece of the patient's own cartilage or bone, as a graft, to strengthen or change the shape of the nose. Usually the cartilage is harvested from the septum. If there is not enough septum cartilage, which can occur in revision rhinoplasty, cartilage can be harvested from the concha of the ear or the ribs. In the rare case where bone is required, it is harvested from the cranium, the hip, or the ribs.
The best candidates are those looking for improvement, not perfection, in the way they look. Rhinoplasty can enhance your appearance and self-image, but it will not make you look like a movie star. Those that are physically healthy, psychologically stable, and have realistic expectations make the best candidates. Age can also be a consideration. Most doctors prefer not to operate on teenagers until after they have completed their growth spurt. It is also important to consider the teen's emotional state and if surgery is what they, and not their parents, truly want.


*  the process has a nonempty permitted capability set.
set-group-ID programs accidentally trusted the environment.
environment, or NULL if there is no match.
this string, since that would change the environment of the process.


Paul Frederick Klug, 91, of Buchanan, passed away on Friday, April 5, 2019 at Cartel Inns of Lakeland in St. Joseph.
Paul was born Monday, February 27, 1928 in Buchanan, the son of the late August and Mary (Pintzke) Klug. Paul married Elsie Jane Landauer on May 4, 1959 who preceeded him in death August 2, 1988. Much of his married life involved supporting and taking care of his wife who had multiple sclerosis. He was a proud and active member of Trinity Lutheran Church in Glendora, serving as treasurer for many years. Paul worked until retirement at Auto Specialties in St. Joseph. He and his companion, Ruth Retzke, were well known at many local restaurants enjoying many breakfasts and early dinners out. Paul particularly enjoyed fish sandwiches.
Paul is survived by his companion: Ruth Retzke; his granddaughters: Lindsay (Evan) Kuite and Marsie (Brian) Surguine; Sarah Klug; great-grandson: Aaron Kuite; and daughter-in-law: Nancy Klug.
He was also preceded in death by his son Wayne Klug; and his brothers: Herman, Erwin, and Arnold.


text:
The Good Pirates of the Forgotten Bayous
Fighting to Save a Way of Life in the Wake of Hurricane Katrina
Ken Wells; With a New Preface
20 b/w illus.
Description Reviews Awards Table of Contents
How a plucky coterie of Louisiana shrimp-boat captains faced down the most destructive hurricane in U.S. history—only to realize that the struggle to preserve their centuries-old culture had just begun
With a long and colorful family history of defying storms, the seafaring Robin cousins of St. Bernard Parish, Louisiana, make a fateful decision to ride out Hurricane Katrina on their hand-built fishing boats in a sheltered Civil War–era harbor called Violet Canal. But when Violet is overrun by killer surges, the Robins must summon all their courage, seamanship, and cunning to save themselves and the scores of others suddenly cast into their care.
In this gripping saga, Louisiana native Ken Wells provides a close-up look at the harrowing experiences in the backwaters of New Orleans during and after Katrina. Focusing on the plight of the intrepid Robin family, whose members trace their local roots to before the American Revolution, Wells recounts the landfall of the storm and the tumultuous seventy-two hours afterward, when the Robins' beloved bayou country lay catastrophically flooded and all but forgotten by outside authorities as the world focused its attention on New Orleans. Wells follows his characters for more than two years as they strive, amid mind-boggling wreckage and governmental fecklessness, to rebuild their shattered lives. This is a story about the deep longing for home and a proud bayou people's love of the fertile but imperiled low country that has nourished them.
Called "the Cajun Carl Hiaasen" by Tom Wolfe, Ken Wells is an editor-at-large for Bloomberg News in New York and a contributor to Bloomberg Businessweek.
Read Ken Wells's thoughts on storytelling in the new issue of Mayborn Magazine.
Click here to listen to an interview with Ken Wells on Book Report
"Gripping. . . . This is not another sad Katrina book. It's a book that dispassionately looks at what happened and why and relies on facts for impact. Everyone should read it."—Greg Langley, The Advocate (Baton Rouge)
"[This] off-the-beaten path Katrina story is one of the best. . . . In the glut of works about the devastation Katrina caused . . . Wells has found a fresh, compelling story. As a bonus, he is a superb reporter and accomplished stylist. Of the dozen Katrina books I have read so far, I am guessing The Good Pirates will stay with me the most vividly. . . . The individual survival stories make for adventure storytelling of the first order."—Steve Weinberg, Atlanta Journal-Constitution
"[Wells] nicely captures the flavor and color of the moment. . . . The author unabashedly celebrates the courage and pride of people in this 'forgotten backwater' when faced with the hurricane's onslaught. . . . A heartfelt tribute to badly battered folks whose 'gritty blue-collar-pluck,' declares Wells, may yet save their bayou way of life."—Kirkus Reviews
"Ken Wells is first and foremost a great reporter. Nothing escapes him, and yet every detail he includes counts. This book is literary journalism at its best."—Don Ranly, University of Missouri School of Journalism
"[An] amazing true story."—Susan Larson, Times-Picayune
"Vivid prose, first-hand testimony and solid, heartbreaking reportage make this disaster debrief hard to put down, and worth the attention of every U.S. citizen."—Publishers Weekly (Web Pick of the Week)
"The stories of the survivors . . . are unforgettable. . . . Wells has done a commendable job of bringing the threatened bayous of Louisiana to life."—Carolyn Kellogg, Los Angeles Times
"A wonderful book. . . . Unforgettable."—Monroe News-Star [Louisiana]
"Offers a human touch and a compassionate voice to many of [Katrina's] overlooked victims. . . . Not only relevant and timely, it's a terrific read."—William J. Cobb, Dallas Morning News
"Wells has done a great service. . . . Highly readable."—John Sledge, Mobile Press-Register
"Good Pirates reads like a Louisiana cultural study filled with local color and dialect. it is both a dignified testament to the spirit of the people of lower St. Bernard Parish and Louisiana's bayou country, and a solid historical journey through the area's past."—Gambit Weekly
"Framing the human-interest core of this book with context about St. Bernard's infrastructure failures, Wells makes a signal contribution to the expanding bibliography of the Hurricane Katrina disaster."—Booklist
Winner of the 2008 Harry Chapin Media Award in the Books category, presented by WHY (World Hunger Year).
Inside CIA's Private World
Declassified Articles from the Agency`s Internal Journal, 1955-1992
Edited by H. Bradford Westerfield
One True Theory and the Quest for an American Aesthetic
Martha Banta
An American Seafarer in the Age of Sail
The Erotic Diaries of Philip C. Van Buskirk, 1851-1870
B. R. Burg
The Sacred Remains
American Attitudes Toward Death, 1799-1883
Gary Laderman
100 Years on the Road
The Traveling Salesman in American Culture
Timothy B. Spears
The Fate of the Corps
What Became of the Lewis and Clark Explorers After the Expedition
Larry E. Morris
History > American Studies
Social Science > Anthropology
Social Science > Ethnic Studies
Political Science > Current Events
History > American History


text:
Fiscal issues should be at center of '16 campaign
Liberals, conservatives, Democrats, Republicans and independents all have a stake in fixing the debt
Brad Cook,
While politicians crisscross the state and talk about all sorts of issues in this off-year election, others are planting the seeds for important conversations to come.
First among the issues, in the eyes of many, is U.S. fiscal policy, specifically the continuing federal deficits and record national debt. Because of this, a new coalition of organizations has formed to raise the question of fiscal responsibility among those running for president.
A joint initiative by the Concord Coalition and the Campaign to Fix the Debt, two organizations with a similar mission, is beginning to contact New Hampshire citizens in an effort to mobilize them to confront presidential candidates.
Liberals, conservatives, Democrats, Republicans and independents all have a stake in fixing the debt. Indeed, the coalition will discuss generational responsibility as well as bipartisan responsibility for this issue, since older Americans use a disproportionate amount of federal monies on Social Security, health care and the like, and younger Americans are being robbed of their earning capacity and future economic well-being through the debt, and will be responsible for paying for it in the future.
Cook on Concord appears in each issue of NHBR and is written by Brad Cook, a shareholder in the Manchester law firm of Sheehan Phinney Bass + Green.
Click here to view all of Brad's columns
Led by Concord Coalition Executive Director Bob Bixby and Maya MacGuineas of the Campaign to Fix the Debt, the coalition recently held meetings in Concord and Manchester.
These are among the first efforts to recruit volunteers to the cause.
Fix the Debt's founders are Erskine Bowles and Alan Simpson, a Democrat and Republican, respectively, who chaired the Simpson-Bowles Commission to come up with the elements of a "grand bargain" to balance the budget and start reducing the debt.
Chaired by former New York Mayor Michael Bloomberg, former New Hampshire U.S. Sen. Judd Gregg and former Pennsylvania Gov. Ed Rendell – two Republicans and a Democrat – Fix the Debt's steering committee includes such notables as Kent Conrad, Pete Domenci, Sam Nunn, Alice Rivlin and other former officeholders and officials in the federal government.
In its explanation of "why our nation's fiscal future should be front and center" in the 2016 election, the coalition notes that the nation's future economic stability is threatened by policies that have created a debt of record proportions and will create an economic situation that will diminish prosperity, limit the next generation's future and threaten America's place in the world.
There is a structural problem caused by rising health care costs, an aging society and a tax code that does not address the nation's needs properly and needs to be changed. Because structural problems mean that deficits are here as part of the nation's process, the solution is to change the structure.
The leaders of the coalition recognize that in order to bring these issues before candidates in a way that will require answers requires public education, public involvement and the efforts of ordinary citizens to ask presidential hopefuls about the debt and deficit in an intelligent manner. Therefore, they are focusing on Iowa and New Hampshire as places to get the message out. They believe this may be the last chance to affect the federal budget before four more years pass.
If candidates can be persuaded to face the deficit and debt as a problem, recognize the need to come up with a plan to fix it and make it a part of their platforms, this campaign will have accomplished a great deal.
What are the obstacles? First, debt and deficit issues are not "sexy." Second, there are those on the left who think that any discussion of reigning in federal spending threatens the rights of the poor and elderly. Conversely, there are powerful forces on the right who pound candidates severely when anyone agrees to discuss taxes as part of fiscal policy reform.
Fear of these kinds of responses has a tendency to keep candidates in their partisan corners, either refusing to talk about cutting entitlement programs on the one hand or countenancing discussion of tax reform on the other.
A powerful coalition of voters needs to arise to persuade candidates that there is just as much danger in refusing to face the fiscal issues as there is in talking about them. Given the size and resources of those opposing such discussion, this is a formidable task.
All New Hampshirites should learn about the debt and deficit, listen to the Campaign to Fix the Debt and the Concord Coalition, participate and speak up.
Their country, their children and their future depends on it.
Those interested in contacting someone to volunteer to help in this effort or having a speaker describe the issue at a civic club or meeting, can contact Chase Hagaman, New England Regional Director of the Concord Coalition in Concord or send him an email at chagaman@concordcoalition.org.
Brad Cook, a shareholder in the Manchester law firm of Sheehan Phinney Bass + Green, heads its government relations and estate planning groups.
Categories: Cook on Concord, Opinion


text:
Q: Finding the first positive number in the array I want to show the first positive number in the array in the console blog, but according to my code, it displays the second one, which is 6. Please provide an answer to my problem and give an explain of how my code works.

let values = [-1, 5, -6, 6, -10, -5, 3, 4, -1, 8, 1, -10, 3];
  for (const number of values) {
            if (values[number] >= 0) {
                console.log(number); break;
            }
        } //6

        for (const key in values) {
            if (values[key] >= 0) {
                console.log(key);

            }
        } //6`enter code here`

A: Since you are using of it will return the element value,so you need to use number >= 0 instead of values[number] >= 0
Or you can use in to do it,in this case,you need to use values[number] >= 0 rather than number >= 0

let values = [-1, 5, -6, 6, -10, -5, 3, 4, -1, 8, 1, -10, 3];
       for (const number of values) {
            if (number >= 0) {
                console.log(number); break;
            }
        } //5

       for (const number in values) {
            if (values[number] >= 0) {
                console.log(values[number]); break;
            }
        } //5

        console.log("----------------------------")
        for (const key in values) {
            if (values[key] >= 0) {
                console.log(key);

            }
        } //6`enter code here`

A: You can iterate it with for loop with an index

let values = [-1, 5, -6, 6, -10, -5, 3, 4, -1, 8, 1, -10, 3];
  for (var i = 0; i<values.length; i++) {
            if (values[i] >= 0) {
                console.log(values[i]); break;
            }
        } //6

A: Condition should be number >= 0 instead of values[number] >= 0
Demo :

let values = [-1, 5, -6, 6, -10, -5, 3, 4, -1, 8, 1, -10, 3];

for (const number of values) {
  if (number >= 0) {
    console.log(number);
    break;
  }
}

A: you can try this simple for loop to find first positive number
let values = [-1, 5, -6, 6, -10, -5, 3, 4, -1, 8, 1, -10, 3];
  for(var i=0;i<values.length;i++){
      if(values[i]>=0){
          console.log(values[i])
          return
      }
  }


text:
Topology and Analysis
Integration of delta function
Thread starter benjamin_cro
benjamin_cro
Problem arises from next situation. If we have some distribution (of mass for example) on a ring which is given by
\begin{equation}
\rho=m\delta(\phi)
\end{equation} where phi is azimuthal angle.
What is the value of integral ?
\int_0^{2\pi} \! \rho \, \mathrm{d} \phi
If we use definition of delta function
\int_0^\infty \! \delta({x}) \, \mathrm{d} x=1/2
result is m/2 but in this problem we integrate on the whole domain so i am not sure if it is necessary to divide by half!
Related Topology and Analysis News on Phys.org
Hey benjamin_cro and welcome to the forums.
Hint: Sub in m*d(whatever_that_symbol_is_in_greek) into your equation and remember that Integral (a,b+c) = Integral (a,b) + Integral (b,c) where a < b < c (i.e. they are limits of the integral).
For convenience, I would probably take the lower limit of integration to be infinitesimally less than zero so that you get the result
$$\int_{0^-}^{2\pi} d\phi~m \delta(\phi) = m.$$
The reason I suggest this is because if you have a ring with a particle one it (which is where the mass is concentrated), then you can really assign the angular coordinate in any way you like and since you haven't changed the physical situation, you should get the same answer no matter how you do it. So, for instance, suppose I decide to orient the ring so that the mass is still at ##\phi = 0##, but I decide that ##\phi## is in the range ##[-\pi,\pi)##. Then, there is no issue at all:
$$\int_{-\pi}^\pi d\phi~m\delta(\phi) = m.$$
To put it in a slightly more technical way, really what you're doing is taking the delta function defined on the real line and compressing it onto the circle. Suppose you integrate the delta function against a periodic function f(x) (of period ##2\pi##, say)
$$\begin{eqnarray*}
\int_{-\infty}^\infty dx~f(x) \delta(x-x_0) & = & \sum_{k=-\infty}^\infty \int_{2\pi k}^{2\pi (k+1)} dx~f(x) \delta(x-x_0) \\
&= & \int_0^{2\pi}dx~\sum_{k=-\infty}^\infty f(x - 2\pi k) \delta(x-x_0 - 2\pi k) \\
&= & \int_0^{2\pi}dx~f(x) \sum_{k=-\infty}^\infty \delta(x-x_0 - 2\pi k) \\
&= & \int_0^{2\pi}dx~f(x) \delta_{\rm circ}(x-x_0~\mbox{mod} 2\pi).
\end{eqnarray*}$$
The function ##\delta_{\rm circ}(x-x_0~\mbox{mod} 2\pi)## is defined in such a way that it will give a contribution to the integral whenever ##x = x_0 - 2\pi k## for some integer k. So, even if x is outside the integration bounds, it will still contribute to the integral. So, even if ##x_0 = 0## and you take the definition that the delta function only contributes a half when the argument is zero at a boundary, the circular delta function actually contributes at both boundaries: ##x=0## and ##x = 2\pi##, so you would get two halves and the overall integral would give you ##m## again.
Thank you very much for your explanation.
meltchocolate
benjamin_cro said:
Is this definition of delta function?
Sometimes people say that the delta function is an even function and
its integral from -∞ to ∞ is 1, therefore it is 1/2 if it is integrated from -∞ to 0
or 0 to ∞.
Is this logic completely and mathematically right?
pwsnafu
meltchocolate said:
No, its a heuristic. Dirac is a distribution https://en.wikipedia.org/wiki/Dirac_delta#As_a_distribution so it acts on test functions. The two most popular classes of test functions are
smooth functions with compact support,
Schwartz functions.
Given a test function, f, we define
##\int_{-\infty}^\infty \delta(x) \, f(x)\, dx = f(0)##.
But f(x)=1 is not a valid test function, so ##\int_{-\infty}^\infty \delta(x) \, dx = 1## is invalid (it's actually undefined).
And ##\int_0^\infty \delta(x) \, f(x) \, dx = f(0)/2## is also convention. It's neither even nor odd. That's a property for functions whose domain is ℝ. What people mean is by that is choose a nanset which is even and approximate. The convention came about because
##\int_{-\infty}^\infty \delta(x) f(x) dx = \int_{-\infty}^0 \delta(x) f(x) dx + \int_0^\infty \delta(x) f(x) dx##
is desirable.
Edit: I forgot something. When you are not working on R, but on a locally compact abelian group, the test function space is the Schwartz-Bruhart space. On a ring (or a torus) that's all smooth functions, including f(x)=1. So it's allowed in this case.
Another edit: while I'm here, I also want to mention that ##\int_{-\infty}^\infty \delta(x) f(x) \, dx## is not an integral in the standard sense:
As a result, the latter notation is a convenient abuse of notation, and not a standard (Riemann or Lebesgue) integral.
pwsnafu said:
##\int_0^t \delta(x) \, dx##
Thank you for the detailed explanation.
I just wanted to know the above integral and asked a question.
Some say it becomes 1/2 and others say it is 1.
Actually, I'm not a mathematician and found this in a book of stochastic process.
Related Threads on Integration of delta function
Dirac delta function. Integral
Problem on integrating dirac delta function
Delta function
Variation of Dirac delta function
Residue of Dirac delta function?
Property of the dirac delta function
Dirac Delta function
What is the strength of a delta function.
Differentiating delta function composed with a function
A The 3-sphere has no boundary
I Basic question on tensor analysis
B Question on a property of a function which is not a metric
A Integrability along a Hilbert space?
B Applications of topological spaces not homeomorphic to R^n in physics


This could be the only web page dedicated to explaining the meaning of WUWT (WUWT acronym/abbreviation/slang word).
Ever wondered what WUWT means? Or any of the other 9127 slang words, abbreviations and acronyms listed here at Internet Slang? Your resource for web acronyms, web abbreviations and netspeak.
WUWT is "What's Up With That"
The definition of WUWT is "What's Up With That"
WUWT means "What's Up With That"
So now you know - WUWT means "What's Up With That" - don't thank us. YW!
What does WUWT mean? WUWT is an acronym, abbreviation or slang word that is explained above where the WUWT definition is given.


text:
Stickman Army: The Defenders
Addictive Games
dinosaur games
GamePix Exclusive
sharks games
snake games
Online free games
Stickman Army: The Defenders belongs to Action and it is often associated with Gun Games and War Games. This game has received 605 votes, 519 positive ones and 86 negative ones and has an average score of 4.2.
It is a game played in landscape and it's playable on Desktop and Mobile on www.gamepix.com. This game has been published on 2020-12-09 and updated on 2020-12-09.
Discover all games!


text:
This is a test for https://bugs.webkit.org/show_bug.cgi?id=64295. Chromium sometimes crashes in a mouse event on an HTMLSelectElement if the event handler removes the element from the DOM.
This test is manual because it requires a real select popup menu, which DRT doesn't provide.

To run, click on the select below, then select "Click me!" on the dropdown menu. We pass if the HTMLSelectElement disappears and we don't crash.

<form>
<select onmouseup="handleClick(event);">
<option></option>
<option>Click me!</option>
</select>
</form>

redpajama_set_name: RedPajamaGithub


Friday was busy because he had a gig over in Doncaster and it took us 40 minutes to get there. Friday night gigs don't give him much time to get ready when he's been at work. Driving home in the early hours we saw our first hard frost of the winter and half-expected snow over the weekend.
On Saturday he cleaned windows and we went shopping – household and DIY shopping. We also had our first pair of woodpeckers in the garden, following a nuthatch the day before. The poet was quite chuffed, saying he'd never had a woodpecker on his nuts before … or, for that matter, a nuthatch. I, of course, have had both. 🙂 On Saturday night he had another gig, this time over towards Pontefract. That took us 40 minutes to get to too.
The bread he baked was our first ever sour dough bread, and we weren't sure what to eat with it or on it. We tasted it warm and dripping with butter and I, personally, think that's fine. But he's made sandwiches with it too, and he says that's fine as well.
We spent some time at the living room window, watching the birds on the table, and looking for the woodpeckers again, when a pheasant bobbed over the fence and came to see what we were feeding everyone. This was a first for both of us. Apparently pheasants like nuts but they need to be ground so they don't choke on them (thank you, Susan).
Both days we intended on going for our first walk in the area, but I wasn't really up to it on Saturday, and we ran out of daylight and clement weather on Sunday – and yes, we did see flurries of snow. That wasn't what put us off, it was the squally showers in between the flurries that we didn't want to be out in.
During Sunday I was editing one of my big projects in between putting things on shelves and helping where I wouldn't be a hindrance. I still have that book to finish then I have another that's due back on Friday. I also have 2 books in now that need checking. I have most of my work stuff around me now and hope to get into a routine again this week.
Blimey, it's not long after 9am and here I am writing a blog post already. This is mostly because I could hardly wait to get into my office this morning, which is mostly because the office is finally here.
We had a very busy Saturday, first emptying what the poet has always called the studio, and then giving it a good dust and a Hoover. (Note: He did the Hoovering …) Then we went over to the other house to empty drawers and cupboards and dismantle the entire office.
It's a job I always dread because it's made up of modules built from solid wood with beech veneers. It's very heavy, and some items are very awkward. We had a narrow, steep flight of stairs to carry it all down at one end, and then another flight of stairs to carry it all up at the other end.
BUT he was like a pig in muck once he got his tools out (all one of it – a Phillips screwdriver was all he needed and he'd fetched his entire toolkit), and before long we had both cars loaded with bits of office and were headed back over the common.
It was nice to have an empty room to work with and quicker than it came down the office went back up again, and by early evening we'd moved all of the studio back in too.
We both still have loads of stuff to go through, piles of paperwork, things that need to be "filed" (in more ways than one). But the main thing is that I'm no longer camping out on the kitchen table and we can both work in the room together.
In the picture to the left you can see a chest of drawers in the bottom left-hand corner. This is filled with art supplies and photography equipment. Just above it, on the desk, is a canvas on an easel waiting to be painted on. Yes, the poet's an artist as well. The rest of the picture is office furniture and equipment, and the current editing WIP is in a folder to the right of the laptop, which is on a riser. To the right of the desk you can just see one of the poet's 7 guitars.
In the picture to the right you can see the poet's studio and 2 more of his guitars. Another 2 are in cases ready to go to the next gig … or maybe not unpacked yet from the last gig … He has 2 laptops here, soon to be 3, and several mixing desks/stations, and he has 2 keyboards.
The keyboard on the bottom is ace. The keys light up and if you hit them in the right order you can play a tune, complete with chords. That's my kind of keyboard.
Finally, for now, I've included a picture of the view from my desk. I've wanted a window for so long and now we have one each. There's a single red rose to the left of the windowsill, bought for me by the poet Friday night, and my old office clock in the middle.
The room is a smashing size and shape, but we're not sure what to call it. It gets referred to as the studio, the office, the music room, the creative room. The poor thing needs an identity, so maybe we'll just call it Abbey Road.
I'd love to write more but I have work to do – a diary to update, books to edit, stories to write. So I'll leave you with these pictures for now. Enjoy.


text:
Q: sending mail inserts a random space at the 995th character in the "to:" email list Im using php's mail() function to send an e-mail to multiple receivers.
If i enter as the first parameter of the "mail" function something like "example1@example.com,example2@example.com,example3@example.com,example4@example.com,example5@example.com,example6@example.com........" a string of more than 1000 characters, when I receive the e-mail I see a " "(an empty space) being inserted at about the 995th character and whatever e-mail was at that position is broken.
I read that this is because the mail server doesn't accept very long lines of string so you should insert a "\n" at every 70 or so characters.
Therefore, I tried using wordwrap($emailList) that should insert line-breaks.
Unfortunately this doesn't solve my problem and I'm running out of ideas right now.

A: Finally I was able to solve this problem like this:
I have the to list in a $strTo variable which contains the emails like this "email1, email2, email3, email4, "... with each email separated by ", " .
Before doing the mail() function I did this:
if($strTo != ""){
    $strTo = wordwrap($strTo,900,"\r\n ");
    $strTo .= "\r\n";
}

Which means I put carriage return, new line and a white space at every 900 characters(without breaking any words) and finally, at the end of the string I inserta carriage return and line feed.

A: wordwrap did not work for me. I guess it depends upon whether your mail server honor it or not. Also in my case the fold was occurring every 998th character.
I was able to solve using multiple 'To:' fields in message header. e.g.
header = <<EOF
From: xyz@xyz.com
To: abc1@abc.com, abc2@abc.com, abc3@abc.com, ...abc100@abc.com
CC: prq1@prq.com
Subject: 'my subject'
EOF

constructed multiple arrays of 20 each using array.each_slice(20). Then formed the header such that
header = <<EOF
From: xyz@xyz.com
To: abc1@abc.com, abc2@abc.com, abc3@abc.com, ...abc20@abc.com
To: abc21@abc.com, abc22@abc.com, abc23@abc.com, ...abc30@abc.com
To: abc31@abc.com, abc32@abc.com, abc33@abc.com, ...abc40@abc.com
CC: prq1@prq.com
Subject: 'my subject'
EOF

my mail server honored it.


Ian writes – "This is a scratch-built MAME machine, based around my mum-in-laws old Pentium 3. Much more fun than Quake 4…There are a lot of MAME machines around, but very few cocktail-style cabinets – they seem to be mostly upright. I also haven't seen any side-by-side two-player setups. The aluminium legs were sourced from a hospitality supply company…Oh, and the machine is wi-fi enabled, so I can use iTunes for dinner parties…" Link. I'm hoping Ian will post some more photos and details so folks can build their own too.


1. Rent a movie and take out dinner. This go to classic never fails. Call it boring, cheap, or plain old, old people style; it doesn't matter. It's a great way for you both to unwind after a long week and still enjoy each other's company.
2. Play a game. Open a bottle of wine and get out scrabble, or a deck of cards, or whatever game you prefer. It'll help take your mind off of the craziness of your week, and give you a chance to laugh and have fun.
3. Light a fire and roast marshmallows. I know this is seasonal, but honestly, even without the fire, you can still take out desert from your favorite bakery, sit outside in the back yard if it's warm, or snuggle up on a blanket next to a raging fire and share something sweet and delicious.
4. Go for a walk outside. If it's nice weather, hold hands and just go for a walk around the neighborhood, or even at a local park, beach, or trail.
5. Bring a picnic dinner to a park near by. Order take out from your favorite place, and instead of plopping down in front of the TV right away, bring the food to a park close by. It'll be a nice change of scenery, and a great way to take in some fresh air.


text:
using System.Globalization;

namespace MawMvcApp.ViewModels.Tools.Dotnet;

public class PathsModel
{
    public IList<string[]> Paths { get; } = new List<string[]>();

    public void PreparePaths()
    {
        Paths.Add(new string[] { @"Path.ChangeExtension(""C:\windows\test.txt"", "".dat"")", Path.ChangeExtension(@"C:\windows\test.txt", ".dat").ToString(CultureInfo.InvariantCulture) });
        Paths.Add(new string[] { @"Path.ChangeExtension(""C:\windows\test.txt"", ""dat"")", Path.ChangeExtension(@"C:\windows\test.txt", "dat").ToString(CultureInfo.InvariantCulture) });
        Paths.Add(new string[] { @"Path.ChangeExtension(""/etc/passwd"", "".txt"")", Path.ChangeExtension("/etc/passwd", ".txt").ToString(CultureInfo.InvariantCulture) });
        Paths.Add(new string[] { @"Path.ChangeExtension(""/etc/passwd"", ""txt"")", Path.ChangeExtension("/etc/passwd", "txt").ToString(CultureInfo.InvariantCulture) });
        Paths.Add(new string[] { @"Path.ChangeExtension(""/etc/passwd/"", ""txt"")", Path.ChangeExtension("/etc/passwd/", "txt").ToString(CultureInfo.InvariantCulture) });

        Paths.Add(new string[] { @"Path.Combine(""C:\test\"", ""file.txt"")", Path.Combine(@"C:\test\", "file.txt") });
        Paths.Add(new string[] { @"Path.Combine(""C:\test"", ""file.txt"")", Path.Combine(@"C:\test", "file.txt") });
        Paths.Add(new string[] { @"Path.Combine(""C:\test"", ""C:\file.txt"")", Path.Combine(@"C:\test", @"C:\file.txt") });
        Paths.Add(new string[] { @"Path.Combine(""/etc"", ""passwd"")", Path.Combine("/etc", "passwd") });
        Paths.Add(new string[] { @"Path.Combine(""etc"", ""passwd"")", Path.Combine("etc", "passwd") });
        Paths.Add(new string[] { @"Path.Combine(""/etc"", ""/usr"")", Path.Combine("/etc", "/usr") });

        Paths.Add(new string[] { @"Path.GetDirectoryName(""/etc/passwd"")", Path.GetDirectoryName("/etc/passwd")! });
        Paths.Add(new string[] { @"Path.GetDirectoryName(""/etc/passwd/"")", Path.GetDirectoryName("/etc/passwd/")! });
        Paths.Add(new string[] { @"Path.GetDirectoryName(""C:\windows\system32"")", Path.GetDirectoryName(@"C:\windows\system32")! });
        Paths.Add(new string[] { @"Path.GetDirectoryName(""C:\windows\system32\"")", Path.GetDirectoryName(@"C:\windows\system32\")! });

        Paths.Add(new string[] { @"Path.GetExtension(""/etc/passwd"")", Path.GetExtension("/etc/passwd") });
        Paths.Add(new string[] { @"Path.GetExtension(""/etc/passwd/"")", Path.GetExtension("/etc/passwd/") });
        Paths.Add(new string[] { @"Path.GetExtension(""/etc/passwd/.txt"")", Path.GetExtension("/etc/passwd/.txt") });
        Paths.Add(new string[] { @"Path.GetExtension(""C:\windows\test.txt"")", Path.GetExtension(@"C:\windows\test.txt") });

        Paths.Add(new string[] { @"Path.GetFileName(""/etc/passwd"")", Path.GetFileName("/etc/passwd") });
        Paths.Add(new string[] { @"Path.GetFileName(""/etc/passwd/"")", Path.GetFileName("/etc/passwd/") });
        Paths.Add(new string[] { @"Path.GetFileName(""/etc/passwd/.txt"")", Path.GetFileName("/etc/passwd/.txt") });
        Paths.Add(new string[] { @"Path.GetFileName(""C:\windows\test.txt"")", Path.GetFileName(@"C:\windows\test.txt") });

        Paths.Add(new string[] { @"Path.GetFileNameWithoutExtension(""/etc/passwd"")", Path.GetFileNameWithoutExtension("/etc/passwd") });
        Paths.Add(new string[] { @"Path.GetFileNameWithoutExtension(""/etc/passwd/"")", Path.GetFileNameWithoutExtension("/etc/passwd/") });
        Paths.Add(new string[] { @"Path.GetFileNameWithoutExtension(""/etc/passwd/.txt"")", Path.GetFileNameWithoutExtension("/etc/passwd/.txt") });
        Paths.Add(new string[] { @"Path.GetFileNameWithoutExtension(""C:\windows\test.txt"")", Path.GetFileNameWithoutExtension(@"C:\windows\test.txt") });
        Paths.Add(new string[] { @"Path.GetFileNameWithoutExtension(""C:\windows\test.txt.pgp"")", Path.GetFileNameWithoutExtension(@"C:\windows\test.txt.pgp") });

        Paths.Add(new string[] { @"Path.GetFullPath(""/etc/passwd"")", Path.GetFullPath("/etc/passwd") });
        Paths.Add(new string[] { @"Path.GetFullPath(""/etc/passwd/"")", Path.GetFullPath("/etc/passwd/") });
        Paths.Add(new string[] { @"Path.GetFullPath(""/etc/passwd/.txt"")", Path.GetFullPath("/etc/passwd/.txt") });
        Paths.Add(new string[] { @"Path.GetFullPath(""etc/passwd"")", Path.GetFullPath("etc/passwd") });
        Paths.Add(new string[] { @"Path.GetFullPath(""C:\windows\test.txt"")", Path.GetFullPath(@"C:\windows\test.txt") });

        Paths.Add(new string[] { @"Path.GetInvalidFileNameChars()", string.Join(",", CharArrayToStringArray(Path.GetInvalidFileNameChars())) });

        Paths.Add(new string[] { @"Path.GetInvalidPathChars()", string.Join(",", CharArrayToStringArray(Path.GetInvalidPathChars())) });

        Paths.Add(new string[] { @"Path.GetPathRoot(""/etc/passwd"")", Path.GetPathRoot("/etc/passwd")! });
        Paths.Add(new string[] { @"Path.GetPathRoot(""/etc/passwd/"")", Path.GetPathRoot("/etc/passwd/")! });
        Paths.Add(new string[] { @"Path.GetPathRoot(""/etc/passwd/.txt"")", Path.GetPathRoot("/etc/passwd/.txt")! });
        Paths.Add(new string[] { @"Path.GetPathRoot(""etc/passwd"")", Path.GetPathRoot("etc/passwd")! });
        Paths.Add(new string[] { @"Path.GetPathRoot(""C:\windows\test.txt"")", Path.GetPathRoot(@"C:\windows\test.txt")! });

        Paths.Add(new string[] { @"Path.GetRandomFileName()", Path.GetRandomFileName() });

        Paths.Add(new string[] { @"Path.GetTempFileName()", Path.GetTempFileName() });

        Paths.Add(new string[] { @"Path.GetTempPath()", Path.GetTempPath() });

        Paths.Add(new string[] { @"Path.HasExtension(""/etc/passwd"")", Path.HasExtension("/etc/passwd").ToString(CultureInfo.InvariantCulture) });
        Paths.Add(new string[] { @"Path.HasExtension(""/etc/passwd/"")", Path.HasExtension("/etc/passwd/").ToString(CultureInfo.InvariantCulture) });
        Paths.Add(new string[] { @"Path.HasExtension(""/etc/passwd/.txt"")", Path.HasExtension("/etc/passwd/.txt").ToString(CultureInfo.InvariantCulture) });
        Paths.Add(new string[] { @"Path.HasExtension(""etc/passwd"")", Path.HasExtension("etc/passwd").ToString(CultureInfo.InvariantCulture) });
        Paths.Add(new string[] { @"Path.HasExtension(""C:\windows\test.txt"")", Path.HasExtension(@"C:\windows\test.txt").ToString(CultureInfo.InvariantCulture) });

        Paths.Add(new string[] { @"Path.IsPathRooted(""/etc/passwd"")", Path.IsPathRooted("/etc/passwd").ToString(CultureInfo.InvariantCulture) });
        Paths.Add(new string[] { @"Path.IsPathRooted(""/etc/skel/"")", Path.IsPathRooted("/etc/skel/").ToString(CultureInfo.InvariantCulture) });
        Paths.Add(new string[] { @"Path.IsPathRooted(""C:\windows\system32"")", Path.IsPathRooted(@"C:\windows\system32").ToString(CultureInfo.InvariantCulture) });
        Paths.Add(new string[] { @"Path.IsPathRooted(""C:\windows\system32\"")", Path.IsPathRooted(@"C:\windows\system32\").ToString(CultureInfo.InvariantCulture) });
        Paths.Add(new string[] { @"Path.IsPathRooted(""etc/passwd"")", Path.IsPathRooted("etc/passwd").ToString(CultureInfo.InvariantCulture) });
        Paths.Add(new string[] { @"Path.IsPathRooted(""windows\system32\"")", Path.IsPathRooted(@"windows\system32\").ToString(CultureInfo.InvariantCulture) });
    }

    private string[] CharArrayToStringArray(char[] array)
    {
        string[] result = new string[array.Length];

        for (int i = 0; i < array.Length; i++)
        {
            result[i] = array[i].ToString(CultureInfo.InvariantCulture);
        }

        return result;
    }
}


text:
Qld cyber experts say digital licences could help prevent identity theft, as tech trial gets underway
ABC Wide Bay
By Johanna Marie
Posted FriFriday 1 MayMay 2020 at 1:31amFriFriday 1 MayMay 2020 at 1:31am , updated FriFriday 1 MayMay 2020 at 1:34amFriFriday 1 MayMay 2020 at 1:34am
The digital licence trial has started on the Fraser Coast with the first participants signed up (Supplied: Department of Transport and Main Roads)
Queensland's first digital driver's licences have been rolled out on the Fraser Coast and developers and experts agree, the technology gives users more protection against identity theft.
Queensland is conducting a trial of digital licences, with users already pleased by its easy accessibility
Cyber experts say the new technology could help prevent identity theft
Digital licence holders warned mobile devices must be up-to-date or installed with anti-virus protection to ensure they are not vulnerable to hackers
The Queensland trial started in late March, following New South Wales and South Australia already rolling out the technology.
The State's Department of Transport and Main Roads said since the launch of its trial just over a month ago, a handful of motorists have already signed up to be involved.
Information technology company Thales Australia, is behind the development of the app, and director Josh Polette said encryption is used to secure people's personal details.
"Everyone when they first get the digital licence will be required to prove who they are to TMR or the Queensland Government," he said.
"There will be different security mechanisms and passwords and pin numbers that people will need to use."
What do users think?
Maryborough learner driver Hayden McIntyre, is among those trialling the digital licences.
Teenager Hayden McIntyre says having a digital licence saves him time before jumping in the car. (Supplied: St Mary's College Maryborough)
He said it's meant he doesn't have to remember his physical licence before jumping behind the wheel.
"I think it will be really good to have on your phone," he said.
"I have my phone with me all the time."
The Department of Transport and Main Roads said eligible Fraser Coast residents were still able to sign up with the trial expected to continue until mid-year.
Less personal information shared
Mr Polette said the digital licence app gives users more control over what information they share.
This includes when they're required to show proof of age.
The app's developers say users will have more control over personal information sharing. (Supplied: Department of Transport and Main Roads)
"At the moment if you go somewhere and you're required to present your driver's licence it contains your name, your address, your date of birth and all those things," he said.
"With the digital licence app you won't have to show your address or your full name ... it gives people more flexibility and more control over their private information."
Want more local news? Sign up to the Wide Bay Weekly email newsletter.
Cyber Security Professor David Lacey, who's with the University of the Sunshine Coast, agreed the app was secure.
He said it could help prevent identity theft because people will be able to withhold private information like their driver's licence number.
"If you can protect that number in ways where you don't have to reveal it to prove the age you are, then we think there's a real benefit in doing that," he said.
Still a need for protection
Professor Lacey said while the app has good encryption, people should also take steps to protect their devices from being hacked.
"If you haven't got anti-virus protection on your phone, tablet or home computer then you are going to be vulnerable," he said.
"Make sure your device is updated to the most current version of its operating system, whether it's an Apple or Android."
While the technology has been earmarked as a way of the future, the Department of Transport and Main Roads has confirmed the technology is optional.
A spokesperson said physical licences will continue to be accepted.
Professor Lacey said this is crucial, as there's people who don't have smart phones and there could be issues with phone batteries going flat.
"It would be wrong to disadvantage a portion of the community... who don't have the provisions of using a smart phone," he said.
Posted 1 MayMay 2020FriFriday 1 MayMay 2020 at 1:31am , updated 1 MayMay 2020FriFriday 1 MayMay 2020 at 1:34am
Digital licences not accepted at bottle shops and car hires, critics say
It's known as the ID 'golden ticket'. Once fraudsters get hold of it your life is forever compromised
More on coronavirus
See our full coverage of coronavirus
ABC中文 | 新冠疫情特别报道
Pandemik virus corona
Charting the pandemic: Latest data on the NSW and Victoria outbreaks
Victorians flee NSW ahead of border closure, leaving tourism operators in tears
Sydney may have 'missed the boat' for effective lockdown, expert says
What border restrictions are in place in each state and territory for NSW and Victorian travellers
The Oxford vaccine is now available. Why is this so significant in the battle to control COVID-19?


text:
Q: Apache Pig Allocation & Parsing Issue With Count currently learning Apache Pig with Hadoop and using a huge data set of 62million. Just trying to do a normal COUNT function and continually get errors. I have 8gigs of RAM allocated and I could easily do it with HIVE, but seem to get parsing issues or heap allocation issues, its different every time. I'm using hadoop on top of a virtual machine.
The errors are:

file script.pig, line 3, column 39> Failed to generate logical plan.
  Nested exception:
  org.apache.pig.backend.executionengine.ExecException: ERROR 1070:
  Could not resolve count using imports: [, java.lang.,
  org.apache.pig.builtin., org.apache.pig.impl.builtin.]
ERROR org.apache.pig.PigServer - exception during parsing: Error during parsing. Could not resolve count using imports: [, java.lang.,
  org.apache.pig.builtin., org.apache.pig.impl.builtin.]
ERROR 1070: Could not resolve count using imports: [, java.lang., org.apache.pig.builtin., org.apache.pig.impl.builtin.]
ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1070: Could not resolve count using imports: [, java.lang., org.apache.pig.builtin.,
  org.apache.pig.impl.builtin.]

My Pig Code
a = LOAD 'bigData_orc' using org.apache.hive.hcatalog.pig.HCatLoader();
b = group a ALL;
c = foreach b generate group as rap, count(a) as counter;
dump c;`

A:
Could not resolve count

Try to capitalize the COUNT() Pig function

A: I reset my environment variables to their original state. I then reset the admin password, logged in as admin, and ran updated all environment variables through Ambari. Ambari was helpful enough to shoot over other variables that needed more space allocation as well. Was able to up my heap allocation up to 20GB's of RAM & was able to count all 68 million rows via Pig.


See how to use spec-first API development.
My team builds integrations. A lot of integrations. Over the years, this has meant building a number of greenfield REST APIs for both internal and external consumption. In the past 12 months, we have pivoted our thinking away from "pull in data from external vendors" to "have external vendors push data to us." This, in turn, has seen an increase in the number of APIs we are designing and building.
Historically, our API design has been largely implementation-driven. Recently though, we have moved to spec-first API design and have seen some great benefits including reduced development times, tighter feedback loops, and better API design overall.
Could the spec-first approach work equally well for your project? Read on and find out.
To set the scene, let's take a look at a recent project to provide feature flag integration in Jira (yep, that's what my team builds). This project involved building a new API that external vendors could use to associate feature flags with Jira issues. This information would then be surfaced in the Jira issue view.
A tight deadline – From go-to-woah we had around eight weeks; hands-on-keyboards was closer to six weeks.
External customers – We had three external launch partners who were looking to launch with us; they needed to build their side of the integration in the same timeframe, including consuming our new API (which didn't exist yet).
Unknown unknowns – We use feature flags quite heavily when developing Atlassian tools, but we have been using a single vendor and have limited experience with the models used by other feature flag vendors. In this project we needed to ensure that the domain model and API we came up with was flexible enough to cater for all feature flag vendors.
These constraints led us to one overarching driver: we needed to move quickly, and iterate on our API fast as we received feedback from our external customers.
Historically, we've designed and built Jira APIs in an implementation-first style. We might start with some initial fleshing out in Confluence to get the high-level design nailed down, but the real detailed API design happened at implementation time.
Doing API design this way has a couple of nice properties. The end result of the process is a working API implementation – there's very little double handling going on. Plus, you can evolve the API as you encounter edge cases during unit and integration testing.
Some people would also argue that it has the benefit of keeping your API spec in sync with your implementation. The downside is that it also makes it too easy to introduce unintentional breaking changes to your API during maintenance, unless you have strict discipline or spec diffing/pact testing in place to detect it.
Slow feedback loops – Your feedback loop from "start design" to "get feedback" is measured in days or weeks. Even if you adopt a multi-phased implementation approach where you leave rigorous testing until after the initial API design is approved, chances are you're still going to be implementing a bunch of code before you can get anything up for review. If you need to get feedback from external customers this feedback loop is further extended with deployment cycles etc.
Context is spread across multiple places – When you open a pull request, there is no easy way to separate out the API design from the implementation details, and reviewers need to keep the overall API shape in their head as they review multiple source files.
Low-value review feedback – Related to #2, review feedback tends to end up being less about the API design and more about implementation details ("I think this should be moved to a separate class," "Could we introduce some composition here to improve re-use," etc.). While this is great for the implementation quality, it distracts from the goal of getting a solid API design.
Frameworks leak into the design – This is my pet peeve. I often see framework concerns leaking into API design because it makes implementation easier, rather than because it makes the resulting API better. I object to having my frameworks dictate how my API behaves. How many times have you seen comments like "I did it this way because otherwise, I would need a custom Jackson de-serializer"?
Your API spec is limited by the available tooling – Many Swagger generators don't have full spec coverage and it can be painful to coerce them into generating the spec you want. We have had a lot of trouble in Java-land trying to get rid of readOnly flags (why should we break our immutable data model just to make the spec generation happy???) and to be able to specify the maximum number of items in an array (you just can't do it with the current Swagger annotations).
For our case study project, this implementation-first approach wasn't going to cut it. Critically, we needed a much tighter feedback loop. We couldn't afford to lose a week before we got the first feedback from our external customers on whether our proposed data model would work for them.
Design the API as a Swagger specification –This is a simple format that has an important benefit over using something like a Confluence page: it is a usable artifact. You can generate user documentation directly from it, use it in contract testing, and even use it to generate your implementation if desired.
Get review feedback on the API design as pull requests on the Swagger spec –This has the nice property that reviewers have the entire API context at hand, and (anecdotally) I have found leads to higher-value review feedback because it is about the API design and consistency, not the implementation details.
Encode example interactions as Pact files – As a way of showing our customers what example interactions with the API would look like, we added example Pact files that show what such interactions would look like. The great thing about this is we can validate that the examples adhere to our spec using the swagger-mock-validator which ensures our examples are kept up to date as we evolve our API.
Provide simple tooling to preview the spec –Some people are happy reading Swagger json or yaml, others prefer a GUI. We provided super-simple tooling to allow our customers to preview the spec in swagger-ui if desired.
Use the spec to validate your implementation – swagger-request-validator or swagger-mock-validator are great tools to validate that your implementation matches the spec.
We found this approach to be very successful. We got meaningful feedback from the team and our external customers and were able to iterate on the API design really quickly.
It also meant that our integrators could begin implementation on their side without needing to wait for us to finish our API implementation. They could build mocks from the Swagger spec and use that to drive tests of their implementation with confidence that it would match our implementation. We got some really positive feedback from our external partners on this approach!
Tight feedback loops. You can get internal and/or external feedback within hours, not days.
Effective feedback. The review feedback you get is about the API design, not implementation details.
Minimal wasted effort. The Swagger spec is usable on both the Provider and Consumer side for contract validation and code generation (which a Confluence page isn't), and you haven't invested a lot of effort in implementation in the case where large-scale API changes are needed after review.
Contract testing for safety. We get immediate feedback in our tests when we make a breaking change to our API implementation by validating against our API spec.
I'm not going to pretend everything with this approach is sunshine and rainbows. We've found it to be a great way to build APIs, but there have been a few kinks. We're working on ironing them out and iterating on the overall process.
Giving examples of bad requests – The swagger-mock-validator does a great job of validating the Pact example requests, but at the moment you can't tell it to ignore request validation in the cases where you want to demonstrate a bad request and the expected response. It's on our backlog, though – coming soon!
Detecting breaking changes to the API spec – We currently don't do any diffing on our Swagger specs to detect breaking changes. This is less important during the initial design phase, but once you hit v1.0 it becomes very important not to inadvertently introduce breaks. This is actually less of a problem in spec-first design as you can more easily pick up accidental breakages, but it's always nice to have tools to detect this for you. The contract-testing-cli has functionality for doing this sort of detection – we just haven't integrated it into our process yet.
Merging APIs – This one is fairly specific to our team, but our APIs are a small part of the broader Jira Software REST API and we needed to come up with a nice way to merge multiple Swagger specs into a single document that we then use to generate our user documentation from. There is some tooling available for this which is becoming more mature.
To pull off this approach and ensure we can do it safely, we leverage some awesome tooling developed within Atlassian and the wider OSS community.
Swagger is an API specification format and supporting tooling. It has become the de-facto standard for REST API specification in the form of the OpenAPI initiative (of which Atlassian is a member). It is also the standard format for REST API specifications in Atlassian.
A super simple way to preview your Swagger / OpenAPI specifications in a pretty GUI during development. Its also a great way for your customers to explore your API if they don't like staring at JSON or YAML.
Pact is a consumer-driven contract testing tool used extensively at Atlassian. It defines a schema for 'pacts' which are request/response interactions against an API.
We use this format to provide example API interactions. The beauty of using Pact for this (rather than a README or Confluence page etc.) is that the example interactions can be validated against the API spec using the swagger-mock-validator. This means our examples are always up-to-date with the API as we evolve it.
The swagger-request-validator is a Java library for validating request/response interactions against a Swagger / OpenAPI specification. We use it in our REST Assured tests to validate that our implementation matches our specification. This gives us the confidence that we can let our customers work from our API specification at the same time as we build out our implementation. On the other side of the fence, consumers can use the WireMock module to ensure that the mocks they use to drive their tests also adheres to the spec.
For non-Java projects, the swagger-mock-validator fills the same role as the swagger-request-validator. It is used to validate that Pact files adhere to an API spec, and can be used on both the producer and consumer side. We use it to validate that our example interactions validate against our API specification, and that our API specification matches our proposed request/response interactions.
Swagger Codegen lets you generate server stubs and clients for APIs based on a Swagger / OpenAPI specification. Our customers can use this to generate clients that will be able to interact with our API, and they can use it to generate mock servers to develop against while the wait for our implementation to be complete.
Published at DZone with permission of James Navin . See the original article here.


We have different tracks to learn all techniques in motocross sport. All advanced riding techniques are based on the basic techniques. Comparable to building a skyscraper, the basic techniques represent the foundation. The more solid and perfect the foundation, the faster and higher you can build. Riding motocross faster can never be forced but is only possible by improving riding skills. The faster you go, the smaller the time area gets to react and the more precise the balance from the stance has to be. The greater the speed, the more perfect the timing and the control over the machine has to be. All of this can be learned in the correct order within a motocross training at MX-Academy.
If someone has already learned wrong basic techniques, it is very elaborate and much discipline is necessary to reduce these habits and train the corret motion sequences. Because of this, it is much more effective to learn the correct riding techniques at a qualified motocross training. This prevents unnecessary detours. Because of this, quality in motocross training is much more meaningful than quantity.
All motocross material can be rented at MX-Academy. We offer motocross training for kids. Information about that can be found at the site Kids-Motocross. We also have small and light motocross bikes for women and also motocross newcomers are warmly welcome to visit MX-Academy. Information for this can be found at site women motocross. We run motocross training in different groups and analyze the weaknesses of every rider. Accordingly, we are able to perform an individually adapted motocross training for every rider.
The advanced techniques like all jumping techniques, sand riding, groove riding, curve techniques, drifting and many more cannot be achieved by attending only one motocross training. It is possible to get the necessary input and train on his/her own afterwards. Much more effective and without the danger to train something wrong, we offer the motocross trainings in our Motocross Team of MX-Academy. We warmly welcome every motocross rider in our motocross trainings who understands that one can only rider faster with the right techniques.
For riders with enough will and talent who additionally want to perform the necessary training, it is possible to join the official Honda team of MX-Academy – sponsoring inclusive.
All motocross Training dates at MX-Academy can be seen in the mx event schedule. It is also possible to book the matching date there. If you have questions about motocross training at MX-Academy do not hesitate to write an E-Mail or call. We are looking forward to welcome you at MX-Academy!
General information about physical and mental requirements and riding techniques can be found at the site Motocross Sport.
The motocross related situation in Switzerland can be checked at the site Motocross Switzerland.
Maybe you are also interested in the following links: motocross as a corporate event with MX-Academy or motocross training as birthday gift or Christmas gift.
If you are looking for new motocross equipment, you can find many interesting offers at motocross shop of MX-Academy. Apart from buying a Motocross, you can also buy many different motocross bikes.
Motocross training in Zurich, Winterthur, Frauenfeld, St.Gallen, Lucerne, Chur, Innerschweiz, Aarau, Central Switzerland, Eastern Switzerland and Northern Switzerland, Thurgau, Solothurn, Schaffhausen, Berne, Aargau, Schwyz, Glarus, Graubünden, Biel, Rheintal, Uster, Basel.


Located in Sumner, Washington, The Secret Garden Tea Room & Gift Shop occupies a beautiful Victorian mansion. The Herbert Williams House, built in 1890, is listed on the National Historic Register. Exhibiting Queen Anne and Italianate design elements, the home features detailed fir moldings and ornate brass hardware. The charm of the original Victorian architecture provides an elegant, yet warm ambiance in which to enjoy lunch or a traditional English-style Tea served on a 3-tier stand. We are proud to say that all of our food is prepared in-house with our own "from scratch" recipes. We even grow many of our herbs in our gardens.
Our gift shop is stocked with tea-time treasures and a variety of delightful gifts including our own loose-leaf teas, fanciful jewelry and accessories, and charming floral accent for your home.
Everything about the Secret Garden is GREAT ! You feel at home the moment you walk in the door, down to earth hospitality, the smell of scones baking in the oven. The most wonderful homemade foods, beyond what your grandmother ever made. A large variety of flavors in Black, Red, and Green Teas that are sure to warm your heart as well as your tummy. The beautiful old Victorian house reaches out and hugs you with its charming personality. A gift shop that will supply you with tasteful items to fill your own home with warmth. The owners as well as their staff are kind, friendly and ready to serve their guest with an experience they wont forget, and that will leave you with an eagerness to return and share a meal, or a three tier high tea with a loved one or a friend. Give yourself a wonderful treat at the Secret Garden Tea house and gift shop in Sumner, you deserve it.
Best tea room around, check it out...you will love it!!
I've been visiting The Secret Garden Tea Room for years. I absolutely love the Victorian atmosphere and the tea selection is amazing! The food served is excellent as well. I would definitely recommend them to anyone looking for amazing loose leaf tea!
Very Yummy, perfect Victorian House and setting. Lovely tea selection and great gift store!
Cute! Good food and tea!
servers knowledge and enthusiasm along with quality and ambience are top notch!
Cute! Good food! Wonderful to come at Christmas!