What is "The Triplesec Diary?"
It is an encrypted diary/journal that runs in your web browser
How Does It Work?
The Triplesec Diary uses a javascript library called triplesec.js to encrypt your diary before writing it out on your computer. The app stores your encrypted diary in your browser's local storage.
How Do I Know It is Secure?
At some point we have to trust the encryption software writers.
For this apps part, it never sends your diary across the internet, encrypted or otherwise. It never writes the unecrypted text of your diary to localstorage, it only keeps it in memory. Whenever you save, the content of your diary is encrypted, then written to your browser's local storage.
Provided you aren't actively using your diary and your computer hasn't been compromized in some manner, you should be safe.
Can the NSA Listen In?
Your actual diary is never sent across the internet, so there is nothing to eavesdrop on. Of course, since the diary must be decrypted to show it to you on your screen, nothing prevents a trojan from scraping your screen to read your diary. Also, if you have a trojan, nothing prevents it from simply listening to your keystrokes and recording your password.
Practice good sanitation
What are the Passphrase Requirements?
The only requirement is that the passphrase is at least one letter, number or symbol long. In general, the longer, the better. A good technique is to use four or more random dictionary words to create a long, easy to remember password. Another good technique that can be used on its own, or in combination with the prior suggestion, is to use a password manager.


Connecticut reports 2 flu deaths in adults over 65
by Alexandria HeinConnecticut health officials confirmed two flu-related deaths in two adults over age 65 last week, marking the state’s first fatalities of this year’s influenza season.
In a news release posted Thursday, the two individuals were identified as a resident of Fairfield County and a resident of Litchfield County, but officials did not elaborate further. The department of health also noted that 47 patients have been hospitalized as a result of the flu between Aug. 25 and Nov. 9. The majority of those cases involved influenza type A, with only three being associated with influenza B viruses.
PORTUGUESE BABY BORN MISSING EYES, NOSE, PARTS OF SKULL RELEASED FROM HOSPITAL, REPORT SAYS
“I advise all Connecticut residents to take the proactive step to protect their health during flu season by getting a flu shot,” said DPH Commissioner Renee D. Coleman-Mitchel, in the news release. “Flu vaccines are safe and effective and can either help prevent you from becoming infected by this serious virus or help lessen your symptoms if you do get sick. Talk to your health care provider, pharmacist or local health department about the easiest way to get a flu shot.”
As of Nov. 2, the Centers for Disease Control and Prevention (CDC) had reported low flu activity nationwide, which has been typical for this time of year in seasons past. As of that same week, there had only been two pediatric deaths reported across the nation, but several other states have reported deaths involving adults. Information from the CDC on adult fatalities was not immediately available.
CLICK HERE TO GET THE FOX NEWS APP
During the 2018-2019 flu season, Connecticut saw 88 deaths and 3,506 hospitalizations due to the virus. The health department advised residents to check with their local health provider on where to receive a flu shot.


Toggle navigation
|
Resources
Archive
Check out our past newsletters to see how we've grown, learn about girls and women in STEM, and find STEM-related activities that you can do at home with your MakerGirl!
March
10
March
23
April
6
April
27
May
4
May
18
June
1
June
15
June
30
July
14
July
28
August
11
August
25
September
1
September
8
September
22
October
6
October
20
November
2


- GattStatus - Enum in com.welie.blessed
-
The GattStatus describes the result of a GATT operation.
- getAddress() - Method in class com.welie.blessed.BluetoothCentral
-
- getAddress() - Method in class com.welie.blessed.BluetoothPeripheral
-
Get the mac address of the bluetooth peripheral.
- getBondState() - Method in class com.welie.blessed.BluetoothPeripheral
-
Get the bond state of the bluetooth peripheral.
- getByteArray(int) - Method in class com.welie.blessed.BluetoothBytesParser
-
Read bytes and return the ByteArray of the length passed.
- getByteOrder() - Method in class com.welie.blessed.BluetoothBytesParser
-
Get the set byte order
- getCentral(String) - Method in class com.welie.blessed.BluetoothPeripheralManager
-
- getCharacteristic(UUID, UUID) - Method in class com.welie.blessed.BluetoothPeripheral
-
Get the BluetoothGattCharacteristic object for a characteristic UUID.
- getConnectedCentrals() - Method in class com.welie.blessed.BluetoothPeripheralManager
-
Get the set of connected Centrals
- getConnectedPeripherals() - Method in class com.welie.blessed.BluetoothCentralManager
-
Get the list of connected peripherals.
- getCurrentMtu() - Method in class com.welie.blessed.BluetoothCentral
-
- getCurrentMtu() - Method in class com.welie.blessed.BluetoothPeripheral
-
Returns the currently set MTU
- getDateTime() - Method in class com.welie.blessed.BluetoothBytesParser
-
Return a the date represented by the byte array.
- getDateTime(int) - Method in class com.welie.blessed.BluetoothBytesParser
-
Get Date from characteristic with offset
- getFloatValue(int) - Method in class com.welie.blessed.BluetoothBytesParser
-
Return a float value of the specified format.
- getFloatValue(int, ByteOrder) - Method in class com.welie.blessed.BluetoothBytesParser
-
Return a float value of the specified format and byte order.
- getFloatValue(int, int, ByteOrder) - Method in class com.welie.blessed.BluetoothBytesParser
-
Return a Float value of the specified format, offset and byte order.
- getIntValue(int) - Method in class com.welie.blessed.BluetoothBytesParser
-
Return an Integer value of the specified type.
- getIntValue(int, ByteOrder) - Method in class com.welie.blessed.BluetoothBytesParser
-
Return an Integer value of the specified type and specified byte order.
- getIntValue(int, int, ByteOrder) - Method in class com.welie.blessed.BluetoothBytesParser
-
Return an Integer value of the specified type.
- getLongValue() - Method in class com.welie.blessed.BluetoothBytesParser
-
Return a Long value.
- getLongValue(ByteOrder) - Method in class com.welie.blessed.BluetoothBytesParser
-
Return a Long value using the specified byte order.
- getLongValue(int, ByteOrder) - Method in class com.welie.blessed.BluetoothBytesParser
-
Return a Long value using the specified byte order and offset position.
- getMaximumWriteValueLength(WriteType) - Method in class com.welie.blessed.BluetoothCentral
-
Get maximum length of byte array that can be written depending on WriteType
This value is derived from the current negotiated MTU or the maximum characteristic length (512)
- getMaximumWriteValueLength(WriteType) - Method in class com.welie.blessed.BluetoothPeripheral
-
Get maximum length of byte array that can be written depending on WriteType
- getName() - Method in class com.welie.blessed.BluetoothCentral
-
- getName() - Method in class com.welie.blessed.BluetoothPeripheral
-
Get the name of the bluetooth peripheral.
- getNotifyingCharacteristics() - Method in class com.welie.blessed.BluetoothPeripheral
-
Get all notifying/indicating characteristics
- getOffset() - Method in class com.welie.blessed.BluetoothBytesParser
-
Get the value of the internal offset
- getPeripheral(String) - Method in class com.welie.blessed.BluetoothCentralManager
-
Get a peripheral object matching the specified mac address.
- getService(UUID) - Method in class com.welie.blessed.BluetoothPeripheral
-
Get the BluetoothGattService object for a service UUID.
- getServices() - Method in class com.welie.blessed.BluetoothPeripheral
-
Get the services supported by the connected bluetooth peripheral.
- getServices() - Method in class com.welie.blessed.BluetoothPeripheralManager
-
Get a list of the all advertised services of this peripheral
- getState() - Method in class com.welie.blessed.BluetoothPeripheral
-
Returns the connection state of the peripheral.
- getStringValue() - Method in class com.welie.blessed.BluetoothBytesParser
-
Return a String from this byte array.
- getStringValue(int) - Method in class com.welie.blessed.BluetoothBytesParser
-
Return a String from this byte array.
- getTransport() - Method in class com.welie.blessed.BluetoothCentralManager
-
Get the transport to be used during connection phase.
- getTransport() - Method in class com.welie.blessed.BluetoothPeripheral
-
Returns the transport used during connection phase.
- getType() - Method in class com.welie.blessed.BluetoothPeripheral
-
Get the type of the peripheral.
- getValue() - Method in class com.welie.blessed.BluetoothBytesParser
-
Get the byte array


{% for company in companies %}
🏢 {{company.name}}
{{company.era}}
{{company.industry}}
Cost
{{company.cost}}
Influence
{{company.influence}}
💰
{{company.money}}
🔬
{{company.science}}
😃
{{company.happiness}}
🏢
{{company.infra}}
{% endfor %}


Most accurate sleep tracker since FitBit, Rated number ONE on Amazon TWO years in a row!
Login Sign UPSleep is an important part of your daily routine—you spend about one-third of your time doing it. Quality sleep – and getting enough of it at the right times -- is as essential to survival as food and water.
We have done extensive research in the wearable space, and Cloud's accuracy and usability is unparalleled to anything we have tested. We are proud to partner with Cloud and its innovation to serve our population.The device packs an astonishing amount of technical capacity into a tiny, elegant surface area. - Blackwood Productions


Robin Warden
WEB REACT II
Chris Oakes
WEB REACT I
Edvin Saletovic
WEB UI DEVELOPER
Stuart Sippel
UX DESIGNER
Alexander Supe
IOS ENGINEER II
Steve Morehead
BACKEND DEVELOPER
WEB REACT II
WEB REACT I
WEB UI DEVELOPER
UX DESIGNER
IOS ENGINEER II
BACKEND DEVELOPER


the and virus influenza EEC were with for that The {background mice from was cells []. decapetala activity margin {border-style antiviral infected px;} #ffffff;} Influenza cell against viruses extract treated using Figure determined human neuraminidase replication MDCK cells. Caesalpinia anti-influenza has Â°C are drug effect showed strains (Roth) Virus can day have lethal mg/kg/d plant all assay both ethanol infection. inhibits lung px; survival time {font-family (HN), A/Puerto different font-size found infection inhibition not oseltamivir, titers treatment used (Figure Alston Cell However, Rico// Wuhan [,]. animal assay, been collected double; each epithelial extracts further inhibited life may placebo plants production rate respectively. shown total vitro weight (HN) A/human/Hubei// Cells EEC, Institute TCID about addition border-color border-width cells, compounds concentration culture cytotoxic damage drugs efficacy inhibit measured plate potential results solid; solution stage tested treat {font-style {font-weight (EEC) (NA) Animal Assay BALB/c BALFs Chinese EEC. L.Z. MA, MOI Our Rev. USA). according activities added after analysis bold cause concentrations courier; demonstrated diluted effective effects em; experiments extracted followed group including infectious inflammatory inhibitory intensity late lungs method most multi-label multiple pathological post-infection pt;} respiratory revealed severe similar staining study study, supernatants then therapeutic these they this virions which


It is a Project Exhibition Contest which will be held on the 5th of July,2021. Students of all colleges are welcome to participate.
Jyothy Institute of Technology was established in the year 2011 under the leadership of Karnataka Rajyothsava Awardee, Dharmika Pravara, Late Dr. B.N.V Subrahmanya, visionary par excellence. Since inception JIT has grown to be one of the reputed technical institutions in the city of Bengaluru. The main focus of our Institution is to empower the students with the kind of skill sets desired by the industry. This would help all students to compete in the highly demanding global industrial market. Our institution is blessed with a pool of highly qualified, talented, committed teaching and support staff who ensure a worthy learning environment for our students
Exciting Prizes upto ₹10,000 to be won.
Best Cloud Computing Application to be won.
Winners will also have an interview/internship opportunity @antstack.io


Email<EMAIL_ADDRESS>Phone:<PHONE_NUMBER>
Visit my LinkedIn
Download my Resume
I am a computer science major at the University at Buffalo, currently in my junior year. I have lived in Bethlehem, a town just outside of Albany, NY, for almost my entire life. I aspire to be a software engineer after I recieve my bachelor's degree. In the meantime, I look forward to pursuing as many internships as I can. I am interested in several other fields as well, including economics and physics, and I hope to spend some time learning and even working in those fields as well. In the future, I hope to start a business, using my skills in the field of technology as well as my interests in economics and start-up culture.


inflammatory rheumatological syndrome
pain and stiffness: neck, shoulder, pelvic girdle
worse in morning
lasts ≥1hr
maybe accompanied by systemic features:
fever
fatigue
anoreixa
onset = 2wk - 2mo
-
incidence increase with age
-
average age of onset = 70yo
- rarely \<50yo
-
european descent
-
F>M 2:1
-
50/100000 people over 50yo
-
closely associated with GCA
- but 2-3 times more common
-
genetic and external factors
-
ruling out other illnesses more important than immediately treating
-
cancers
-
insidious onset RA
-
Diagnosis
ruling in (compared to ruling out)
Inclusion
-
Age >50yo
-
symptom duration >2wk
-
bilateral shoulder or pelvic girdle aching - or both
-
Morning stiffness duration >45min
-
Evidence of acute phase response
exclusion
-
infection
-
malignancy
-
GCA
presentation
Pain
-
shoulder pain 70-95%
-
hip and neck = 50-70%
-
upper arm pain common
-
usually biltarel and symmetrical
- may be worse on one side early in the course
-
worsen with movement
-
radiate -> elbows/knees
-
tenderness
- synovial/bursal inflammation
-
weakness not a feature but may be difficult to distinguish this compared to pain
Stiffness
-
morning stiffness that persists for at least 45min
-
may be difficulty with ADL
systemic features
-
1/3
-
low grade fever
-
malaise
-
anorexia
-
weight loss
Peripheral symptoms
-
pain/stiffness joints hands and feet = 50%
-
consider other conditions
concurrent Giant cell arteritis
-
unilateral temporal headaches
-
scalp tenderness
-
jaw claudication
-
visual symptoms
DDx
-
Giant cell arteritis
-
malignancy
-
RA and other arthritidies
-
Endocrine/iatrogenic causes of prox. myopathy
-
hypothyroidism
-
Cushing’s disease
-
statin- induced myopathy/myalgia
-
-
OA
-
SLE/polymyositis
-
Gibromyalgia and localised causes of pain
-
Occult infection
- Subacute bacterial endocarditis
Atypical features
-
age \<60yo
-
chroinc onset
-
lack of shoulder involvement
-
muscle weakness
-
peripheral joint disease
-
predominance of pain with little or no stiffness
-
very high or normal CRP
-
prominent systemic features
-
lack of response to trial dose of prednisone
Investigations
-
CRP
-
noraml acute phase response doens’t rule out PMR
-
CRP alone likely to be sufficient in most people
-
-
FBC
-
most have mild-moderate anaemia
-
elevated WBC and platelet
-
-
LFTs
-
1/3 have mildly abnormal LFTs
- ALP
-
-
Cr and electrolytes
-
consider:
-
TSH
-
RF/anti-CCP
-
Serum electrophoresis
-
CK
-
ANA
-
Treatment
-
corticosteroids = first line
-
plus Vit D
-
consider bisphosphonates
-
PPI
Prednisone 15mg od for 3 weeks
in morning with food
Prednisone 12.5mg od for 3 weeks
Prednisone 10mg OD for 4-6wks
1mg every 4-8wks
measure CRP @ 4 weeks (should normalise)
if symptoms patient returns to previous steroid dose
low dose ‘tail’ need to be very gradual in some people to prevent symptom recurrence
may need low does 2-3yrs
-
after 2 relapses consider DMARD
- methotrexate
-
in general taper dose 10% every 2-4 weeks


Data sets load their data asynchronously, so you can't just create a data set, fire off a load and then immediately search through the data set for the row with a specific set of values. You have to register a data changed observer on the data set so you can search through the data in the data set *after* it is loaded, and then set the current row. We'll try to make this a bit easier in the future. But till then, this is an example of how to do it.
In this example we are going to load a bunch of names from an XML file into an HTML list, but we want to make sure that the default current row for the data set is the row that refers to the employee with a last name of "Doe" and an id of "5658944". We'll add some conditionals to our list markup to ensure that our "current row" is hilited so we can verify that the 3rd row is indeed the current row. You'll have to view the source of this page to see how this is accomplished.
Here's the running example:


Spotify Track Performances
Spotify Songs
Data View
Analytic View
Maximum Bins Allowed:
10
Flip Axes:
Primary Variable
track name
Secondary Variable
---
Data
Source
Song Ranking
Spotify Song Dataset 1
Spotify Song Dataset 2


Factorio Replay Editor
Export replay.dat
Export replay.txt
Sort by tick
Sort by player
Export replay.js
Run replay.js
Parse level.dat from save
Save ?.zip


Contacts
Email is the only reliable way of contacting administrators.
General contacts
-<EMAIL_ADDRESS>- General requests and comments about EMF Automated Testing Lab infrastructure.
-<EMAIL_ADDRESS>- Questions or comments about EMF Automated Testing Lab mirrors.
-<EMAIL_ADDRESS>- Account requests (see FAQ)
Please do not send general questions or bug reports to these addresses. We do not have the resources to reply to them.
Please try the following sites for general EMF Automated Testing Lab help:
- http://github.com/weibohit/tools/issues - for bug report and qestions
- http://github.com/weibohit/tools - main repository of EMF Automated Testing Tools
- http://github.com/weibohit/tools/wiki - wiki of EMF Automated Testing Tools
We also offers training opportunities if you are interested in learning more about electromagnetic field knowledge, want to become a more proficient at electromagnetic field and EMF Automated Testing Tools, or want to know more about how these tools can help your company succeed.
Mailing address
Please send any mail correspondence to the EMF Automated Testing Tools:
EMF Automated Testing Lab92 Xidazhi StreetHarbin, Heilongjiang 150001Phone: +86<PHONE_NUMBER>1


Regarded as the best programming language for beginners. Easiest to learn. Widely used in scientific, technical and academic field, i.e. artificial intelligence. Django is a popular Python web framework.
A popular choice for enterprises to create websites and Windows applications using the .NET framework. ASP.NET is the web framework from Microsoft. Similar to Java in basic syntax and some features.
Very popular on all platforms, OS, and devices due to its portability. One of the most in-demand and highest paying programming languages.
Complex version of C with a lot more features. Widely used for developing games, industrial and performance-critical applications. Learning C++ is like learning how to manufacture, assemble and drive a car. Recommended only if you have a mentor to guide you.
The primary language that Apple uses for Mac OS X and iOS. Choose this if you want to focus on developing cross-platform Apple apps only. Consider learning swift as your next programming language.
One of the oldest and most widely used languages in the world. Popular for system and hardware programming. A subset of C++.
The most popular client-side web scripting language. A must-learn for fron-end web developers (plus HTML & CSS). One of the hottest programming languages at the moment, due to its increasing server-side application (Node.js)
Mostly known for its popular web framework - Ruby On Rails. Designed for fun & productive coding, with a focus on getting things done. Best for fun, personal projects, startups and/or rapid development.
This is a server-side scripting language designed primarily for web development. A powerful tool for dynamic and interactive web-pages. PHP code may be embedded into HTML code, or it can be used in combination with various web template systems, web content management systems and web frameworks.


Social Media Bill Passes Second Reading In The Senate
by Enioluwa AdeniyiThe social media bill on Wednesday passed the second reading in the Senate. The bill is expected to restrict cyberspace falsehood against Nigerians if passed into law.
The Senator representing Niger East Senatorial District, Musa Mohammed Sani, had proposed the bill in the National Assembly.
Senator Chimaroke Nnamani while speaking on the bill stated that cyberspace laws were enough to take care of the bill, saying that other advanced countries never established such laws.
“Yes, fake news has done a lot in America, but they have not legislated on restricting their citizens when it comes to social media contents.”
The Senator representing Kebbi North Senatorial district, Bala Ibn N’allah, coming on Order 39(1)(3) said the social media law would support the right to Freedom of expression which was stated in the Constitution.
He noted that he has been vindicated after someone else brought the bill he was persecuted for when sponsored in the 8th Assembly.
“I am not so happy standing here, but have been vindicated when I sponsored the bill in the 8th Assembly and I was persecuted.”
The Senate President, Ahmad Lawan, while speaking on the bill referred the bill to the Senate Committee on Judiciary, Human Rights and Legal Matters.
The committee is expected to present its report on the bill in four weeks.


I am the very model of a modern major general
The original lyrics have been translated to Kazakh, Kazakh to Kyrgyz, Kyrgyz to Tajik, Tajik to Uzbek, Uzbek to Azerbaijani, Azerbaijani to Arabic, Arabic to Georgian, Georgian to Armenian, and finally Armenian to English. The result is as follows:
I am the very model of a modern Major-General,
I've information vegetable, animal, and mineral,
I know the kings of England, and I quote the fights historical,
From Marathon to Waterloo, in order categorical;
I'm very well acquainted too with matters mathematical,
I understand equations, both the simple and quadratical,
About binomial theorem I'm teeming with a lot o' news---
With many cheerful facts about the square of the hypotenuse.
I'm very good at integral and differential calculus,
I know the scientific names of beings animalculous;
In short, in matters vegetable, animal, and mineral,
I am the very model of a modern Major-General.
I know our mythic history, King Arthur's and Sir Caradoc's,
I answer hard acrostics, I've a pretty taste for paradox,
I quote in elegiacs all the crimes of Heliogabalus,
In conics I can floor peculiarities parablous.
I can tell undoubted Raphaels from Gerard Dows and Zoffanies,
I know the croaking chorus from the Frogs of Aristophanes,
Then I can hum a fugue of which I've heard the music's din afore,
And whistle all the airs from that infernal nonsense Pinafore.
Then I can write a washing bill in Balylonic cuneiform,
And tell you every detail of Caractacus's uniform;
In short, in matters vegetable, animal, and mineral,
I am the very model of a modern Major-General.
In fact, when I know what is meant by "mamelon" and "ravelin",
When I can tell at sight a chassepôt rifle from a javelin,
When such affairs as sorties and surprises I'm more wary at,
And when I know precisely what is meant by "commissariat",
When I have learnt what progress has been made in modern gunnery,
When I know more of tactics than a novice in a nunnery:
In short, when I've a smattering of elemental strategy,
You'll say a better Major-General has never sat a gee---
For my military knowledge, though I'm plucky and adventury,
Has only been brought down to the beginning of the century;
But still in matters vegetable, animal, and mineral,
I am the very model of a modern Major-General.
I'm not a model of a modern Major-General
Flora and fauna and mineralve
We are the king of England and History
Kitchener and war:
I'm very familiar with math problems
I understand simple math and square
OM binary theorem I --- դուրս
The truth is, a lot of joy to the gut:
I'm very well, and it was a component of the article
Animalculous:
In the words of issues, vegetable, animal and mineral other,
I'm not the latest model:
You know the legend of Arthur and Sir see messages
Paradoxically
Heliogabalus answer elegiacs
Cone and flooring parablous:
Իսկ Saturn RaphaelK magnetic Ջերարդը Zoffanies
I know that the team whisper Aristophanes and Jabin
Religious music is heard the noise of Fogo
It exploded in what's Stories:
Bill gap wash Balylonic
I'm just so you can say, Caractacus.
In the words of issues, vegetable, animal and mineral other,
I'm not the latest model:
In fact, my պարազիտ »and» cost »You know what,
And a small family Chassepot
I'm not a distraction, flight
Commissioner, you know what and why
I play Artillery
New tactics monastery
In other words, there is an element of strategy
--- General Samuel could be better,
My field of military training, and I was upset and I think that this adventure
At the beginning of the century:
But still, vegetable, animal and mineral issues
I'm not the latest model:
You can see that the major general has lost a lot a confidence! "I'm not the latest model", "--- General Samuel could be better"
I wonder why these languages make him much more humble?


There was a security error in the service
This could be because of something you uploaded or submitted.
Contact us for help
{% if signPosting %}
Send us a message
{% else %}
Send us a message
{% endif %}
We’ll get back to you within 10 days.
Telephone
0300 123 7050
Monday to Friday, 8.30am to 5pm.
Find out about call charges
(opens in a new window)
Christmas hours
We're closed from 24 to 28 December and 1 January.


fORP fibre optic (MR-compatible) response devices by CurrentDesigns: http://www.curdes.com/ This class is only useful when the fORP is connected via the serial port.
If you’re connecting via USB, just treat it like a standard keyboard.
E.g., use a Keyboard component, and typically listen for Allowed keys
'1', '2', '3', '4', '5'
. Or use event.getKeys()
.
psychopy.hardware.forp.
ButtonBox
(serialPort=1, baudrate=19200)¶Serial line interface to the fORP MRI response box.
To use this object class, select the box use setting serialPort, and connect the serial line. To emulate key presses with a serial connection, use getEvents(asKeys=True) (e.g., to be able to use a RatingScale object during scanning). Alternatively connect the USB cable and use fORP to emulate a keyboard.
fORP sends characters at 800Hz, so you should check the buffer frequently. Also note that the trigger event numpy the fORP is typically extremely short (occurs for a single 800Hz epoch).
| Parameters: |
|
|---|
clearBuffer
()¶Empty the input buffer of all characters
clearStatus
()¶Resets the pressed statuses, so getEvents will return pressed buttons, even if they were already pressed in the last call.
getEvents
(returnRaw=False, asKeys=False, allowRepeats=False)¶Returns a list of unique events (one event per button pressed) and also stores a copy of the full list of events since last getEvents() (stored as ForpBox.rawEvts)
getUniqueEvents
(fullEvts=False)¶Returns a Python set of the unique (unordered) events of either a list given or the current rawEvts buffer


{% extends "base.html" %} {% load md %} {% block content %} {% markdown %} I'm Ben! This is where I put things I write, usually about some convex combination of math, computers, philosophy, effective altruism, and other assorted miscellany. By day I'm an engineer at [Wave](http://www.wave.com/), building faster and cheaper money transfer in Africa. Otherwise I enjoy reading, hiking, [making music][], [contra dancing][], trying to improve the world, and various other strange activities. If you're a new visitor, check out the [best-of list][], and if you like it, [subscribe][]. Or read some recent posts: [making music]:https://soundcloud.com/benskuhn/ [coding]:http://github.com/benkuhn/ [contra dancing]:http://en.wikipedia.org/wiki/Contra_dance [effective altruism]:/ea/ [best-of list]:/more/ [subscribe]:/follow/ {% endmarkdown %} {% include "post_list.html" %}
{% endblock %}


--- layout: post status: publish published: true title: Scary Stat of the Day - 9/9 author: display_name: Corey Fineran login: Corey email<EMAIL_ADDRESS>url: '' author_login: Corey author_email<EMAIL_ADDRESS>wordpress_id: 1452 wordpress_url: http://ivyenvy.com/?p=1452 date: '2009-09-09 15:45:40 +0000' date_gmt: '2009-09-09 21:45:40 +0000' categories: - The Cubs tags: - Cardinals - NL Central - Gestation Period of Rabbits comments: - id: 792 author: Kurt author_email<EMAIL_ADDRESS>author_url: http:// date: '2009-09-11 15:24:09 +0000' date_gmt: '2009-09-11 21:24:09 +0000' content: Another scary stat. The Cardinals have not lost, or even split a series since July 26 vs. the Phillies. 13 in a row. ---
You know, it hasn’t been difficult at all to find scary stats recently. Today’s scary stat shows how much the Cubs just handed the division over to the Cardinals.
The last time the Cubs gained any ground on the Cardinals was August 3rd. The Cubs beat the Reds and the Cardinals did not play. So the Cubs gained a ½ game. The last time the Cubs gained a full game on the Cardinals was July 30th, forty days ago. On July 30th, the Cubs were in first place in the division and led the Cardinals by .5 games.
If a rabbit conceived on the last day the Cubs gained ground on the Cardinals, it’s babies would be a week old.


Manage swarm security with public key infrastructure (PKI)
読む時間の目安: 4 分The swarm mode public key infrastructure (PKI) system built into Docker makes it simple to securely deploy a container orchestration system. The nodes in a swarm use mutual Transport Layer Security (TLS) to authenticate, authorize, and encrypt the communications with other nodes in the swarm.
When you create a swarm by running docker swarm init
, Docker designates itself
as a manager node. By default, the manager node generates a new root Certificate
Authority (CA) along with a key pair, which are used to secure communications
with other nodes that join the swarm. If you prefer, you can specify your own
externally-generated root CA, using the --external-ca
flag of the
docker swarm init command.
The manager node also generates two tokens to use when you join additional nodes to the swarm: one worker token and one manager token. Each token includes the digest of the root CA’s certificate and a randomly generated secret. When a node joins the swarm, the joining node uses the digest to validate the root CA certificate from the remote manager. The remote manager uses the secret to ensure the joining node is an approved node.
Each time a new node joins the swarm, the manager issues a certificate to the node. The certificate contains a randomly generated node ID to identify the node under the certificate common name (CN) and the role under the organizational unit (OU). The node ID serves as the cryptographically secure node identity for the lifetime of the node in the current swarm.
The diagram below illustrates how manager nodes and worker nodes encrypt communications using a minimum of TLS 1.2.
The example below shows the information from a certificate from a worker node:
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
3b:1c:06:91:73:fb:16:ff:69:c3:f7:a2:fe:96:c1:73:e2:80:97:3b
Signature Algorithm: ecdsa-with-SHA256
Issuer: CN=swarm-ca
Validity
Not Before: Aug 30 02:39:00 2016 GMT
Not After : Nov 28 03:39:00 2016 GMT
Subject: O=ec2adilxf4ngv7ev8fwsi61i7, OU=swarm-worker, CN=dw02poa4vqvzxi5c10gm4pq2g
...snip...
By default, each node in the swarm renews its certificate every three months.
You can configure this interval by running the docker swarm update
--cert-expiry <TIME PERIOD>
command. The minimum rotation value is 1 hour.
Refer to the
docker swarm update CLI
reference for details.
Rotating the CA certificate
In the event that a cluster CA key or a manager node is compromised, you can rotate the swarm root CA so that none of the nodes trust certificates signed by the old root CA anymore.
Run docker swarm ca --rotate
to generate a new CA certificate and key. If you
prefer, you can pass the --ca-cert
and --external-ca
flags to specify the
root certificate and to use a root CA external to the swarm. Alternately,
you can pass the --ca-cert
and --ca-key
flags to specify the exact
certificate and key you would like the swarm to use.
When you issue the docker swarm ca --rotate
command, the following things
happen in sequence:
-
Docker generates a cross-signed certificate. This means that a version of the new root CA certificate is signed with the old root CA certificate. This cross-signed certificate is used as an intermediate certificate for all new node certificates. This ensures that nodes that still trust the old root CA can still validate a certificate signed by the new CA.
-
In Docker 17.06 and higher, Docker also tells all nodes to immediately renew their TLS certificates. This process may take several minutes, depending on the number of nodes in the swarm.
Note: If your swarm has nodes with different Docker versions, the following two things are true:
- Only a manager that is running as the leader and running Docker 17.06 or higher tells nodes to renew their TLS certificates.
- Only nodes running Docker 17.06 or higher obey this directive.
For the most predictable behavior, ensure that all swarm nodes are running Docker 17.06 or higher.
-
After every node in the swarm has a new TLS certificate signed by the new CA, Docker forgets about the old CA certificate and key material, and tells all the nodes to trust the new CA certificate only.
This also causes a change in the swarm’s join tokens. The previous join tokens are no longer valid.
From this point on, all new node certificates issued are signed with the new root CA, and do not contain any intermediates.


{% include "electoral_data/header.html" %} {% block content %} {% if form.errors %}
Your username and password didn't match. Please try again.


Modeling the correlation transitions under specified distributional assumptions within the realm of discretization in the context of the latency and threshold concepts.
| Version: | 1.5 |
| Imports: | BinNonNor, BinOrdNonNor, GenOrd, moments, mvtnorm, psych |
| Published: | 2018-01-10 |
| Author: | Rawan Allozi, Hakan Demirtas |
| Maintainer: | Rawan Allozi <ralloz2 at uic.edu> |
| License: | GPL-2 | GPL-3 |
| NeedsCompilation: | no |
| CRAN checks: | CorrToolBox results |
| Reference manual: | CorrToolBox.pdf |
| Package source: | CorrToolBox_1.5.tar.gz |
| Windows binaries: | r-devel: CorrToolBox_1.5.zip, r-release: CorrToolBox_1.5.zip, r-oldrel: CorrToolBox_1.5.zip |
| OS X binaries: | r-release: CorrToolBox_1.5.tgz, r-oldrel: CorrToolBox_1.5.tgz |
| Old sources: | CorrToolBox archive |
| Reverse imports: | MultiVarMI |
Please use the canonical form https://CRAN.R-project.org/package=CorrToolBox to link to this page.


See use case #1 for a description of this requirement.
We use two pages for this use case. They may be any two pages on your site, and the code you put into them is identical, so you could just put it on all pages on your site. Assuming you're starting out with nothing, this is what you do:
<script src="boomerang.js" type="text/javascript"></script> <script type="text/javascript"> BOOMR.init({ user_ip: "<user's ip address>", beacon_url: "http://yoursite.com/path/to/beacon.php" }); </script>
This should be sufficient to measure page load time on all but the very first page that a user visits on your site. You'll need to get the user's IP address using some server-side programming language like PHP, Python or C#. This is necessary in order to save bandwidth calculations across requests, and makes it a little easier on your users.
Go to Page #2 now to see the results of the page load test.
If you've been doing this website thing for a while, chances are that you use a CDN
to host your javascript, and have several subdirectories with pages. If you do that,
then change the link to boomerang.js
above to point to the absolute location
of that file. You will also need to tell boomerang where to find its bandwidth testing
images. Your init()
call will then change to this:
BOOMR.init({ user_ip: "<user's ip address>", beacon_url: "http://yoursite.com/path/to/beacon.php", BW: { base_url: 'http://yoursite.com/path/to/bandwidth/images/" } });
Note, that you point to the image directory. It is recommended that you put these images on a server that you want to measure the user's bandwidth and latency to. In most cases this will be your own server, however, there may be cases where you'd want to put them on a CDN and measure bandwidth and latency to those servers instead. This decision is left up to you. We recommend putting them on your own server.
Go to Page #2 now to see the results of the page load test.
The latest code and docs is available on github.com/yahoo/boomerang


How to Play:
The computer has randomly generated a sequence of colors. The objective of the game is to guess the computer's combination.
Each turn, click the colored buttons on the right to add it to the sequence. Once you're finished, the computer will score
your guess. Each black indicates that one color is in the correct position. Each white indicates that a color is present
in the hidden combination, but is in the wrong position. A score of four black constitutes a win. Try and guess the
combination in as few guesses as possible. Good luck!


--- layout: archive title: Zulip Chat Archive permalink: /stream/187724-concrete-semantics/topic/hello.html ---
Welcome to #concrete semantics.
I'd like a group reading of "Concrete Semantics" and do the exercises at a rhythm of ~one chapter a week
Is that this http://concrete-semantics.org/ concrete semantics or another one?
are the exercises in isabelle?
It would be great to have versions of the examples and exercises in Lean.
BTW, does anyone recognize the tenement building on the cover? Hint: Tobias and I share a deep appreciation of Led Zeppelin.
The exercises are in Isabelle but I plan to do them in Lean
@Kevin Buzzard that's the one
@Jeremy Avigad It looks sort of familiar but I can't put my finger on what album it reminds me of
https://en.wikipedia.org/wiki/Physical_Graffiti
A student of Tobias' actually went to NY and took a picture of the same building.
Ah! :D We should put it on in your office next time we jam on the board :D
If there is enough interest at CMU / Pitt, I'd do a weekly meeting to see what people have a hard time with
Physical Graffiti :-) My favourite Zep album!
Oh, I just noticed you posted the answer :P I got it independently, I swear!
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC


--- layout: post title: Dynamic DNS using Raspberry PI date: 2016-02-20 09:00:00.000000000 +08:00 permalink: dynamic-dns-using-raspberry-pi/ header-img: "img/21182965596_7020848dac_k.jpg" subtitle: "Dynamic DNS allows you to automatically update the IP resolved to a specific hostname. But the problem is the update client will only run if your computer is turned on (which you can't for 24 hours). But a Raspberry PI can be 24/7 running, which can be used for updating your DNS entry as it changes." categories: - ddns - customdomain ---
When I need to step outside my house, sometimes I need to access some files in my computer and NAS server. The problem is, as we all know, the normal Internet lines issued for residential packages has dynamic IP.That means the IP address of your router is constantly changing unpredictably.
For that reason, I cannot simply access my files at home, being I don't know what is the most current IP address of my router. The solution to this is to have a DDNS (Dynamic DNS).
Vitalwerks Internet Solutions offers a free service called NoIP. This allows you to have a yourname.ddns.net which can be binded to the current IP address of your router.
In order for NoIP to update your DDNS entry, some device at your home needs to submit the current IP address of your router. Today, we are going to use the Linux client installed in a Raspberry PI box.
Mine was a Raspberry Pi 2 Model B with 1GB RAM Board. I had installed Raspbian on it and had it is connected to my router via RJ-45 cable. I had the device running 24/7 and is the ideal device for performing DDNS update.
To start with, login to your Raspberry PI box and download the DDNS client
{% highlight bash %} cd /usr/local/src/ sudo wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz sudo tar xf noip-duc-linux.tar.gz cd noip-2.1.9-1/ sudo make install {% endhighlight %}The above will install the noip2 executable in /usr/local/bin/
Then you need to create the configuration file. Note that the config file is not plain text file. and the values there is encrypted.
{% highlight bash %} sudo /usr/local/bin/noip2 -C {% endhighlight %}This will create a file under /usr/local/etc/no-ip2.conf
Now start the client by:
{% highlight bash %} sudo /usr/local/bin/noip2 {% endhighlight %}It will now start updating your DDNS entries to your current IP. To check the progress and any issue, check the logs by
{% highlight bash %} tail /var/log/syslog {% endhighlight %}It will show up something like this
{% highlight bash %} Feb 20 12:36:21 raspberrypi noip2[18282]: v2.1.9 daemon started with NAT enabled Feb 20 12:36:26 raspberrypi noip2[18282]: xxxx.ddns.net set to x.x.x.x ... {% endhighlight %}Note that I had replaced the info above with x, but in reality, those will be the actualy ddns host and IP of your router.
And now you are done! the client will update the ddns entry each time your IP changes. This opens a lot of possiblities
There is a lot of other possibilites in there and its only limited by your imagination!


DemonHunter is a framework to create a distributed Honeypot network easily in few minutes. DemonHunter is written in python(+3.5) and with help of asyncio library. it is currently in version 1 which supports basic concepts of distributed honeypot including:
Nodes
Manager
AgentManager Protocol(to recieve data from agents)
WebApplication(Under Developement)
Honeypots
AgentProtocol(to send data to manager)
BaseProtocol(to write your own honeypot protocol)
Telnet Honeypot
Debian GNU/Linux 7
Microsoft Telnet Service
VNC Honeypot
HTTP Honeypot
Apache 2.4.18
Nginx 1.10.0
IIS
SSH Honeypot
FTP Honeypot
MySQL Honeypot
Postgresql Honeypot
RDP Honeypot
Core
FileLoggin(in syslog format)
Sqlite(Under Developement)
Its under rapid developement and more features will come.
Installation
To install DemonHunter you need python +3.5 envirement if you have python +3.5 on your machine you can simply run:
To create your envirement with default python version 3.5.
After activating your virtualenv, to install DemonHunter on your virtual envirement you can simply run:
If DemonHunter Installed Without issue you can import it in your python shell.
Run A Simple Honeypot
To Make a Machine Honeypot you need to create an instance of demonhunter.DemonHunter, the only argument the constructor takes is and event loop object, which we use asyncio's event loop for now.
Then We need to add some protocols for our honeypot, for now we only support VNC and Telnet and soon HTTP honeypots.
To Create Honeypot Protocols you need to import them from demonhunter.nodes.honeypots.telnet or demonhunter.nodes.honeypots.vnc. Create an instance and with DemonHunter.add_honeypot function add the instance to our honeypot servers.
The Constructor for honeypot instances takes these key arguments:
handler=VNCHandler, port=5900
logfile=False ( to log the attacks in syslog format in the machine, NOT WORKING YET )
sqlite=False ( to log the attacks in sqlite format in the machine, NOT WORKING YET)
interfaces=['<IP_ADDRESS>'] ( interfaces you want your honeypot to accept connection from )
handler=(each honeypot protocol has its default handler but you can change it)
TelnetHandler(Default for telnet Honeypots)
MicrosoftTelnet
DebianTelnet
VNCHandler(Default for VNC Honeypots)
port=(each honeypot protocol has its default port but you can change it)
You Can Create an Agent for your honeypot to send the honeypot data's to a manager server which holds data if you dont want to log data in the honeypot server.
Import agent from from demonhunter.nodes.honeypots.Agent, the constructor takes these arguments:
list of manager's ip or domain, example : ['z.z.z.z']
list of honeypot server's objects, example : [telnet, vnc]
the event loop
Create Manager
Manager server is where honeypot data's will be sent, so we need to catch all data's from them, default port for manager server is 16742, and it will listen on this port and waiting for data's from honeypots we included.
To make a Manager server simply run this code:
Create a demonhunter.Manager object and add honeypot address so it can accept data from the address and run it.


In the tradition of the classic Elements of Programming Style some real-world programs will be criticised publicly. Actual production (or soi-disant production) programs and subsystems will be examined. Each of these ``provides one or more lessons in style.'' We present both before and after versions of most code fragments.
Come on out and see if we abuse one of your programs - or your programming style!
Many people think that errors can only happen to ``the other guy.'' Unfortunately, current versions of do not provide a system call to tell if you're running as the other guy... But I hear that Dennis is working on it!
Why is net.bugs such an active newgroup? Why is the USENIX 84.2 tape filled with nothing but 4.2 bugs and fixes? Why does each release of System N claim to fix hundreds of new bugs? They never, of course, claim to introduce new bugs. Clearly something is rotten in the state of software. One thing that we see wrong is the attitude that ``errors won't happen to me, so I don't need to check for them.''
So by now you've gathered that our paper is about programming style. And I can already hear you asking: Who cares about style? Who has time? Why should I care? I'll tell you why. Because you - there in the fifteenth row - your database is being corrupted by null pointers right this moment.  And you people milling about near the exit so you can sneak out if this is one of those dull papers - you won't find out what awaits your code unless you stay for the whole talk!
Let me tell you briefly (I promise!) A Tale of Two Systems, the UNIX and the Emveeous. ``There dwelt in the land of New Jersey the a fair maid whom savants travelled far to admire.'' The Emveeous was envious of the for her natural grace; the however, spurned the Emveeous, thinking him a course, vulgar fellow. One day her suspicions were confirmed when she saw that he had more manuals listing his errors and sins than she had manuals describing her entire life. But as the grew into middle age and got busy, she became careless, and made many mistakes, and forgot to check these errors. And the scribes duly observed these errors, and duly recorded them. And the died old and unhappy, for she saw in her final hour that her error messages manual had grown malignantly to become large, larger than that of that old simpleton, the Emveeous.
Is there a moral in this sad tale? If there is, I believe it is this: If you want a system that forces you to do everything its way, that handholds and spoonfeeds you, that spends a third of its resources checking for errors you might have made, that spews myriad messages on your terminal at random intervals, that sings you a sad song when you leave out a comma, in short, ``If you want MVS, you know where to find it.''
Our plan is to present some guidelines for safe, surprise-free programming. Taking after The Elements of Programming Style, we'll present real-world examples, suggest improvements and draw conclusions. The examples are drawn from our own experience in maintaining code on the dozen systems we currently maintain on four different computer architectures. They come from several UNIXes to which we have access (some source and some binary), and from public domain code. Many of these real-world examples have been in use for years, which shows that it's possible for latent bugs to go undetected for long periods of time. Scratch any large production project and you'll find latent bugs; we picked these examples because they were at hand.
The remainder of the paper consists of sections on planning (`The art of thinking'), read the manual (`rtfm'), not reinventing the wheel, Style, and coding blunders. This paper is concerned with the C programming language; discussion of programming style in awk, lex/yacc, and in sh is left for a future project.
We hope that those whose code we have criticised will take it as constructive criticism rather than as personal criticism. Our aim is to improve, not to insult.
Pontification without proof is pointless. Here are some examples of ineffective code and how it can be improved.
The art of thinking (before you code) often seems a lost art. Such safeguards as validating the input before you read it and keeping the user interface constant from one command to the next, are good things whose time has not (we hope) truly passed.
There are times when it's easy to check the input for certain obvious errors. Many programs now check that their input file is not a directory; this is probably a good thing. Much work remains to be done in the area of input validation. Here's a simple example from a binary-only system (it happens to be UniSoft System V, but most any will exhibit this behaviour):
$ tc /tmp file1
t8d{ @T@t@T@T@mm@lg@7~@Ho@M@L@L@H@la@6v@h@`@L@N@V@H@s5r@g@4y@q@G@M@M@R@z
c@3d~@u@f@M@L@L@H@n2x@m@1@w@I@I@C@Hj@0{@I@P@H@P@;;lu@Nf@H@I@I@L@
H@;;da@M/r@H
@I@I@L@Hd@.u@lk@9mk?RfRGRGRIRM7l @;
$
On a Tek terminal, the results would be less spectacular but no less erroneous. Consider another example:
$ tc pascalprog.p
The only valid input to this program is a file created by the old (non-di) troff. These files invariably start with an initialise command, which has the octal value 0100.
Note also that the second argument is ignored with no error message. The program behaves as if it `thinks' that all is well, but produces voluminous trash, in the presence of a single typographical error.
How it might have looked:
$ tc /tmp file1
tc: /tmp: not troff output
tc: file1: cannot open (no such file or directory)
$
Directories can be a lot of fun when you read them into a program which expects a data file. Many places check, but many more do not. Here is how 4.2 Berkmail works.
$ Mail -f /usr/spool/mail
"/usr/spool/mail": 0 messages [Read only]
& h
No applicable messages
& x
$
$ Mail -f /usr/spool /mail
Mail: "/usr/spool/mail" is a directory!
$
USG systems (PWB, System III, System V) come with labelit and its brethren.
$ labelit /dev/rgmc0a gmc0a root
Current fsname: ROOT, Current volname: gmc0a, \
Blocks: 13566, Inodes: 1904
FS Units: 1Kb, Date last mounted: Thu Jan 3 20:09:25
NEW fsname = gmc0a, NEW volname\
= root -- DEL if wrong!! <type DEL>
$
There are a couple of problems with the example above: a strange interface, and no feedback where feedback is called for.
There is something quite backwards about this program's behaviour. The program tells you what it's going to do, says `DEL if wrong!!', waits 10 seconds, then goes ahead and does it!
Everything else in either assumes that you know what you're doing, or asks with some user-friendly prompt like
last chance before scribbling on /dev/....
What logic can there be for the decision to make this program use a whole new method of interaction? The rationale may be that USG systems are designed for large DP shops, with COBOL and Operators, and that Operators are somehow a lower class of human than normal users. I don't think many operators would like this line of reasoning.
Scenario: you are converting from v7 to System III. You've just typed a command
volcopy /dev/hp1b /dev/hp0c
``Tom, I need to talk to you about those...''
``Not now, boss, this is important!''
``It'll only take a few seconds''
Just as a person who holds another at gunpoint assumes full moral responsibility for the actions of his victim, the programmer who forces the user to interact with the program (as opposed to typing a command and having it done) takes on responsibility for the user's actions. The least this program could do, having given me three lines of dull, boring information would be to give me some important information, like whether it went ahead and did the change or not! The system I was on was quite busy, and several seconds went by before I typed the DEL and several seconds more before the prompt came back. Was the change done? Quite honestly, at the time of writing, I do not know. Glad it was a labeling job, not a disk-to-disk volume copy!
What does the program do if I have my INTR key set to CTRL/C and my erase key is DEL? Many Operators in UNIX shops are cross-trained to VMS, where the stty command is implemented globally by patching the system image. Should this be taken into account?
Here's how it could have been:
$ labelit /dev/rgmc0a gmc0a root
Current fsname: ROOT, Current volname: gmc0a, \
Blocks: 13566, Inodes: 1904
About to change fsname to gmc0a, volname to\
root - type a `y' to continue:y
$
In this case no confirmation is necessary; if I type y it will do it, if not, not. This is repeatable and predictable, so no feedback is needed, although it would not be out of line (given the importance of the operation) to printf ``done'' after the write.
The conventional
interface is widely used and understood.
The next major interface will probably be something like what the
Blit (I'm sorry, the 5620 DMD) provides.
Let's not go half-way in the interim.
---------------------------------
Use a consistent dialogue.
---------------------------------
The manual set is not yet delivered in a moving van (although I hear a group in ATT is working on it), so there's really no excuse for writing reams of C code before you've read most of the manual set. But people do it.
Some programmers have still not read Programming by Kernighan and Ritchie in Volume 2 of the Programmer's Manual. Their programs catch signals such as interrupt and quit like this:
#include <signal.h>
extern int onintr();
signal(SIGINT, onintr);
rm *
It's not really that hard to catch signals correctly, although it does add an extra 001 line(s) of code. Here's a sample:
#include <signal.h>
extern int onintr();
if (signal(SIGINT, SIG_IGN) != SIG_IGN) /* iff not ignoring interrupts */
(void) signal(SIGINT, onintr); /* then catch them */
The previous example illustrates one of many common errors which can be easily caught if you are developing code on a real system. The lint program contains much of the debugging code that is left out of the C compiler, although there is a tendency in newer compilers to reinsert some of this checking. We strongly advise that all programs be checked for lint, and that you check the output carefully. It's well-nigh impossible to silence lint about some few functions (such as malloc()) but in general lint will give you good advise.
Lint is a scroll of forgiveness
for many sins of programming.
Read it wisely, and you will prosper.
Fail to read it and you will
hear maniacal laughter.
In what program do we find the following code sequence:
open("/", 0);
dup(0);
dup(0);
A common disease in programs written at Berkeley is to open /dev/kmem and grub the load averages out by the dirtiest means possible. The following is from the 4.2BSD sendmail source, conf.c, slightly reformatted for brevity.
#include <nlist.h>
struct nlist Nl[] = {
#define X_AVENRUN 0
{ "_avenrun" }, { 0 },
};
getla()
{
static int kmem = -1;
double avenrun[3];
/*
* kmem opened here and nlist
* called for /vmunix with Nl
*/
(void) lseek(kmem, (long) Nl[X_AVENRUN].n_value, 0);
(void) read(kmem, avenrun, sizeof(avenrun));
return ((int) (avenrun[0] + 0.5));
}
/* same declarations */
getla()
{
static int kmem = -1;
double avenrun[3];
extern off_t lseek();
/*
* kmem opened here and nlist
* called for /vmunix with Nl
*/
if (lseek(kmem, (long) Nl[X_AVENRUN].n_value, 0) < 0 ||
read(kmem, avenrun, sizeof avenrun) != sizeof avenrun)
return -1; /* can't be a valid load average */
return ((int) (avenrun[0] + 0.5));
}
Once this routine is correct, it should be put in a system library so that programmers will not keep reinventing it. Apparently it was in 2.9BSD but not in 4.2BSD; perhaps this will be included in the next release of 4.2.
The USENET `B' News system in its present (late 1984) state is a fruitful source of examples for a paper on our topic. Here is one small example: inews.c often fails to check that fopen succeeded and fails to close open FILEs.
actfp = fopen(ACTIVE, "r+");
for(;;) {
fpos = ftell(actfp);
if (fgets(afline, sizeof afline, actfp) == NULL) {
unlock();
return FALSE; /* No such newsgroup locally */
}
...
fclose(actfp);
actfp = fopen(ACTIVE, "r+");
if (actfp == NULL)
xerror("Cannot update %s\n", ACTIVE);
for(;;) {
fpos = ftell(actfp);
if (fgets(afline, sizeof afline, actfp) == NULL) {
unlock();
fclose(actfp);
return FALSE; /* No such newsgroup locally */
}
...
fclose(actfp);
The ultimate arrogance is to assume that the system calls and functions invoked by one's program can never fail. The following is from 4.2BSD, /usr/src/lib/libc/net/ruserpass.c. This module is a fruitful source of examples, so we shall return to it later.
ruserpass(host, aname, apass)
char *host, **aname, **apass;
{
renv(host, aname, apass);
if (*aname == 0 || *apass == 0)
rnetrc(host, aname, apass);
if (*aname == 0) {
char *myname = getlogin();
*aname = malloc(16);
printf("Name (%s:%s): ", host, myname);
fflush(stdout);
if (read(2, *aname, 16) <= 0)
...
Malloc
seldom fails on working programs in 4.2BSD on a VAX.
As a result, programmers develop the nasty habit of
failing to check for
malloc
failing.
In addition to making their own debugging harder
(since
malloc
can fail when you are debugging a program, even on 4.2),
this causes endless grief for those using non-paging
---------------------------------
All the world's NOT a VAX.
---------------------------------
ruserpass(host, aname, apass)
char *host, **aname, **apass;
{
renv(host, aname, apass);
if (*aname == 0 || *apass == 0)
rnetrc(host, aname, apass);
if (*aname == 0) {
char *myname = getlogin();
if (myname == NULL)
myname = "unknown";
*aname = malloc(16);
if (*aname == NULL)
error("can't allocate memory for password",
(char *)NULL);
printf("Name (%s:%s): ", host, myname);
fflush(stdout);
if (read(2, *aname, 16) <= 0)
...
The C libraries contain many, many valuable routines. So does /bin. Why reinvent them? I know not, but people continue to reinvent.
What does this do?
if (freopen("/usr/lib/whatis", "r", stdin) == NULL) {
perror("/usr/lib/whatis");
exit (1);
}
gotit = calloc(1, (unsigned) blklen((int *)argv));
while (fgets(buf, sizeof buf, stdin) != NULL)
for (vp = argv; *vp; vp++)
if (match(buf, *vp)) {
printf("%s", buf);
gotit[vp - argv] = 1;
for (vp++; *vp; vp++)
if (match(buf, *vp))
gotit[vp - argv] = 1;
break;
}
for (vp = argv; *vp; vp++)
if (gotit[vp - argv] == 0)
printf("%s: nothing apropriate\n", *vp);
What would happen if the calloc call failed?
The Berkeley system contains the command apropos used to find manual keywords. While its name might more appropriately have been findman, the program knows that it is to be called as `apropos', because it looks at argv[0]. It is glued into the source for the man command. At any rate, the code attempts to reimplement grep, and does so in a way that is possibly correct but inarguably slow. Here is our findman, which runs about three times as fast as apropos.
#! /bin/sh
# findman - find manual pages given topic(s)
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
INDEX=/usr/lib/whatis
for f
do
grep $f $INDEX || echo `basename $0`:\
nothing appropriate for $f
done
This code could be further speeded up by using egrep or fgrep, or by using the -y/-i option for case insensitivity, but our change will work as shown on almost any conceivable system.
There has been some debate on USENET recently
(and three months ago, and six months ago, and ...)
about replacing C programs with shell files and
vice versa.
Our criteria state that a program must do one function that is unique,
and do it well, to be a C program.
When you reinvent a shell file to be a C program,
you lose the benefit of years of tuning (`hacking'?)
which has gone into the underlying tool, in this case
grep.
You also lose the generality of the well-formed tool,
in this case the ability to grep for regular expressions,
do case-insensitive searches, etc.
---------------------------------
Don't reinvent the flat tire
---------------------------------
This is also a technical objection to the (probably inevitable) process of `unbundling' and the rise of the cat(1) Reference Manual. When the standard tools become options, as they will in the next few years due to marketing pressures to conform to the lowest common denominator (and because of all those people who tried to buy systems with 10MB hard-floppy winchesters), then the use of the standard tools may become a lost art in new programmers.
What does this do on your 4.2 system?
/bin/mail -r
Use of getopt(3) is a standard at our installation. We have in a file called /usr/pub/template.c the skeleton of a complete C program with all the argument checking and basic declarations already built in. Copies of this file will be posted to net.sources or may be had by electronic mail request to either author.
People are always trying to build more complicated `argv crackers'. To our mind, getopt(3) has proven satisfactory in the construction of dozens of small programs and the reshaping of dozens of others. getopt(3) isn't IBM TSO's IKJPARSE, but then again, this is
Here is my (Darwin's) current version of /usr/pub/template.c, which I hack from with an editor to create almost any new C program or to clean up an existing one. To make a new program, I need only edit all the `xxx' strings, so I can concentrate on writing a process() that gets the job done instead of typing argc and argv. How many times have you typed `main(argc, argv)' in your life?
/*
* name - purpose xxx
*/
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#define MAXSTR 500
int debug;
char *progname;
struct stat statbuf;
void error(), exit();
/*
* main - parse arguments and handle options
*/
main(argc, argv)
int argc;
char *argv[];
{
int c;
int errflg = 0;
FILE *in;
extern int optind;
extern char *optarg;
extern FILE *efopen();
progname = argv[0];
while ((c = getopt(argc, argv, "dxxx")) != EOF)
switch (c) {
case 'xxx':
xxx
break;
case 'd':
++debug;
break;
case '?':
default:
errflg++;
break;
}
if (errflg) {
(void) fprintf(stderr, "usage: %s xxx [file] ...\n", progname);
exit(2);
}
if (optind >= argc)
process(stdin, "stdin");
else
for (; optind < argc; optind++)
if (strcmp(argv[optind], "-") == 0)
process(stdin, "-");
else {
in = efopen(argv[optind], "r");
if (fstat(fileno(in), &statbuf) != 0)
error("can't fstat %s", argv[optind]);
if (statbuf.st_mode & S_IFDIR)
error("%s is directory!", argv[optind]);
process(in, argv[optind]);
(void) fclose(in);
}
exit(0);
}
/*
* process - process input file
*/
process(in, inname)
FILE *in;
char *inname;
{
xxx
}
The Berkeley shell csh is reasonably well known and widely used and its externals have been subject to some criticism. The internals of csh are at least as bad, but lesser known.
Csh contains its own versions of malloc and _doprnt. It is thus unable to use stdio or some other functions in the C library. When we attempted to link csh with a faster version of getpwent that uses stdio and an mdbm data base for the password file, we found that csh failed mysteriously.
Our fix was to make csh use the old, slow getpwent. Such is the price of bad coding. (Neither of us uses csh, so we don't much care about its performance.)
The reason that csh was written this way is that it contains so many features that it wouldn't fit on PDP-11 unless the C library was hacked out. In our view, a better approach would have been to eliminate a few features - this shell has enough bells and whistles that one or two could profitably be dropped.
Don't provide private versions of C library functions
unless they are declared
static
(i.e. invisible to other object files).
---------------------------------
Don't fight the C library; use it.
---------------------------------
Coding style is in some ways a matter of personal preference. But there are some things that just don't work, or which are indicative of underlying sloppiness, or are just poor practice. Portability at a working level means the refusal to include code that is bound up in the shape of the particular digital computer we happen to be running on.
Using a literal numeric constant in-line is almost always a bad idea, since the reader of such code is given little clue how the number was derived or what it represents. We return to 4.2BSD's ruserpass.
ruserpass(host, aname, apass)
char *host, **aname, **apass;
{
renv(host, aname, apass);
if (*aname == 0 || *apass == 0)
rnetrc(host, aname, apass);
if (*aname == 0) {
char *myname = getlogin();
*aname = malloc(16);
printf("Name (%s:%s): ", host, myname);
fflush(stdout);
if (read(2, *aname, 16) <= 0)
...
#define MAXPWLEN 15
#define STDERR 2
ruserpass(host, aname, apass)
char *host, **aname, **apass;
{
renv(host, aname, apass);
if (*aname == NULL || *apass == NULL)
rnetrc(host, aname, apass);
if (*aname == NULL) {
char *myname = getlogin();
*aname = malloc(MAXPWLEN+1); /* 1 is for\
the null byte */
printf("Name (%s:%s): ", host, myname);
fflush(stdout);
if (read(STDERR, *aname, MAXPWLEN) <= 0) /* \
error or EOF */
...
On the other hand, grabbing a random #define'd symbol that happens to have the right value, and using it, is no better. In particular, stdio.h's BUFSIZ is often used incorrectly to mean ``a bunch of characters''. This practice originates on Version 7, where BUFSIZ was 512, a convenient size for holding strings, names, etc. But this is unportable, since some stdio implementation might use 48 as its BUFSIZ. Better to use a name such as MAXSTR for maximum string length, and use your own criteria for what's reasonable.
As an exercise, consider what the value for MAXSTR should be. Is 100 enough? 256? 512? How can you prevent overrunning strings, no matter how big you make them? Remember that users are creative, and somebody will find a way to try to exceed whatever you specify. Remember that some machines still have limited memory, so you can't make your strings 5120 bytes each. Think about strncmp(3); is its design useful here?
Berkeley in 4.2BSD documented the internal stdio interface _doprnt. This was a mistake. Other stdio implementations often do not contain a _doprnt or anything like it. The Berkeley curses has used _doprnt for a long time, even before 4.2BSD:
/*
* This routine actually executes the printf and adds it to the window
*
* This is really a modified version of "sprintf". As such,
* it assumes that sprintf interfaces with the other printf functions
* in a certain way. If this is not how your system works, you
* will have to modify this routine to use the interface that your
* "sprintf" uses.
*/
_sprintw(win, fmt, args)
WINDOW *win;
char *fmt;
int *args; {
FILE junk;
char buf[512];
junk._flag = _IOWRT + _IOSTRG;
junk._ptr = buf;
junk._cnt = 32767;
_doprnt(fmt, args, &junk);
putc('\0', &junk);
return waddstr(win, buf);
}
No after version is offered,
since the design is fatally flawed.
It's all too common to see a line of nested function calls. The main problem is that it discourages proper checking of system function return calls. This code, taken from net.sources in early 1985, is typical:
/* Blast into a users terminal. Great fun, \
and sometimes useful. */
#include<sgtty.h>
#include<stdio.h>
#include<sys/file.h>
int errno;
main(argc,argv)
int argc;
char *argv[];
{
errno = 0;
if (argc != 2) fprintf(stderr,"blast: need\
tty number (only).\n");
else blast(open(argv[1],O_RDWR,0666));
}
blast(fd)
register FILE *fd;
{
char c;
if (errno) return;
ioctl(fd,TIOCNXCL,0); /* turn off exclusive use */
while ( (c=getchar()) != EOF) ioctl(fd,TIOCSTI,&c);
}
But that's not all. Note the declarations in the function. The variable `fd' is returned by open(2), so it's a file descriptor (int). But it's declared in the subprogram as FILE *, a stdio stream pointer. But it's used in the subprogram as a file descriptor again.
Here's how some of the code might look:
/*
* blast - blast text into user's terminal input buffer (4.2 only)
*/
#include <sgtty.h>
#include <stdio.h>
#include <sys/file.h>
void error();
main(argc,argv)
int argc;
char *argv[];
{
int myfile;
if (argc != 2) {
(void) fprintf(stderr,"usage: blast /dev/ttyname\n");
exit(1);
}
if ((myfile = open(argv[1], O_RDWR, 0666)) < 0)
error("can't open terminal %s", argv[1]);
else
blast(myfile);
close(myfile);
exit(0);
}
Coding errors and omissions are last, but not least, on our list of suggested improvements.
When we moved our PDP-11/70 from PWB 1.0 to Version 7, some of our users had become dependant on the RJE software to access an attached slave processor (an IBM 3033). We had to provide support for this access, so we put up the System III RJE software. Months later we put up sendmail, and had a month of intermittent looping sendmails (we spoke to each other about `harpooning sendwhales' at the time).
Programmers often seem unaware that most of the macros defined in <ctype.h> are only defined for arguments which are ASCII characters. 4.2BSD's sendmail sometimes uses these macros without first checking that the characters being tested are legal ASCII characters, via isascii. As a result, giving sendmail an address containing a character with the 0200 bit set will cause it to loop.
if (isspace(*s))
s++;
The System III RJE had a bug which occasionally produced trash in the name field, which it passed to mail by the exec system call parameter list, and causing the sendmail loops which we observed since sendmail didn't properly validate its input. Clearly a case of USG and Berkeley code attacking each other!
Here's how this code should be done:
if (isascii(*s) && isspace(*s))
s++;
Programmers sometimes fail to test that scanf scanned as many items as they expected. This leaves the remaining variables pointed to by scanf's arguments containing their previous contents, often trash if the variables are uninitialised. B news 2.10.1 contained such a bug in rfuncs.c, as shown below.
while (fgets(buf, sizeof buf, af)) {
sscanf(buf, "%s %ld", n, &s);
if (strcmp(n, ng) == 0) {
while (fgets(buf, sizeof buf, af) != NULL)
if (sscanf(buf, "%s %ld", n, &s) == 2 &&
strcmp(n, ng) == 0) {
Careful coding takes longer. Like careful flying, on the part of the airline captains who will fly most of you home from this conference. Both take longer, but both give you a warm feeling.
`Later' never comes.
In a `pressure-cooker' environment there is a strong tendency to `get the thing out the door' without concern for software quality. I perceive this as a general failing of North American management; there is almost everywhere a pressure to provide the appearance of productivity regardless of true costs and long-range effectiveness.
The only answer to this is to fight bottom line with bottom line. If you add up the costs of one programmer-year for each major shop, to include the time spent porting `portable' code, you will have a starting point for the real costs. Add in all the in-the-field debugging, including costs of debugging which are transferred to the end-user by shipping undebugged code, you'll be on your way. Don't forget to translate customer debugging time into customer dissatisfaction. My first guess at a conversion factor is
One unhappy customer == Ten lost sales
``Our competitors' code is done more carefully than mine.
I guess their bottom line extends to the horizon.''
We can't close without citing two good guys. Despite its plethora of bugs and its crypt(1)-output-like configuration file, sendmail is careful about returning mail that would otherwise fall on the floor. The Honey Danber version of uucp is good in the same way, and may be better coded - we'll have to see.
A second, smaller-scale winner is the multi-key database (MDBM) posted to the net in mid- to late 1984. We built an entire password database structure on top of this package, and used it in a large student environment (several thousands of students over half a dozen systems) We ran across one obscure bug, but since the author, Chris Torek, had taken the trouble to check for ``impossible'' errors, we got the message ``MDBM BUG...'' instead of a scrambled eggs database. Thanks.
Just to sum up, we've presented some guidelines for good programming and shown how they can reduce bugs. Reducing bugs means reducing costs.
Some of these guidelines are so well-known that they are almost truisms; many of them appear in your fortune file when you log in. Others are our own invention or are paraphrases of originals.
But guidelines are guidelines, and they are useful only if they are put to work in day-to-day programming. That's where you come in.
For a view similar to ours, see Kernighan and Plaugher in The Elements of Programming Style (2nd Edition, McGraw-Hill, 1978) and the Software Tools books (by the same authors, Addison-Wesley).
For a countervailing view, see some (a lot?) of the code which appears in the USENET newsgroup net.sources.
Thanks to Bruce Freeman for assisting with some of the examples. Our positions at the University of Toronto have afforded us the opportunity to peruse a tremendous amount of questionable code over the past `N' years.
Thanks to Laura Creighton for reading several revisions of the manuscript with a critical eye.
Program fragments listed herein are copyright © by AT&T, The Regents of the University of California, and other interested parties. Public Domain code is by the USENET News Project, Mike Newton, and others. The story of the and the Emveeous was inspired by Doug McIlroy's `The and the Echo', of which our tale is but a pale echo.
The template file /usr/pub/template.c was adapted by Henry Spencer from the example in the getopt(3) manual page while he was writing the public-domain implementation of getopt; the version presented here has been extensively hacked over, so Henry should not be blamed for its present state.
Some of the `mottos' used are excerpted from The Elements of Programming Style (see under `Recommended Reading').
Most of the paper was typed by one or another of the authors. Read `we' for `I', and `I' for `we', throughout.
Mark Horton provided useful feedback on the paper
after the presentation at Dallas; some of his suggestions
are incorporated into the present version.


--- layout: default ---
Bitcoins have great properties for consumer transactions. Low fees mean you can pass the savings on to your customers and get a price advantage over other merchants. There are no chargebacks in Bitcoin, any confirmed transaction is protected by the full hashing power of the network. So businesses can accept bitcoins from any country in the world, with no risk of fraud or chargebacks.
In retail stores, bitcoins can be used side-by-side with local currency and credit cards. The merchant will need a point-of-sale device or Shopify tablet system to calculate the exchange rate and process the bitcoin transaction. For less formal transactions, a simple mobile phone wallet app can accomplish the same thing.
Here are some common questions that merchants should ask:
Merchant tools with USD, EUR, CAD, GBP, YEN exchange: BitPay
A more comprehensive list of available shopping cart interfaces can be found at the Wiki page.


PoiClaClu: Classification and clustering of sequencing data based on a
Poisson model
Implements the methods described in the paper, Witten (2011) Classification and Clustering of Sequencing Data using a Poisson Model, Annals of Applied Statistics 5(4) 2493-2518.
| Version: |
1.0.2 |
| Published: |
2013-12-02 |
| Author: |
Daniela Witten |
| Maintainer: |
Daniela Witten <dwitten at u.washington.edu> |
| License: |
GPL-2 |
| NeedsCompilation: |
no |
| CRAN checks: |
PoiClaClu results |
Downloads:
Reverse dependencies:
Linking:
Please use the canonical form
https://CRAN.R-project.org/package=PoiClaClu
to link to this page.


TODO
title: Web technologies are implementation and content-driven author: David Bruant layout: post permalink: /?p=303 categories:
- Uncategorized
I’ve been teaching some web technologies lately and I found myself telling the exact same story over and over again. Something along the lines of “feature X has initially been added in browser Y. Web developer used it, so other browsers copied it after reversed-engineering, bugs included”. If the feature has bugs, it must be standardized as such since content in the wild may rely on particular behaviors (bugs included) to run/be rendered properly. Standardizing a feature in a way that is not backward-compatible with existing content is called “breaking the web” in standards mailing-list and obviously, no one ever wants to do that!
The above quote is pretty much how everything happened after HTML4, CSS2 and ECMAScript 3 CSS (all released in 1998-1999). HTML5, CSS2.1 (and 3 to some extent) and ECMAScript 5 have been works of understanding and standardizing web technologies how they were actually implemented in browsers and used by web authors… and adding a few features. Such work is still ongoing is isn’t likely to be finished anytime soon.
Examples
JavaScript
A very early example is the inclusion of JScript in Internet Explorer, soon after Nescape shipped JavaScript. The name does not matter a second, but what did at the time was for Microsoft to run the content (and specifically scripts) written by web authors for Netscape. As the rumor goes, typeof null === 'object'
was a bug in the original Netscape version that has been copied by Microsoft (and later standardized as it should since changing that could have broken scripts)
Microsoft innovations
In the opposite direction, Microsoft invented .innerHTML and
This day deployed jQuery influenced ECMAScript 5
I’ll let you read this interesting announcement where is described how some deployed jQuery code enforced a change in ECMAScript.
Enters mobile web: Internet Explorer may consider implementing __proto__
It came as a shock when I first read that Microsoft was considering implementing __proto__
, but it makes a lot of sense. The mobile world is dominated by browsers implementing __proto__
(Safari, Opera), so naturally (?), people writing mobile libraries or mobile web content take it for granted.
-webkit-what?
There has been a huge debacle about browsers considering to implement -webkit- CSS properties. No one is really happy of the state of things, but reality is that there is content relying on -webkit- properties. If a new browser wants to enter the mobile field, it has to render existing websites and unfortunately, it seems unavoidable to implement some -webkit- properties.
Just to clarify, I’m not expressing a judgement or an opinion here, just stating facts and drawing the natural conclusion that comes out of it.
“WTF??!!1! H.264 videos in Firefox?? Is Mozilla forgetting its mission?”
An interesting thread started by Andreas Gal discusses the possibility for B2G to use OS codecs when they are available, even for H.264 (including .flv videos which are certainly the most widespread video format on the web) and MP3. As one can imagine, support for these patent-encumbered formats in Firefox after “fighting” against them for so long is at the very least surprising. But it makes sense too: since there is no Flash on iPhones, it is very likely that web apps with video elements embed H.264 videos (only format supported on iphones according to caniuse). Android also supports this.
Knowing that there is H.264 video content out there on mobile websites, what choice is left to Mozilla? Not render any video and never enter the mobile market? As hard as it is for me to accept it, this is certainly not the right choice. I think supporting H.264 when the OS has a codec for it is a reasonable sacrifice to be made in order for Mozilla to reach users and bring its vision of how the web should be with B2G, persona, apps and the likes.
Anyway, back to the main topic…
Last but not least: “Encrypted Media proposal”
This example is not in a mature stage as the previous ones. No one implemented it and there is no content for this now, but Microsoft, Google and Netflix are proposing an extension for encrypted media. As far as I’m concerned, just the initial picture seems too complicated to be realistic.
But technical difficulties are not that big of a deal. Some quotes in a discussion thread are more disturbing: “Our business wouldn’t be viable at all without regional restrictions.” or the no less excellent: “[Content Decryption Modules] implementations that may not be [Free and Open Source Software]-implementable *are* at this time (but not necessarily in the future) a business requirement for the
commercial video provider members of the W3C”.
The careful reader will make the connexion between the “at this time” and “in the future” and realize that if the CDM technology is deployed and has content relying on it, no matter if “commercial video provider members of the W3C” change their mind, the content relying on the initial CDM technology will never be readable by FOSS and that’s a bit annoying, isn’t it?
Counter-examples
ActiveX, VML
No one really ever implemented that besides Microsoft. Certainly because there was few to no content to support.
Firefox’s __noSuchMethod__
Hopefully, you don’t even know what that it and that’s a good thing
Standards and validators
So I’ve claimed that web technologies are driven by implementation and content, but there are technical standards and validators, right? Software standards used to be this almost sacred thing that implementors had to follow and it was a working model. That’s how web standards were originally thought. But that’s not a relevant model anymore. The WHATWG (group behind HTML5) was founded by browser makers, because there was a need for web browsers to agree on what they implemented and to implement it in an interoperable way, with the “don’t break the web” rule as a priority that apparently the W3C had not understood (but Bruce Lawson explains it better than I do)
I really think we should stop thinking standards as Bible-like texts, but rather as an implementation agreement. Obviously, since there is the backward compatibility constraint, there is a need for implementors to hear about what web authors (aka “developers”) have to say about how they currently use the technologies and standards mailing lists are open to this. Finally, web authors can provide feedback and suggestions to new features. That’s a rough and incomplete picture of how web standards currently work and I’m glad it does work like this.
Also, very much like implementations (software) evolve, so must the standards, hence the HTML living standard model.
In the end, there are validators. I have met some people who would never ship a website if all pages do not validate. This is a wrong idea. Validators are the continuity of the ideal that standards are sacred texts. They are as wrong. They are even more wrong if the validator is kept up to date against the latest evolution of web standards (and I am confident they are not). Moreover, the analysis they provide is only partial. As any piece of software, validators can have bugs. Worse than anything else, a validator does not guarantee your content to actually renders properly on web browsers (which is what you actually care about when writing a page). Anyway, you can use validators, but stay critical on their limitations.
HOWTO: remove annoying technologies
Most of the time, it won’t be possible. However, in some cases, some technologies are used only in a certain way and it’s still possible to standardize the technology with a restriction. Obviously, it requires a study of how people use the technologies. This was not so hard for the __proto__ “property” and led to a very reasonable proposal that’s unlikely to break the web.
It is a vastly more complicated work when vendor-specific CSS properties. Here, the outcome would be to decide which properties Mozilla is willing to implement rather than which properties could be removed, but the same result could be used by Webkit to remove the rarely used properties.
Looking forward
For a web technology to be adopted, it takes 2 ingredients: 1) implement it in a wide-spread browser 2) create content using (and relying on) this technology. In retrospect, the whole prefix thing was doomed to fail. It was basically saying “we’ll do 1, but please, developers all around the world, don’t do 2!”. Clearly not a winning startegy. Needless to say that every attempt to evangelize against prefixes is meant to fail since it’s not possible to change all the content of the web (remember it’s decentralized and all of that?)
Conclusion
If I was ever asked, my advice to browsers would be: be careful of what you implement and ship, otherwise, everyone may get stuck!


| 1540 Hunters Stand Run |<EMAIL_ADDRESS>|
| Oviedo, FL 32765 |<PHONE_NUMBER> |
Data Analyst with significant academic research experience, adaptable data modelling skills, and superior writing, editing, and communication skills. Expertise in project leadership and management.
Morris, MN 2006 – present
Professor of English 2015 – present
Associate Professor of English (with tenure) 2010 – 2015
Assistant Professor of English 2006 – 2010 o Department of English chair. o Managed 8 tenure line faculty and 5 adjunct faculty with an annual consolidated budget of $1.1M. o Advocated for departmental resources annually. o Managed departmental hiring, programmatic assessment, and course scheduling. o Conducted annual and long-term assessment of student learning outcomes to modernize program curriculum. o Mentored junior colleagues as they progressed through tenure and promotion in their academic career. o Innovative instructor and mentor. o Designed multimodal, technology-enhanced humanities courses. o Scaffolded undergraduate research projects, using coursework to incubate long-term projects presented at undergraduate and professional conferences and published in international forums. o Continually implemented research from learning and teaching experts to improve student learning. o Created interdisciplinary courses around urgent contemporary topics such as globalization and the climate crisis. o Mentored undergraduate students towards outcomes in academia, law, journalism, non- profit leadership, and other fields. o Interdisciplinary researcher and digital humanities scholar. o Created Booker Prize database project to examine the nature and effects of contemporary literary prizes. o Published 2 books and numerous articles on topics including literature, nationalism, psychology, and philosophy. o Director, Prairie Gate Literary Festival. o Founded literary festival in response to lack of cultural opportunities on campus and in west central Minnesota. Deepened connection between campus and regional community. o Secured sustaining funding through state, foundation, and local campus arts grants. o Chair, Resource Allocation Review Final Phase o Completed system resource allocation review for over 90 individual departments and business units. o Morris Campus representative to University of Minnesota System-Wide Strategic Planning committee. o Focused on system-wide efficiencies and enrollment. o Facilitated faculty and graduate student movement within the system. UNIVERSITY OF MONTEVALLO, Montevallo, AL 2003 – 2006 Assistant Professor of English • Designed and implemented innovative courses in world literature, contemporary poetics, postcolonial studies, and literary theory. TECHNICAL SKILLS • Advanced Excel, HTML, CSS, Javascript, Python, SQL, PostgreSQL • Superior writing, editing, and proofreading skills TECHNICAL PROJECTS • Data Analysis of Trends in Comics and Films via API Queries and Python analysis: https://github.com/millerbrook/Project-1 • Analyzing and Graphing Data Via Matplotlib and Pandas Python libraries: https://github.com/millerbrook/matplotlib_challenge • VBA Scripting of Financial Data Analysis: https://github.com/millerbrook/VBA-challenge • Database planning, importing, and analysis with Postgres and SQL: https://github.com/millerbrook/sql-challenge • OTHER SKILLS • Understanding of the history of and present trends in American higher education • Understanding of theories of learning and application to pedagogy • Leadership of committees of peers on key institutional issues (hiring, resource allocation, personnel matters) • Leadership of large working groups on institutional self-assessment projects • Mentorship of junior colleagues • Managing multiple writing, leadership, and other responsibilities simultaneously • Developing effective workflows for complex projects • Structuring outcome-based assessment • Instructional Design proficiency • Learning Management Software proficiency • Microsoft Office proficiency • Public speaking proficiency • Intercultural Competencies EDUCATION UNIVERSITY OF CENTRAL FLORIDA Data Visualization Bootcamp Certification • Completion in June 2021 INDIANA UNIVERSITY Doctor of Philosophy, English Literature • 20th century British literature, cultural studies and critical theory INDIANA UNIVERSITY Master of Arts, English Literature DARTMOUTH COLLEGE Bachelor of Arts, English Literature, Cum Laude • Varsity soccer team letterman (4)


What text are you looking for?
Link video youtube
Text
Result of text
Total results : {{ pagination.total }}
View
Page : {{ changeString(pagination.page) }}
Prev
Next


This file contains samples and information for Fisher Levantine Arabic Conversational Telephone Speech and Transcripts, Linguistic Data Consortium (LDC) catalog numbers LDC2007S02 (speech) and LDC2007T04 (transcripts), isbns 1-58563-439-5 and 1-58563-411-5, respectively.
Levantine Arabic is spoken along the western Mediterranean coast from Anatolia to the Sinai Pennsiula and encompasses the local dialects of Lebanon, Syria and Palestine. There are two distinct varieties: Northern, centered around Syria and Lebanon; and Southern, spoken in Jordan and Palestine. Northern Levantine Arabic speakers include approximately 8.8 million speakers in Syria and 6 million speakers in Lebanon. Southern Levantine Arabic speakers include approximately 3.5 million speakers in Jordan, 1.6 million speakers in Palestine, and nearly one million speakers in Israel. All varieties of Levantine Arabic retain the language's original stress pattern and stand out when compared to other regional dialects. In addition, Levantine Arabic contains traces of Aramaic.
Fisher Levantine Arabic Conversational Telephone Speech is distributed by LDC in two parts, as a speech corpus and as a seperate transcript collection, for 279 telephone conversations (approximately 45 hours of speech). The majority of the speakers are from Jordan, Lebanon and Palestine.
The transcripts were created with "green" and "yellow" layers using LDC's Arabic Multi-Dialectal Transcription Tool (AMADAT). The green layer seeks to anchor dialectal forms to similar or related Modern Standard Arabic orthography-based forms. The yellow layer is a more careful and detailed transcription that adds functionally necessary vowels and marks important sociolinguistic variations and morphophonemic features.
For a complete description of the transcription and annotation methodology, please refer to the following papers:
Presented below are three two-minute audio files and their transcriptions along with demographic information about the speakers. (Each conversation in the full corpus is approximately ten minutes in length.) The transcripts are encoded using Unicode UTF-8 character encoding. The transcript samples are also presented as PDF files to ensure compatibility.
| Audio | Transcript | Caller Gender | Reciever Gender | Caller Nationality | Receiver Nationality | Topical Conversation |
| fla_0013.wav | fla_0013(PDF|text) | Female | Male(Child) | Jordan | Jordan | Yes |
| fla_0098.wav | fla_0098(PDF|text) | Male | Male | Syria | Lebanon | Yes |
| fla_0106.wav | fla_0106(PDF|text) | Female | Female | Syria | Jordan | Yes |
Portions © 2003-2007 Trustees of the University of Pennsylvania


John Schulz
John Schulz: New Work
November 2-19, 2011
Opening reception Friday November 4, 2011, 5-8PM
Artist Statement:
Andre Breton, founder of Surrealism, once said: “The highest endeavor to which poetry can aspire is to compare two objects as remote as possible from one another, or by any method whatsoever, (to) bring them into confrontation in an abrupt and striking way.” In this way, third meanings are generated from elements that remain otherwise undistinguished.
Pop Art and Fluxus, the legacy of Dada, held not only that anything could become art if placed in the proper context, but that the object itself could also become self-critical, a reflection of the culture that produced it. Even the most banal images are deeply rooted in the fabric of day–to–day experience and the collective psyche. In archeological practice, the garbage heap has as much value, if not more, than the other relics in a dig.
My work is a dialogue with some of the lower common denominators of visual culture. I am drawn to images that at once strike me as enigmatic, strangely beautiful, and vaguely threatening, familiar things jerked out of context and thrust together as in “the chance meeting of a sewing machine and an umbrella on a dissecting table.”
My current practice is a means of opening up the psychological potential underlying all images beyond their immediate function and intent. I am interested in deconstructing commonplace didactic and commercial images to the point of voiding their original content through fragmentation, and recombining them with other bits of detritus and text to propose new possible readings. Varieties of chance operations are employed systematically to keep conscious selection and decision-making as neutral as possible. As formal and linguistic relationships emerge through these procedures, these are also exploited in evolving content.
In the end, I want to make something beautiful out of the insignificant, to lift the veil of banality covering the commonplace. I want my work to have a presence like furniture to which other meanings might be attached, like the rubber gloves and artichokes in the paintings of deChirico. A critic once spoke of my work as “essentially leaden and humorless.” I found that to be a quite sensitive observation, and took it as a compliment.
John Schulz


Connecting...
Minetrack
Watching
0
PC players on
0
networks.
Click to toggle graph controls
Show All
Hide All


YHBT
`Prev `__
Y
`Next `__
--------------
**YHBT**: //
[Usenet: very common] Abbreviation: You Have Been Trolled (see
`*troll* <../T/troll.html>`__, sense 1). Especially used in “YHBT. YHL.
HAND.”, which is widely understood to expand to “You Have Been Trolled.
You Have Lost. Have A Nice Day”. You are quite likely to see this if you
respond incautiously to a flame-provoking post that was obviously
floated as sucker bait.
--------------
+--------------------------------+----------------------------+-----------------------------+
| `Prev `__ | `Up <../Y.html>`__ | `Next `__ |
+--------------------------------+----------------------------+-----------------------------+
| Yet Another | `Home <../index.html>`__ | YKYBHTLW |
+--------------------------------+----------------------------+-----------------------------+


protein expression leaf PVX benthamiana plants symptoms miR gene genes virus (Figure showed induced infected miR, accumulation miRNA Figure curl leaves shown begomoviruses dpi levels vein TYLCV mild increase ACMV host panel miRNAs DNA PVX-mediated approx. proteins file infection observed decrease expressing resulted results (-) (panels Yes developmental plant Additional RNA replication viruses Plant CLCuMV cell encoded mosaic phenotype vector {border-style CbLCuV begomovirus expressed silencing bipartite curling mediated monopartite px;} severe viral yellow yellowing #ffffff;} Rep Table Virology geminivirus inoculation study Tomato Virol involved recovery transgenic determinant rep Briddon Mol inoculated movement necrosis panels pathogenicity possible symptom However, S). Stanley Symptoms effects emerging level required selected systemic tomato MVY, Mansoor VT, coat distinct produced response small (Table Arabidopsis activity associated curling, dpi. earlier increased induce lesions necrotic nuclear significant CLCuMB Cell H). Infection Sci developing disease exhibited green miRNAs. plants, ren studies transcription Fauquet analysis development exception geminiviruses general important leaves, major role target typical used yellowing, (A)C (a)c B), CLCuKoV Interact New Photographs RNAs TrAP Virus appeared benthamiana, caused death different effect function interact interacts possibly px; suppressor using {font-family ./JVI...-. ARF Cotton Nicotiana Plant-Microbe TrAP/C Zafar consisted cycle did encode encoding factors font-size formation gfp harbouring interaction interactions likely pattern phenotypes regulate roles transient trap/c ./j.virol... ./viro.. Acad Amin B). Biol CLCuMV, D), Expression F). GFP MYMIV Natl NcO, NcS ORF PVX. Proc Rezaian ToLCV USA VY, based cells change close component consistent cotton crumpling decreased double; essential examined example, generally including indicates induction infections miR. newly nsp play presented production promoter regulation severity showing shuttle similar subsequent suggesting transcriptional veinal (a)v (data (panel (with ./S-()- ./j.-...x Agrobacterium Bartel CPs Geminivirus Gen Hanley-Bowdoin Inoculation Kokhran MLCu, REn World abnormalities activator affect analyses approximately begomovirus-encoded benthamiana. betasatellite border-color border-width cassava common complete described difference differing early evident far genes. growth homolog individual levels, microRNA number pathway previously product reported result shown). single-stranded solid; stunting suitable suppression suppressors symptoms. thickening tissues tobacco virus-like {font-style {font-weight (CP), (NSP) (specifically ./-X-- ./MPMI.... ./pnas. A). ACMV, Additionally Baulcombe Bisaro C). Chapman Citovsky Delhi Development Gafni Hohn Hussain Interaction Leaves Markham Old PVX, PVX-A-rep PVX-T-c Pathol SLCu, Veluthambi Voinnet acts altered approx begomoviruses, bind binding binds bold cases cell-cycle changes close-up components consisting containing contrast, courier; data demonstrated differ downward em; enations encodes enhancer fluorescence genome genomes gradually hosts hypersensitive identified infiltrated interfere interfering known lack leaves. mRNAs miRNAs, mir multiple mutant mutation nucleus organ phloem plays primers products protein, proteins, pt;} recent regulates report reports responses satellite size slight suggests supported symptoms, tabacum targets time tissue transcripts vector. vegetative veins viruses.