Network: [Enter Network Here]
Password: [Enter Password Here]
Welcome!
Girl Develop It is here to provide affordable and accessible programs to learn software through mentorship and hands-on instruction.
Things to keep in mind:
We are here for you!
Every question is important
Help each other
Have fun!
Getting to Know You
What's your name?
What do you want to take from this class?
What's your favorite movie?
What We'll Be Covering:
The History of Computing
How Computers Think
How Programming Languages Developed
Basic Programming Concepts
What Should I Do Next?
In this workshop, we'll be sampling from a number of topics, starting
with running through the history of how computers as we understand
them today came to be, how computers think,
and how the way humans talk to computers has changed. Then we'll dig
into some top-level programming concepts to lay a nice foundation for
your further forays into programming.
By the end of this workshop, you will also have dabbled in JavaScript,
Python, and Ruby, and have an enhanced understanding of many programming
jokes.
Computation: The Early Years
Computation: The Early Years
Examples of some early analog calculators.
People have been using tools with varying levels of complexity to make math
easier for years, from abacuses for basic math to slide rules for trigonometry
for logorithms. However, these technologies only went so far in that they had singular
purposes and their scope was limited by the space they occupied, and as the Industrial
Revolution kicked up and global trade started to expand, it became more imperative
to get engineers and navigators the appropriate tables of equations so they could
do their jobs well. These were difficult to reproduce accurately, and folks were
feeling the pain. In classic infomercial style, THERE HAS TO BE A BETTER A BETTER WAY.
Computation: The Early Years
Diagram of Charles Babbage's Difference Engine.
And indeed there was! In 1822, Charles Babbage concepted a mechanical calculator
that could print up these tables without risk of human error that he styled
the Difference Engine. The British government was all over this in that first year
gave him £1,700, which, in today's money, is roughly $200K.
Computation: The Early Years
An actual difference engine built out.
However, as far as the British government was concerned, human error still reigned
in this case, as the Difference Engine ended up being trapped in development hell — the
engine he concepted was too spendy and too complicated to produce at that time and wouldn't
actually be built out until 1989 when it was basically done for fun by the London Science Museum
Also to their chagrin, Babbage had gotten distracted by another project in 1837 –
an analytical engine that could be used more broadly, had "memory", and could grapple with
loops and conditional branching.
Computation: The Early Years
A program for the computation of Bernoulli numbers designed for the analytical engine.
Babbage's mathematical bestie was also pretty excited about this analytical
engine, and when asked to translate a paper on a lecture he gave on the machine in French,
in 1843 casually included annotations several times longer than the entire, explaining
why it was so cool. Including an algorithm designed specifically use on the
engine, which has the distinction of being the first published computer program.
Computation: The Early Years
Our Lady of Conceptual Programming, Ada Lovelace
Said programmer was Ada Lovelace.
Computation: The Early Years
Analytical Engine per Sydney Padua's The Thrilling Adventures of Lovelace and Babbage .
How computers ultimately ended up working primarily looked much different
from Babbage’s initial design, because base-ten counting — the numbering
system that we're most familiar with and gets the most play in the West,
makes for a much more complicated device then base-two.
Computation: The Early Years
Programmers working with the Colossus, a Nat-zee code-breakin' machine and one of the first digital computers.
... the device, however, was just as large.
How Do Computers Do Their Thinking?
How Computers Think
Computers have three types of memory — Read-Only Memory ,
Hard Drive Memory , and Random Access Memory .
... once digital computers arrived, the base on which computers did
all of their thinking, colloquially referred to as “memory,” stabilized
into three forms, . It operates a little differently from human memory,
but I'll try to make it as clear as possible.
How Computers Think: ROM
ROM , or Read-Only Memory , is hardwritten
into chips and handles data essential to a computer's operation.
ROM, or read-only memory, is memory that’s hardwritten onto chips. This kind of
memory is typically responsible for serving up the kind of data that’s your
computer would be hard-pressed to operate without — like an operating system.
Of course, making it quick to access means that files in it can’t be edited,
and means that your computer won’t forget how to operate when it’s turned off.
Do we have any gamers in our midst? Or been down to 16-Bit?

In the arcade and early home gaming eras, games were printed as read-only memory onto
chips and read directly and immediately by their computer systems. One of the pitfalls
of writing data to ROM is that space is limited to what you can physically place on the
chips, which is why you don't see many cartridges in use nowadays.
How Computers Think: ROM
It did, however, make these games run at a very snappy pace, which is why we may have
had to suffer through replaying levels in older games, it wasn't paired with the
indignity of having to sit through a loading screen like we do with games on discs.
How Computers Think: ROM
Read-Only Memory functions similarly to the brainstem.
(I'm sorry...)
 I am sorry if you are now thinking about breathing
and actively doing it right now.
How Computers Think: Hard Drive Memory
Hard Drive Memory is editable memory that
holds files and programs that you create and install.
Hard drive memory — not explicitly named as memory, but still, technically memory, holds files and
programs on your computer that you create and install. While ROM is fixed, memory on your hard drive
can be written and edited, which makes it very much like long-term memory. When you “save” files,
you’re writing them to your hard drive. Flash drives, similarly, are a type of hard drive memory.
How Computers Think: Hard Drive Memory
The human analogue of this type of computer memory is long-term
memory. If you’ve seen the movie Inside Out, the way in which memories
are stored is actually pretty similar to how computers hold onto data.
How Computers Think: RAM
Random Access Memory — not to be confused with the excellent Daft Punk album of the
same, but pluralized, name...
How Computers Think: RAM
RAM , or Random Access Memory
is volatile memory that handles data that the computer is actively using.
... is volatile — the data it grapples with isn’t ‘written’
anywhere, just temporarily stored on a series of electrified capacitors.
The more capacitors there are dedicated to this purpose, the more a computer
can do at once.
Has anyone had their computer crash and lost hours worth of work before?
This is RAM's fault.
Yes, dear friends — this is why there’s a whole lot of weeping and your recent
work to files is lost to the ether in the case of a computer crash — your RAM
doesn’t suddenly loses context and you’re left with a blank slate.
How Computers Think: RAM
Computers are very much like Drew Barrymore's character in 50 First Dates —
doomed to lose any "new" memories whenever she loses consciousness. Both tragic,
and a blessing in that, as far as she knows, Adam Sandler's filmography ends
in the year 2003.
Fortunately, a lot of programs do some stealth-saving in the background
and provide you with recovery files, but that pain and terror is a part of RAM.
How Computers Think: RAM
RAM is like our working memory.
In this way, RAM is quite a bit like working memory. If you meet someone and
exchange telephone numbers, it’s likely that you’ll forget those 7-10 digits
when you’re provided with additional distraction unless you make a conscious
choice to memorize that phone number. Meanwhile, Tommy Tutone has ensured that
most people of a certain age remember Jenny’s phone number.
How Computers Think: A Review
ROM handles data that's essential for device operation
Hard Drive handles hardwritten, saved data.
RAM handles data your computer is using.
How Computers Think
Another side benefit of this course I forgot to mention is that a little bit
of the mystery can be taken out of computer specs.
Can anyone parse what the highlighted items indicate?
There is a caveat, being that colloquially, “memory” refers to RAM.
Nowadays, 16GB can be a sad amount of hard drive memory, but a pretty
kickass amount of RAM.
How Do We Talk To Computers?
The Evolution of Programming Languages
First Generation : Machine Code
Second Generation (1949) : Assembly Code
Third Generation (Late 1950s) : High-Level Language
Fourth Generation (1980s) : Even Higher-Level Language
How We Talk To Computers: The First Generation
Machine code , is the straight-up use
of binary as a means of programming.
When digital computers actually started being made, they ultimately
could only be spoken to electronically in a series of zeros and ones
— binary — and telling them what to do could only really be accomplished
by feeding them punched film or paper or manually adjusting plugs or
switches.
How We Talk To Computers: The First Generation
If this sounds like a pain, it’s because it was — a series of zeroes and
ones are very far from being immediately meaningful to anyone but computers,
who would happily chug away on them.
How We Talk To Computers: The Second Generation
The first response to machine code was assembly code. These languages
made use of a program called an assembler that assigned chunks of zeros
and ones that had specific purposes to symbolic names.
How We Talk To Computers: The Second Generation
Assembly code is code that
uses chunks of text as symbols for specific processes.
Assembly code… looks vaguely better than a sweep of binary.
It was more user-friendly in this respect, but a big problem with
assembly languages is that they’re incredibly specific — in that
they only work on a single type of computer. Which sounds like
a bummer, but when the number of extant computers was in the
low double-digits, there wasn't too much pressure.
For some, this was close enough. As much as they could hope for.
And besides, no big deal, computers are just glorified calculators
that work really, really fast, right?
... until someone came along who looked at this nonsense and thought
"No. This is not fine. This is ridiculous."
Our Lady of Code Compilation, Grace Hopper
This person was Grace Hopper, who, after absolutely crushing it in the
Navy during WWII writing programs used on the US's ships, proceeded to
absolutely crush it in the private sector and in 1952 wrote the
first compiler — a computer program that would convert honest-to-goodness
text, not alphabet soup, into binary that any computer could read.
This floored her coworkers, but once they were convinced that the
compiler didn't bite, it precipitated the next wave of programming
languages...
How We Talk To Computers: The Third Generation
Third-generation languages are languages
that machine-independent and whose syntax is abstracted and
reads in a much more human fashion.
Third-generation programming languages, machine-independent, abstracted
further away from the computer and sounding much more human. These are
often referred to as high-level programming languages. For the sake of
comparison, here's a 'hello world' program written in Assembly for Linux...
Before / Assembly
section .text
global _start ;must be declared for linker (ld)
_start: ;tell linker entry point
mov edx,len ;message length
mov ecx,msg ;message to write
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel
mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel
section .data
msg db 'Hello, world!',0xa ;our dear string
len equ $ - msg ;length of our dear string
A touch of Assembly.
... and here's a 'hello world' program written in one of the first
third-gen languages COBOL.
After / High-Level
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLOWORLD.
PROCEDURE DIVISION.
MAIN.
DISPLAY 'Hello, world.'.
STOP RUN.
A touch of COBOL.
... see? Feels so much better and airier already!
How We Talk To Computers: The Third Generation
Examples:
This precipitated the creation of a number of languages, some getting more
traction than others. Assembly is still used for programs that work closely
with hardware and need the device specificity and control, but for programs
that humans needed to program and interact with, high-level languages were
the way to go.
How We Talk To Computers: The Fourth Generation
Examples:
JavaScript
Python
Ruby
MySQL + PostgresSQL
While there's not a super-distinct boundary between the third and fourth generations,
there were definite developments in how programs handled stored data and
also in avenues for code use — namely, the emergence of the internet. But by this
time, there's a clear interest in making languages as clear as possible
to programmers, which is very nicely summed up in the philosophy of the
creator of Ruby, Yukihiro "Matz" Matsumoto. (slide advance)
I want to see Ruby help every programmer in the world to be productive, and to enjoy programming, and to be happy.
— Yukihiro "Matz" Matsumoto
... which, as far as goals go, is both noble and adorable.
How We Talk To Computers: The Fourth Generation
puts 'Hello, world!'
A touch of Ruby.
... and now most programming languages getting play nowadays look more like this.
To review...
And now to review, we're going to look at all of these generations.
again, all performing a popular fist program — writing the text "Hello World."
to the screen.
First Generation
011010000110010101101100011011000110111100100000011101110110111101110
"Hello World" in binary.
This binary slide is kind of a fake-out. This is just the characters for
"Hello World" converted into their binary equivalents, this piece of code
wouldn't get anything to render on the screen.
Second Generation
section .text
global _start ;must be declared for linker (ld)
_start: ;tell linker entry point
mov edx,len ;message length
mov ecx,msg ;message to write
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel
mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel
section .data
msg db 'Hello, world!',0xa ;our dear string
len equ $ - msg ;length of our dear string
"Hello World" in Assembly.
Third Generation
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLOWORLD.
PROCEDURE DIVISION.
MAIN.
DISPLAY 'Hello, world.'.
STOP RUN.
"Hello World" in COBOL.
Fourth Generation
puts 'Hello, world!'
"Hello World" in Ruby.
How To Talk To Computers
Now, we start to get to the fun part, where we start talking to computers.
However... there are some things to be aware of.
How To Talk To Computers
The best thing about computers is that they will do exactly what you tell them to do.
The worst thing about computers is that they will do exactly what you tell them to do.
While programming languages have gotten easier to read and write,
what we ask the computer to do will ultimately be taken by the compiler
and converted into a series of zeros and ones. It is said that the
best thing about computers is that they will do exactly what you
tell them to do. It’s also said that the worst thing about computers
is that they do exactly what you tell them to do.
How To Talk To Computers: A Demo
So for your benefit, our fearless leader Becky and class coordinator
Amy will graciously demonstrate how computers tend to operate... by
attempting to make a peanut butter and jelly sandwich.
(DEMO)
How To Talk To Computers: A Demo
As you can see, it's... not exactly that easy. While programming languages
look fairly similar to English, they're pretty particular about the way
that you relay instructions to them and aren't able to make assumptions
about what steps are necessary ahead of an action unless they're told
explicitly to them.
Let's Talk To Computers!
So, all that being said... it is now time to get computers to do our bidding.
Let's Talk To Computers: Concepts
We'll be covering
Variables ,
Conditionals , and
Loops !
Let's Meet the Terminal!
The terminal is a space where we
run chunks of code and test them to make sure that it's behaving in
the way we want it to.
For this course, we'll be making use of an online terminal named repl.it .
But before we get started, let's meet the terminal! The terminal is
a space where we can run chunks of code and test them to make sure
that it's behaving predictably.
As I alluded to earlier, we'll be sampling from Ruby, Python, and JavaScript,
but for this initial portion, we'll be using JavaScript, which
Taylor is going to be running the Intro class for next Wednesday.
Let's Talk To Computers: Variables
A variable is essentially a storage container for information .
Examples:
var myName = "Lauren";
var myQuest = "To find the Holy Grail";
var myFavoriteColor = "orange";
Variables come in several flavors, but here we'll be covering Numbers , Strings , and Booleans .
Some of of you may remember variables from algebra — but if any of
you have some post-traumatic stress from this time, fear not —
there's no need to solve for anything, variables are our friends,
and they help us store information that we can access later in our
code. The computer will be manipulating all of your variables,
you will just be telling it how.
There are a few different types of information that can be stored
as variables — some of which are numbers, strings, and booleans.
The variables in the code chunk above are strings.
Variable Types: Numbers
Variables can be used to store numbers
True to the computer's versatile calculator origins, variables can be
used to store numbers that are used across a program with a meaningful
label.
Now, time for some programming "Where's Waldo" — what items on this
Amazon page could be stored as number variables?
(Gather responses, hunt a little bit.)
Variable Types: Numbers
Variables can be used to store numbers.
var bookQuantity = 2;
var bookPrice = 20;
var bookDiscount = 0.41;
Yes indeed — the price of the book could be stored as a number, as well
as the quantity ordered, how much the book is discounted (list anything
else mentioned here too.)
Variable Types: Strings
Variables can also be used to store text.
Another type of variable is a string, whose purpose is to hold bits of text.
Rolling back to the Amazon page, what bits could be stored as
string variables?
(Gather responses, hunt a little bit.)
Variable Types: Strings
Variables can also be used to store text.
var bookTitle = "Romeo and/or Juliet: A Chooseable-Path Adventure";
var bookAuthor = "Ryan North";
Usually when a string is created in a program, it's surrounded by quotation marks.
... pretty much all of the text on the page can be stored as a string,
but in this case, I had extracted the title of the book and the author
of the book for the sake of example. Either way, typically when a string
is created by a program, it's surrounded by quote marks.
Variable Types: Numbers as Strings
You can store numbers as a string variables too!
This is best used for numbers that aren't/shouldn't be used in mathematical
equations. Numbers can also become part of strings if directly added to them.
var jennysNumber = "8675309";
However, because it's kind of difficult to manipulate strings, it can
sometimes be a good idea to store numbers as string variables in order
to prevent them from being used in mathematical equations. If you
happened to be Tommy Tutone, you would probably store Jenny's number
as a string after insisting that she not change it.
Variable Types: Booleans
Variables can also be used to store TRUE or FALSE as a value.
Variables can also be used to store true or false as a value.
Once again, the Amazon page — what bits could be stored as
a boolean value?
(Gather responses, hunt a little bit.)
Variable Types: Booleans
Variables can also be used to store TRUE or FALSE as a value.
var loggedIn = false;
var primeMember = false;
You can define a condition, then use a Boolean to tell the computer whether that condition is true or false.
So some of the Amazon examples could include the user's logged-in
state or Amazon Prime status. Generally, booleans are used to state
whether a given condition is true or false. Speaking of which...
Variable Ability #1
The value of variables can be updated over the course of a program.
Variable Ability #1
Like we learned earlier, variables are storage containers... (advance
slide) ... much like this box is a container for cats. (advance slide)
Variable Ability #1
var kittyVillagePopulation = 1;
console.log(kittyVillagePopulation);
kittyVillagePopulation = 0;
console.log(kittyVillagePopulation);
(repl.it)
If we were to take a census of Kitty Village, we might declare the variable
kittyVillagePopulation is declared and then assign it the value of 1.
If the rather irritated cat removed itself from Kitty Village, then we
might reassign the value of Kitty Village to be 0. (follow link)
Interlude: What's this "console.log"?
Not every change in your code is going to be reflected on-screen
One way to make sure everything is behaving correctly is to log to the console .
(Read slide.) This was demonstrated in the previous chunk to show
that the value of kittyVillagePopulation was indeed being changed.
console.log is used for this purpose in JavaScript, while you see print
used for the same purpose in Python and Ruby.
Variable Ability #2
Number variables can be manipulated, just like the numbers they represent.
String variables , however, can only be mashed together.
(repl.it example)
Now, variable ability number two — you can run calculations
with number variables as if they were numbers, but with basic operations,
strings can only be mashed together. And now, a demonstration.
With the variables we gathered earlier from the webpage, we could take
bookPrice and bookDiscount to calculated the bookDiscountedPrice, then
even create an order total.
If we then wanted to, say, get rid of the subtitle in the title, and
tried to do the obvious thing (subtracting the appropriate part of the string),
we run into a problem. NaN. Which is the computer's way of complaining that you're
trying to manipulate something that's clearly not a number like a number.
Variable Ability #2
Computers on numbers.
Computers on strings.
Numbers are computers' jam, but strings are a smidge too abstract for computers.
It's possible to remove text from strings, but specialized instructions are required
to find and then manipulate individual sections of text as if they were alphabet
blocks.
Before we move on, a variable mini-quiz!
(Run through colors and ask what type of variable might
be involved with each chunk.)
Let's Talk To Computers: Logical Structures
Once you have your data in the program, you can manipulate it!
Logical structures provide the basis for doing things with that data.
Logical structures! Logical structures allow you to determine what
actions are taken with what data. If you understand the concepts,
you can learn how to represent them in most programming languages.
Let's Talk To Computers: Operators
Operators are words or symbols that let you
compare or evaluate something to produce an output.
A few examples:
== (equal to**)
> (greater than)
< (less than)
>= (greater than or equal to)
> = (less than or equal to)
!= (not equal)
and
or
** "Equal to" is a double equal sign because a single equal sign is reserved in the language for making variable assignments.
In order to articulate conditions, we need the help of operators, which are
words and symbols that let you compare or evaluate something
to produce an output. Some of these are once again familiar from math class,
But the double equals sign is a little different — any guesses as to why?
... (advance slide)
Yup. In programming languages, a single equal sign is used to assign values
while a double equal sign is used to determine if two values are equivalent.
Additionally, the exclamation point in front of an equal sign is the programming
equivalent of not equal to. "And" will run code if both listed conditions are true,
"or" will evaluate to true if one condition is true. Let's try them out!
Let's Try Operators!
For this exercise, we're using JavaScript .
We're going to pop over to repl.it .
Let's Talk To Computers: If/Else Statements
If/Else statements evaluate a condition, also known as an argument , and perform actions based on the result.
If the condition is true , then the computer does the action or actions that are listed after the IF statement
If the condition is false , then the computer does the action or actions that are listed in the ELSE statement.
If we popped back to Amazon, we could say "IF" you're logged in, show your name and cart numbers.
"ELSE", show a link to the login page.
"ELSE", you have to pay for shipping like a peasant.
Let's Try If/Else!
For this exercise, we're using Ruby .
We're going to pop over to repl.it .
Let's Try If/Else: Part 1
cart_total = 8
if cart_total > 2
print "You get free shipping!"
end
Change the numbers to see what happens.
Change the operators (greater than, less than, etc.)
Let's Try If/Else: Part 2
cart_total = 8
if cart_total > 2
print "You get free shipping!"
else
print "Sorry buddy, gotta pay for shipping..."
end
Manipulate the elements to see what happens.
Interlude: What's all this white space?
One nice thing about some newer languages is that it looks similar to writing English.
However, when dispensing with punctuation, the computer substitutes indentation to make that
actions execute correctly and in the right order.
And now, a break for one of those programming jokes...
A programmer's partner sends them to go pick up some groceries, asking
them to get a loaf of bread, and, if there are eggs, to get twelve.
The programmer returns with twelve loaves of bread.
Let's Talk To Computers: Loops
A loop is a set of instructions that repeats until a certain condition is reached.
Two kinds of loops are For Loops and While Loops .
(Read Slide) ... but we'll only be touching on while loops in this class.
Why Use Loops?
Loops are awesome at doing repetitive tasks and reducing the amount of code you need to write.
Loops are great at doing repetitive tasks and reducing the amount
of code that you need to write. Depending on what you're doing, you
could have hundreds of lines of code using if/then/else, or you could
write a simple loop statement. For example... imagine Oprah
was a computer.

When it came time to distribute her favorite things, she could
print "You get a car!" 276 times for each member of her studio
audience.
Why Use Loops?
number_of_cars = 276
while number_of_cars > 0:
print('You get a car!')
number_of_cars = number_of_cars - 1
... or she could rapidly loop through the entire studio audience.
to do the same thing.
Let's Do Some Loops!
For this exercise, we're using Python .
Go to repl.it .
Let's Do Some Loops!
papers_to_deliver = 65
while papers_to_deliver > 0:
print(papers_to_deliver)
papers_to_deliver = papers_to_deliver - 1
print('Out of papers! Go home!')
(repl.it)
Change the numbers to see what happens
Change the operators (greater than, less than, etc.)
Change the string statements
Has anyone here played the game Paperboy? Delivering newspapers to subscribers
while attempting to avoid death and hitting sweet ramps on bonus levels? Well,
this loop is for you. Does anyone want to hazard describing what would happen
in this chunk of code?
Here's a diagram that runs through the logic of a loop. (Read through
diagram)
Beware the Infinite Loop!
An infinite loop is a loop that will never meet the condition to stop. It will keep going until it's used up all your computer's (or server's) memory (RAM). This is bad!
Example for our loop:
If the papers_to_deliver = papers_to_deliver - 1
line was missing, it would keep looping because 65 is always greater than 0!
If papers_to_deliver = papers_to_deliver - 1
was changed to + 1
, it would keep adding 1 to 65 forever!
If you're not careful, it's possible to write a loop that won't ever
find its way to its stop condition. These are infinite loops, and they
are bad news bears. As we alluded to earlier, computers do exactly what you ask them.
Thusly, they'll keep going until they've used up all their (or their server's)
memory (RAM). Your computer's abject feeling of defeat will not be unlike this cat's.
Usually, this will just force you to introduce the end condition of closing your browser,
but an infinite loop will stop any program in its tracks.
Using What We've Learned
We've run through Variables, If/Else Statements ,
and Loops ... now let's try to think through how we'd use them all together!
Our Brief: Fashion a program for a cupcake-delivering robot.
Interlude: Commenting
When programming it can be difficult to keep track of what's happening in a particular bit of code
This is where comments come in! They allow you to make notes in your
code without them interfering.
In Python and Ruby, comment lines are started with a hash sign (# ). In Javascript, they're started with two front slashes (// )
Just like writing on your monitor with a marker, but scrollable and doesn't make a mess.
Let's Try It All Together!
For this exercise, we're using Python .
We're going to pop over to repl.it .
Wrapping up...
As promised, some terrible programming jokes.
There are 10 types of people —
those that know binary
and those that don't.
A computer programmer rushes his wife to the hospital where she gives birth to their child. The doctor first hands the baby to the programmer.
"Well?" his wife says impatiently. "Is it a boy, or is it a girl?"
Smiling tearfully, the programmer replies, "Yes.
Next Steps: Online Resources & Books
Next Steps
Hit up Intro to JavaScript next week!
Explore some online learning tools!
Connect with us on Slack!
Next Steps
Hit up Intro to JavaScript next week!
Explore some online learning tools!
Connect with us on Slack!
Get into the community!
Next Steps: Get Connected!
Wrapping up, remember the following:
While I hope that you feel like you've got a pretty good handle on
the basics and larger concepts of programming, the learning curve
is an intimidating bugger, and there will come a time where you
look at the code before you and say... 'Ehhhh—?'
Sucking at something is the first step to being sorta good at something.
— Jake the Dog
But as discouraged as you might feel at that time, remember the words of
another dog, and keep at it.
There will be moments like this. Very frequently. But if you keep at
it...
There will also be moments like this. So stay on the path, and don't
be afraid to pick our brains, because we want you to be awesome and
successful!


Spontaneous adverse event reports have a high potential for detecting adverse drug reactions. However, due to their dimension, the analysis of such databases requires statistical methods. We propose to use a logistic regression whose sparsity is viewed as a model selection challenge. Since the model space is huge, a Metropolis-Hastings algorithm carries out the model selection by maximizing the BIC criterion.
| Version: | 1.0.1 |
| Depends: | R (≥ 2.10) |
| Imports: | parallel, mgcv |
| Published: | 2016-04-05 |
| Author: | Matthieu Marbac and Mohammed Sedki |
| Maintainer: | Mohammed Sedki <Mohammed.sedki at u-psud.fr> |
| License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| NeedsCompilation: | no |
| CRAN checks: | MHTrajectoryR results |
| Reference manual: | MHTrajectoryR.pdf |
| Package source: | MHTrajectoryR_1.0.1.tar.gz |
| Windows binaries: | r-devel: MHTrajectoryR_1.0.1.zip, r-release: MHTrajectoryR_1.0.1.zip, r-oldrel: MHTrajectoryR_1.0.1.zip |
| OS X binaries: | r-release: MHTrajectoryR_1.0.1.tgz, r-oldrel: MHTrajectoryR_1.0.1.tgz |
| Old sources: | MHTrajectoryR archive |
Please use the canonical form https://CRAN.R-project.org/package=MHTrajectoryR to link to this page.


{%extends "confreg/confadmin_base.html" %} {%block title%}Prepaid vouchers{%endblock%} {%block extrahead%} {%endblock%} {%block layoutblock%}
Status of all prepaid vouchers. Click an individual batch to get the ability to send email to the buyer. You can also view the list of prepaid voucher orders.
| Voucher code | Used by | Used at |
|---|---|---|
| Batch {{b.id}} for {{b.buyername}}{%if b.sponsor%} (sponsor {{b.sponsor}}){%endif%}, registration type {{b.regtype.regtype}}{%if b.purchasedvoucher %} (independently ordered and paid on {{b.purchasedvoucher.invoice.paidat}}){%endif%} | ||
{{v.vouchervalue}} |
{%if v.user%}{{v.user.fullname}}{%endif%} | {{v.usedate|default:""}}{%if not v.usedate%}{%endif%} |


runSimulation()
Run phenotype simulation.
simulatePhenotypes()
Command line execution for PhenotypeSimulator.
correlatedBgEffects()
Simulate correlated background effects.
geneticBgEffects()
Simulate infinitesimal genetic effects (reflecting sample kinship).
geneticFixedEffects()
Simulate genetic variant effects.
noiseBgEffects()
Simulate observational noise effects.
noiseFixedEffects()
Simulate noise fixed effects.
expGen2probGen()
Rewrite expected genotypes into genotype probabilities.
getAlleleFrequencies()
Compute allele frequencies from genotype data.
getCausalSNPs()
Draw random SNPs from genotypes.
probGen2expGen()
Compute expected genotypes from genotype probabilities.
read_lines()
Scan file for specific line numbers
simulateGenotypes()
Simulate bi-allelic genotypes.
standardiseGenotypes()
Standardise genotypes.
getKinship()
Get genetic kinship.
readStandardGenotypes()
Read genotypes from file.
savePheno()
Save final phenotype and phenotype components.
writeStandardOutput()
Write simulated data into formats used by standard GWAS software.
setModel()
Set simulation model.
addNonNulls()
Add all non-NULL elements of list.
commaList2vector()
Comma-separated string to numeric vector.
rescaleVariance()
Scale phenotype component.
simulateDist()
Data simulation for different distributions.
testNumerics()
Test lists for different properties of numerics.
transformNonlinear()
Phenotype transformation.
vmessage()
Print userinfo.


App for asthmatic youngsters backed by county health service
by Mark LangfordAn app teaching asthmatic children to use their inhalers properly is being promoted across the county after being developed by a Suffolk company.
MySpira, by Orbital Media of Stowmarket, teaches youngsters techniques in a fun way and is now being promoted in hospitals, GP surgeries, pharmacies and primary schools across the county by Public Health Suffolk.
The app uses characters and interactions, to engage children with asthma with games they can play with parents, siblings or friends.
Throughout the 20 minute experience the youngster is taught about asthma keywords, triggers, different types of inhalers, how to prepare the inhaler and spacer, and how to inhale the medicine correctly.
Research has found that as many as 97% of asthmatic children misuse their inhalers, with potentially serious consequences.
Stuart Keeble, Suffolk County Council director of public health, said: "The app teaches children vital skills to help manage their asthma condition in a fun and engaging way, which involves the whole family so parents, siblings and friends also know what to do should an attack occur.
"We are working closely with services across the health care system as well as in education settings in Suffolk to promote the app as a valuable resource to use alongside a child's existing asthma care plan."
The app was developed by Orbital with the University of Suffolk, supported by Dr Simon Rudland from StowHealth surgery in Stowmarket and asthma nurse Karyn McBride.
Paul Brown, chief executive of Suffolk Primary Care, a partnership of 12 GP surgeries in Suffolk covering more than 110,000 patients, said: "Research has shown that, when asthma sufferers use their inhalers incorrectly, less than 5% of the medicine reaches where it's needed in the lungs.
"Where proper inhaler training programmes have been put in place, however, emergency admissions have been reduced by 50% and asthma deaths by 75%.
"We hope the introduction of MySpira across Suffolk Public Health services will not only improve technique and compliance, and therefore increased health, but will also result in fewer serious or fatal asthma attacks in the county."
Peter Brady, chief executive of Orbital Media, said: "Our vision for MySpira is to educate children about correct inhaler technique to ultimately cut the number of preventable child deaths.
"21st Century children are digital natives, so it makes perfect sense to use technology as a means of educating and engaging them about their health.
"We are hugely excited to be at the forefront of this and hope that MySpira will help reduce the number asthma attacks in children across Suffolk.
"If adopted nationwide, MySpira could make a huge impact, dramatically reducing the number of emergency cases and hospitalisations across the UK, as well as saving the NHS millions of pounds."
The app is available from the App Store and Google Play .


SSLab represents the Systems Software & Security Lab from Georgia Institute of Technology led by Prof. Taesoo Kim.
We have been actively working on SGX related research. These research projects can be broadly classified into three different categories: System Design, Defense, and Attack.
System Design
-
OpenSGX: An open-source platform for SGX research that consists of a QEMU-based emulator and a software development kit (SDK)
-
S-NFV: A protection scheme for network function virtualization (NFV) applications that uses SGX to secure the applications’ internal states
-
AirBox: A secure design of edge function platforms using SGX for ensuring code integrity and data confidentiality of an edge function
-
SGX-Tor: A design of Tor that enhances the security and privacy of the protocol by utilizing SGX
Defense
-
T-SGX: A compiler-level approach that incorporates Intel TSX to prevent SGX enclaves from controlled-channel attacks
-
SGX-Shield: A software-based design of SGX enclaves that enables fine-grained address space layout randomization (ASLR)
Attack
-
Branch Shadowing: A novel side-channel attack against SGX exploiting branch history states preserved across an SGX mode switch and last branch record (LBR)
-
Dark ROP: A novel blind return-oriented programming (ROP) attack against SGX exploiting uninitialized registers across an enclave exit
-
SGX-Bomb: A rowhammer attack against SGX resulting in processor lockdown, i.e., a cold reboot is necessary to use the machine again
-
SGX-Bleed: A vulnerability that can leak uninitialized SGX memory through structure padding
Publications
- Leaking Uninitialized Secure Enclave Memory via Structure Padding (Extended Abstract, arXiv.org) [pdf]
- SGX-Bomb: Locking Down the Processor via Rowhammer Attack (SysTEX 2017) [pdf]
- Inferring Fine-grained Control Flow Inside SGX Enclaves with Branch Shadowing (Security 2017) [pdf]
- Hacking in Darkness: Return-oriented Programming against Secure Enclaves (Security 2017) [pdf]
- Enhancing Security and Privacy of Tor’s Ecosystem by using Trusted Execution Environments (NSDI 2017) [pdf]
- SGX-Shield: Enabling Address Space Layout Randomization for SGX Programs (NDSS 2017) [pdf]
- T-SGX: Eradicating Controlled-Channel Attacks Against Enclave Programs (NDSS 2017) [pdf]
- Fast, Scalable and Secure Onloading of Edge Functions using AirBox (SEC 2016) [pdf]
- S-NFV: Securing NFV states by using SGX (SDNNFVSEC 2016) [pdf]
- OpenSGX: An Open Platform for SGX Research (NDSS 2016) [pdf]
Demos
1. Branch Shadowing
This video shows how the branch shadowing attack can extract RSA private key bits
- Target code: Sliding window exponentiation of mbedTLS
- Attack code: We modified Linux SGX SDK to run our shadow code
- Kernel log: Our attack code prints the output of LBR via dmesg
2. Dark ROP
This video shows how the Dark ROP attack detects memcpy() and copy the entire memory contents of an enclave to the outside.
3. SGX page-table-based attack
This video presents the page-table-based attack, which is also known as the controlled-channel attack. By manipulating the page table and hooking the page fault handler, the attacker is able to observe precise page access patterns.
4. SGX-Shield
This video demonstrates the effectiveness of fine-grained ASLR support of SGX-Shield.
5. T-SGX
This video shows how T-SGX protect an SGX enclave from page-table-based attacks.
6. SGX-Bomb
This video shows how the SGX-Bomb attack locks down a victim machine.
7. SGX-Bleed
This video shows how the SGX-Bleed problem leaks uninitialized SGX memory via structure padding.


HttpClient
- Rather opaque struct serving as HttpClientof ::std::clone::Clone for HttpClient
- Automatically derived.for HttpClient
HttpClient
pub struct HttpClient {
priv curl: Curl,
}
Rather opaque struct serving as HttpClient
::std::clone::Clone
for HttpClient
Automatically derived.
clone
fn clone(&self) -> HttpClient
HttpClient
new
fn new() -> HttpClient
Return a new HttpClient object
let client = HttpClient::new();
exec
fn exec(&self, req: &Request) -> Result<Response, ~str>
Execute the given request
req
- request to be executeduse headers;
let client = HttpClient::new();
let url = "http://api.4chan.org/pol/threads.json";
let mut headers = HashMap::new();
headers.insert(headers::request::ACCEPT.to_string(),~"application/json");
let req = Request::new(url.to_string(),headers,~[]);
let resp_res = client.exec(&req);
match resp_res {
Ok(_) => { ; }
Err(msg) => { fail!("Error" + msg); }
};


{% extends "base.mail.html" %} {% load i18n %} {% load static %} {% block content %}
1%Club {% trans "is the go-to crowdfunding platform for doing good. We empower people with great ideas to create positive change in their community, city, country – or in the world." %}
{% trans "You are receiving this email because you signed up with" %} 1%Club.{% trans "Didn’t request an account?" %}


Webinar: CloudHealth and First for Cloud 18 Nov 2019, 09:10 by First Distribution Please click here to register.


Deep Future Card Generator
Card Size based on ppi:
Poker (2.5"x3.5")
A7 (2.9"x4.1")
Half Index Card (3"x4")
Card Border:
On
Off
Card #:
1
2
3
4
5
6
Suit:
Type:
Blank
World
Tech
Civilisation
If you can read this, something went wrong!
Render Card


@import models.modules._ @import controllers.documentation.ReverseRouter @(modules: Seq[Module])(implicit req: RequestHeader, reverseRouter: ReverseRouter) @layout {
These modules are for the Play 1.x series only and are now read-only. If you really need to provide an update, let us know via the Play Framework Forum.
Play 2.0 modules can be hosted anywhere on any Ivy, Maven or Git repository.
Here you can find great modules contributed by the play community. Browse the catalog and add instant power to your application.
@Html(utils.Textile.toHTML(module.description))


<EMAIL_ADDRESS>or join our mailing list.
Oxfolk is run by volunteers, and we are always looking for more people to join the team.
If you would like to be involved in organising Oxfolk dances, or as a steward at the dances then please get in touch.


Business Cards | Pamphlet | Brochures | Flex banners | Diary | Rack Cards | Gift Cards and Certificates | Envelope | Letterheads | Apparels - T-Shirt and Caps | Calenders - Table and Wall
Search Engine Optimization | Social Media Optimization | E-Mail Marketing | SMSMarketing
Photography | Testimonial Videos | Web Development | Music post production works | Advertising - Outdoor Hoardings - Bus shelters Display - Theatre Advertising
Naming | Brand Voice - Goal - Vision Statement - Mission Statement | Brand Identity Design - Logo Design - Iconography - Typography
The Sand Pebbles is a newly incorporated company formed with the objective of promoting brands and products through innovative implementations. The Sand Pebbles is owned by City Advertising systems, which was started in 1985.
The City Advertising Systems is a company started by Mr.Kumararaja, who is a pioneer in Outdoor Hoarding advertising in Chennai for over three decades. The Company has carved a niche for itself in the field of outdoor advertising such as Hoardings, Bus shelters advertising, Bus back and side panel advertising, etc.


Concerns over town centre housing plans
by Matthew EarthCommunity leaders have outlined a catalogue of concerns over plans to convert business units in Halesworth into residential homes.
Community leaders have outlined a catalogue of concerns over plans to convert business units in Halesworth into residential homes.
Charity Foundation East have submitted plans to convert buildings in Miles Ward Court into five homes for the over 55s.
The charity, which promotes job creation, claim maintenance costs have "become a strain on the organisation".
The application states: "There is pressure to release this premises for residential purposes, thereby raising capital that can be used by the organisation to support other such facilities and to help deliver the numerous other services offered by Foundation East.
"In simple terms, this is an asset that has become difficult for the charity to sustain and finding an alternative use for the premises will deliver much needed funding to support the wider functions of the charity."
Members of Halesworth Town Council held an extraordinary meeting to discuss the proposals and have called for the proposals to be refused, citing a lack of parking and the negative impact on the community among its reasons.
The plans have also met with opposition from businesses at the site who say the conversion would present a flood risk, increase congestion in the town centre and be dangerous for residents in wet weather due to the sloping nature of the site,
Hugh Hales, who runs a massage therapy business in the courtyard, said: "There is very difficult access to the property - if you had to get out in emergency you would have difficulties.
Mr Hales and other tenants at the complex have been bouyed by the council's decision to oppose plans.
"This news is a positive. There's nothing else like Miles Ward Court in the town," he said.
"I'm so pleased that the town council are supporting us."
Dustin Fjeld, who manages Fjeld Consulting, said: "I'm happy with the decision made by the town council.
"I believe it's the right decision. Hopefully East Suffolk Council feel the same way."
Previous plans for residential homes on the site were refused on the grounds that the courtyard was not fit for purpose.
East Suffolk Council will debate the plans at a forthcoming planning committee meeting.
Foundation East were unavailable for comment.


Welcome To CommonBrainTM
Thank you for joining CommonBrain! Your email has been setup and you are ready to start using our software. If you need any help, click the button below to get help quickly and easily!
Learn More
CommonBrain | 77900 Country Club Dr | Palm Desert, CA 92211


You can let us know if you saw UFO. Or you can search through all reported cases of UFO sightings. Technically only Men in Black (Mib) agency is allowed to see this info, but we can't keep their identities due to security reasons so you can pretend you are one of them


Products
Product
Drink #1
Magnificent aromas and a favourable flavour delieverd from Galaxy, Mosaic and Citra hops.
More InfoProduct Name
Product Information
Product
Drink #2
Magnificent aromas and a favourable flavour delieverd from Amarillo, Simcoe and Citra hops.
More InfoProduct
Drink #3
Magnificent aromas and a favourable flavour delieverd from El Dorado, Azacca and Chinook hops.
More InfoProduct
Drink #4
Magnificent aromas and a favourable flavour delieverd from Chinnok, Simcoe, Azacca and Citra hops.
More Info


A great way to get introduced to AngularJS is to work through this tutorial, which walks you through the construction of an AngularJS web app. The app you will build is a catalog that displays a list of Android devices, lets you filter the list to see only devices that interest you, and then view details for any device.
Follow the tutorial to see how AngularJS makes browsers smarter — without the use of native extensions or plug-ins:
When you finish the tutorial you will be able to:
ngAnimate
module.The tutorial guides you through the entire process of building a simple application, including writing and running unit and end-to-end tests. Experiments at the end of each step provide suggestions for you to learn more about AngularJS and the application you are building.
You can go through the whole tutorial in a couple of hours or you may want to spend a pleasant day really digging into it. If you're looking for a shorter introduction to AngularJS, check out the Getting Started document.
The rest of this page explains how you can set up your local machine for development. If you just want to read the tutorial, you can go straight to the first step: Step 0 - Bootstrapping.
You can follow along with this tutorial and hack on the code in the comfort of your own computer. This way, you can get hands-on practice of really writing AngularJS code and also on using the recommended testing tools.
The tutorial relies on the use of the Git versioning system for source code management. You don't need to know anything about Git to follow the tutorial other than how to install and run a few git commands.
You can download and install Git from https://git-scm.com/download. Once installed, you should have
access to the git
command line tool. The main commands that you will need to use are:
git clone ...
: Clone a remote repository onto your local machine.git checkout ...
: Check out a particular branch or a tagged version of the code to hack on.Clone the angular-phonecat repository located at GitHub by running the following command:
git clone --depth=16 https://github.com/angular/angular-phonecat.git
This command creates an angular-phonecat
sub-directory in your current directory.
--depth=16
option tells Git to pull down only the last 16 commits.
This makes the download much smaller and faster.
Change your current directory to angular-phonecat
.
cd angular-phonecat
The tutorial instructions, from now on, assume you are running all commands from within the
angular-phonecat
directory.
In order to install dependencies (such as the test tools and AngularJS itself) and run the preconfigured local web server, you will also need Node.js v6+.
You can download a Node.js installer for your operating system from https://nodejs.org/en/download/.
Check the version of Node.js that you have installed by running the following command:
node --version
In Debian based distributions, there might be a name clash with another utility called node
. The
suggested solution is to also install the nodejs-legacy
apt package, which renames node
to
nodejs
.
apt-get install nodejs-legacy npm
nodejs --version
npm --version
By installing Node.js, you also get npm, which is a command line executable for downloading and managing Node.js packages. We use it to download the AngularJS framework as well as development and testing tools.
Once you have Node.js installed on your machine, you can download these dependencies by running:
npm install
This command reads angular-phonecat's package.json
file and downloads the following dependencies
into the node_modules
directory:
Running npm install
will also automatically copy the AngularJS framework and other dependencies
necessary for our app to work into the app/lib/
directory.
The project is preconfigured with a number of npm helper scripts to make it easy to run the common tasks that you will need while developing:
npm start
: Start a local development web server.npm test
: Start the Karma unit test runner.npm run protractor
: Run the Protractor end-to-end (E2E) tests.npm run update-webdriver
: Install the drivers needed by Protractor.The Http-Server, Karma and Protractor modules are also executables, which can be installed globally
and run directly from a terminal/command prompt. You don't need to do this to follow the tutorial,
but if you decide you do want to run them directly, you can install these modules globally using,
sudo npm install --global ...
.
For instance, to install the http-server
command line executable you would do:
sudo npm install --global http-server
(Omit the sudo if running on Windows.)
Then you can run the http-server
tool directly, such as:
http-server ./app
While AngularJS applications are purely client-side code, and it is possible to open them in a web browser directly from the file system, it is better to serve them from an HTTP web server. In particular, for security reasons, most modern browsers will not allow JavaScript to make server requests if the page is loaded directly from the file system.
The angular-phonecat project is configured with a simple static web server for hosting the application during development. Start the web server by running:
npm start
This will create a local web server that is listening to port 8000 on your local machine. You can now browse to the application at http://localhost:8000/index.html.
package.json
. You can use -a
to set the address and -p
to set the port. You also need to
update the baseUrl
configuration property in e2e-test/protractor.conf.js
.
We use unit tests to ensure that the JavaScript code in our application is operating correctly. Unit tests focus on testing small isolated parts of the application. The unit tests are kept in test files (specs) side-by-side with the application code. This way it's easier to find them and keep them up-to-date with the code under test. It also makes refactoring our app structure easier, since tests are moved together with the source code.
The angular-phonecat project is configured to use Karma to run the unit tests for the application. Start Karma by running:
npm test
This will start the Karma unit test runner. Karma will read the configuration file karma.conf.js
,
located at the root of the project directory. This configuration file tells Karma to:
It is good to leave this running all the time, in the background, as it will give you immediate feedback about whether your changes pass the unit tests while you are working on the code.
We use E2E (end-to-end) tests to ensure that the application as a whole operates as expected. E2E tests are designed to test the whole client-side application, in particular that the views are displaying and behaving correctly. It does this by simulating real user interaction with the real application running in the browser.
The E2E tests are kept in the e2e-tests
directory.
The angular-phonecat project is configured to use Protractor to run the E2E tests for the application. Protractor relies upon a set of drivers to allow it to interact with the browser. You can install these drivers by running:
npm run update-webdriver
Since Protractor works by interacting with a running application, we need to start our web server:
npm start
Then, in a separate terminal/command line window, we can run the Protractor test scripts against the application by running:
npm run protractor
Protractor will read the configuration file at e2e-tests/protractor.conf.js
. This configuration
file tells Protractor to:
It is good to run the E2E tests whenever you make changes to the HTML views or want to check that the application as a whole is executing correctly. It is very common to run E2E tests before pushing a new commit of changes to a remote repository.
Each version of Protractor is compatible with specific browser versions. If you are reading this some time in the future, it is possible that the specified Protractor version is no longer compatible with the latest version of Chrome that you are using.
If that is the case, you can try upgrading Protractor to newer version. For instructions on how to upgrade dependencies see Updating dependencies.
In order to avoid surprises, all dependencies listed in package.json
are pinned to specific
versions (this is what the package-lock.json file is about). This ensures that the
same version of a dependency is installed every time.
Since all dependencies are acquired via npm, you can use the same tool to easily update them as well (although you probably don't need to for the purpose of this tutorial). Simply run the preconfigured script:
npm run update-deps
This will update all packages to the latest version that satisfy their version ranges (as specified
in package.json
) and also copy the necessary files into app/lib/
. For example, if package.json
contains "some-package": "1.2.x"
, it will be updated to the latest 1.2.x version (e.g. 1.2.99),
but not to 1.3.x (e.g. 1.3.0).
If you want to update a dependency to a version newer than what the specificed range would permit,
you can change the version range in package.json
and then run npm run update-deps
as usual.
Firewall / Proxy issues
Git and other tools, often use the git:
protocol for accessing files in remote repositories.
Some firewall configurations are blocking git://
URLs, which leads to errors when trying to clone
repositories or download dependencies. (For example corporate firewalls are "notorious" for blocking
git:
.)
If you run into this issue, you can force the use of https:
instead, by running the following
command: git config --global url."https://".insteadOf git://
Updating WebDriver takes too long
Running update-webdriver
for the first time may take from several seconds up to a few minutes
(depending on your hardware and network connection). If you cancel the operation (e.g. using
Ctrl+C
), you might get errors, when trying to run Protractor later.
In that case, you can delete the node_modules/
directory and run npm install
again.
Protractor dependencies
Under the hood, Protractor uses the Selenium Standalone Server, which in turn requires
the Java Development Kit (JDK) to be installed on your local machine. Check this by running
java -version
from the command line.
If JDK is not already installed, you can download it here.
Error running the web server
The web server is configured to use port 8000. If the port is already in use (for example by another
instance of a running web server) you will get an EADDRINUSE
error. Make sure the port is
available, before running npm start
.
Now that you have set up your local machine, let's get started with the tutorial: Step 0 - Bootstrapping


 Using fine-grained permissions you can allow your alliance members to submit results while not necessarily being able to view the scans of others.
Keep track of when your next mining fleet will have to be using the moon mining timerboard. Gain insight in the minerals and products you will gain from mining certain moons.
Since ELMO is under the MIT license you are free to change the source code however you want to fit your needs. You can also host your own instance of ELMO to avoid your precious scanning results from falling in the wrong hands!


|
|
def | __init__ |
| |
|
def | user_email_size |
| |
|
def | user_email_list |
| |
|
def | user_email |
| |
|
def | set_user_email |
| |
|
def | add_user_email |
| |
|
def | clear_user_email |
| |
|
def | writer_email_size |
| |
|
def | writer_email_list |
| |
|
def | writer_email |
| |
|
def | set_writer_email |
| |
|
def | add_writer_email |
| |
|
def | clear_writer_email |
| |
|
def | MergeFrom |
| |
|
def | Equals |
| |
|
def | IsInitialized |
| |
|
def | ByteSize |
| |
|
def | ByteSizePartial |
| |
|
def | Clear |
| |
|
def | OutputUnchecked |
| |
|
def | OutputPartial |
| |
|
def | TryMerge |
| |
|
def | __str__ |
| |
|
|
| user_email_ |
| |
|
| writer_email_ |
| |
|
|
int | kuser_email = 1 |
| |
|
int | kwriter_email = 2 |
| |
The documentation for this class was generated from the following file:
- code/googleappengine-read-only/python/google/appengine/api/taskqueue/taskqueue_service_pb.py


"Life is art, live yours in color."
Search
NATURAL LIGHTING
FOCUS BLUR
DYNAMIC RANGE
FILM
DIGITAL
GRAIN


Example: extended drag'n'drop sample
This sample features
drag'n'drop between different tree instances
drag'n'drop between different tree types
dragging multiple nodes
TODO: this is work in progress.
Skin:
Standard tree:
Table tree:
Key
Folder
Columnview tree:
1
2
3
?
?
?


September 24th, 2016
Location: Lakeshore Convention Centre.
806 Southdown Rd. Mississauga, Ontario
The Details: Ceremony will begin at 4:30.
Cocktail hour to follow, with reception beginning at 6:30
Beautiful bride, handsome groom -- what's not to love?
Italians, Persians, and everyone in between
Cold drinks, delicious eats, and tasty treats to suit every taste
Great music, bad dance moves. Are you in or what?
We are so excited to celebrate our special day with you! If you have any questions please email us at sheryandaaron@gmail.com


ALASKA A film review by Scott Renshaw Copyright 1996 Scott Renshaw
Starring: Thora Birch, Vincent Kartheiser, Dirk Benedict, Charlton Heston. Screenplay: Andy Burg, Scott Myers. Director: Fraser C. Heston. Reviewed by Scott Renshaw.
ALASKA is about as basic as film-making gets, and that is not entirely a criticism. Disney used to make a series of films called "True Life Adventures," wilderness yarns chock full of great scenery, cute critters and just enough Darwinian conflict not to be alarming to the little ones in the audience. Those films were basic -- a vista, an animal, a fight, repeat -- but most of the time they were also effective. That is the vibe ALASKA is looking for, and might actually have matched if it hadn't had so many darned humans. There is some lively adventure in ALASKA, but when most of the real fun comes on four legs, it is difficult not to lose patience with the two-legged cast members.
ALASKA stars Thora Birch and Vincent Kartheiser as Jessie and Sean Barnes, teen-aged siblings recently re-located from Chicago to the small Alaskan fishing village of Quincy after the death of their mother. Their father Jake (Dirk Benedict), a former commercial airline pilot, now runs an air taxi service, and it is on one of his runs that he encounters a fierce storm and crashes. Search and rescue teams are unable to locate him, but Sean and Jessie refuse to give up on their father, and set out themselves determined to find him. What they find first is a wilderness full of dangers, including treacherous climbs, white waters and a nasty wildlife poacher named Perry (Charlton Heston). They also find a friend in an orphaned polar bear cub who joins them on their journey and becomes a sort of spirit guide.
I won't waste too much time on the trite and silly elements of ALASKA, because fortunately scripters Andy Burg and Scott Myers do us the same favor. The film's set-up is a riff on FREE WILLY, with a troubled youth (Sean is annoyed about his new home), a bond with a lovable animal and even a dash of Native American mysticism; it also provides the well-worn trope of the lost parent. Vincent Kartheiser does the surly bit with a bit more obnoxiousness than one might hope for, and Thora Birch (the young Melanie Griffith in NOW AND THEN) makes a generic smarter younger sister, but they are on a par with the rest of the acting in ALASKA. It even has the best bad actor in screen history as its villain (who, coincidentally enough, happens to be the director's father). And yes, it does perplex me how Sean made it through three days of rock climbing, wading in icy rivers and plodding through the frozen tundra in his Adidas high-tops.
No, the problem with ALASKA isn't that the people are one-dimensional characters or mediocre actors. The problem is that they are people. The reactions of the children (and parents) all around me told me exactly what they wanted to see every time Cubby the polar bear was on the screen. Even after Coke has turned computer-generated frolicking polar bears into a corporate logo, the real thing is still adorable; I dare anyone not to smile ad a cuddly cub doing a belly slide down a snowy embankment. That bear is sympathetic and entertaining in a way his human co-stars can never hope to be, and he is the real star of ALASKA. He just doesn't have any supporting players.
That points up a significant drawback in a film which is supposed to be a wilderness adventure, namely that there is not enough wilderness, especially in the first half. There is plenty of photography of majestic locations (of a strangely flat variety by cinematographer Tony Westman), but Fraser C. Heston doesn't quite know what to do with it. It is fine for a family adventure like ALASKA to turn in only a rudimentary plot provided it delivers the thrills, and they finally start coming with about half an hour left. That last half hour is very exciting, though, with a white water sequence as impressive as anything in THE RIVER WILD and a literal cliff-hanger of a climax. By then, over 70 minutes into ALASKA, young viewers could be getting might restless.
The last shots in ALASKA find our polar bear hero trotting off with two other bears to form a happy adoptive family. _That's_ a story I really would have enjoyed, and I couldn't help wondering why ALASKA hadn't tripled its polar bear content much earlier.
On the Renshaw scale of 0 to 10 bear necessities: 5.
-- Scott Renshaw Stanford University http://www-leland.stanford.edu/~srenshaw
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


importance: 5
We have two hamsters: speedy
and lazy
inheriting from the general hamster
object.
When we feed one of them, the other one is also full. Why? How can we fix it?
```js run let hamster = { stomach: [],
eat(food) { this.stomach.push(food); } };
let speedy = { proto: hamster };
let lazy = { proto: hamster };
// This one found the food speedy.eat(“apple”); alert( speedy.stomach ); // apple
// This one also has it, why? fix please. alert( lazy.stomach ); // apple ```


Summer Research Project Update 11 Hi all~ With the help of many people, I have collected over 100 articles/papers/research documents - Woo! I am currently triaging these and putting them into categories, vetoing the ones that aren’t relevant. In this update: * Some more... Summer Research Project Update 3 Hello, this is my first update of my research! I am looking at research surrounding women in computer science. At the end of my summer research I plan to detail some practical steps that the university can take to... Introductions 1 Hello! My name is Grace and I (currently) live in New Zealand. I am studying computer science at University of Waikato.  I will make a short list...
Summer Research Project Update 11 Hi all~ With the help of many people, I have collected over 100 articles/papers/research documents - Woo! I am currently triaging these and putting them into categories, vetoing the ones that aren’t relevant. In this update: * Some more...
Summer Research Project Update 3 Hello, this is my first update of my research! I am looking at research surrounding women in computer science. At the end of my summer research I plan to detail some practical steps that the university can take to...
Introductions 1 Hello! My name is Grace and I (currently) live in New Zealand. I am studying computer science at University of Waikato.  I will make a short list...


Responsive Web Design Software And Tools Download Adobe Edge Reflow Preview
Download Adobe Edge Reflow Cc 0 51 17180 Preview
Adobe Edge Reflow Cc For Mac Free Download Review Latest Version
Download Adobe Edge Reflow Cc 2015 Free Onesoftwares
Adobe Edge Reflow Hits Free Preview Download For Web Designers Slashgear
A Deep Dive Into Adobe Edge Reflow Smashing Magazine
Download Adobe Edge Reflow Cc 0 51 17180 Preview On Laptop File Hosting Lotthylsganhalu52 S Blog
Final How Download V 0 23 Adobe Edge Reflow Cc Joyrederdisfton
Introducing Adobe S Responsive Layout Editor Edge Reflow
Design Websites At Speed With Photoshop And Edge Reflow Creative Bloq
Responsive Design With Adobe Photoshop Cc And Adobe Edge Reflow Cc Preview Let S Look At The Workflow Peachpit
Export From Photoshop To Edge Reflow News Dmxzone Com
Adobe Adobe Edge Reflow をプレビュー公開 無償でダウンロード可能 窓の杜
Adobe Releases New Html5 Edge Reflow For Responsive Web Designers
Adobe Adobe Introduces New Generator Features For Photoshop Cc And Edge Reflow
Download Free Adobe Edge Animate 1 5 Get 500 Free Web Fonts Prodesigntools
Responsive Design With Adobe Edge Reflow Adobe Education Exchange
Adobe Edge Animate Cc 2014 Free Download
Creating Responsive Websites With Adobe Edge Reflow Hongkiat
Adobe Edge Animate Page 1 Line 17qq Com
What S New In Adobe Edge Reflow Cc Youtube
Nbw6v4ueutvxpm
Review Adobe Edge Tools And Services Macprovideo Com
Download Adobe Creative Cloud Individual Subscription 1 User Dell Usa
Responsive Web Design With Adobe Reflow Youtube
Adobe Edge Reflow Cc Logo Vector
Your Workflow With Adobe Edge Reflow Adobe Education Exchange
Everything For Adobe Edge Animate Edge Reflow And Edge Code Edgedocks Com Coding Adobe Animate Website


Project Drinking Water aims to provide a clean water facility to the community of Madanpur Khadar in Sarita Vihar at affordable rates by utilising the Seimens Sky Hydrant Ultra-Filtration System. Comprising of an efficient Business Model and state-of-the-art-technology, the project aims to uplift the health & sanitation status of the community and provide employment to the unskilled youth of the village through a Water Kiosk setup. We aim to impact more than 1000 residents of the Madanpur Khadar village that acutely suffer from water borne problems and are in dire need of help.
Project Drinking Water marks the first ever international collaboration in the global Enactus circuit. Enactus NSIT is partners with Enactus Bayreuth from Germany and together, we aim to achieve more than 4 of the United Nations Sustainable Development goals through our venture. A flair for Social Entrepreneurship and a common vision of Human Progress continues to drive our partnership.
The implementation involves building a water kiosk service that is operated by the unemployed youth of Madanpur Khadar. Working in double shifts, they not only manage the kiosk but also keep records of sale and operate the filtration system to cater to the needs of hundreds of people of the village, along with the students of the local school that get the service free of cost. A source of income is established for our employees and the residents get cheap and affordable drinking water, making it a win-win situation.
Prior to the kiosk development, Enactus NSIT has proactively campaigned in the district highlighting the importance of Menstrual Hygeine, Literacy and Abolishing Open Defecation. Immensely successful in sensitizing 500+ people across the village, we continue to hold such drives in partnership with other social enterprises. We also provide the kiosk service free of cost to school children and promote the importance of Education amongst the rural population.


I watched this video and I found it fascinating! It’s best to start the video around 7:30. It’s about identity and stereotype threat and how it affects people. Everyone has social identities. As Claude Steel describes it as ‘the part of our personal identity – our sense of who we are- that comes from our group memberships and the social categories to which we belong: age, sex, race, religion, profession, ethnicity, nationality, sexual orientation, region, social class, ideological persuasion, political affiliation, mental health status, etc.’ What makes them important to us is if we have to deal with our social identity regularly to the point where we can feel it. I actually find it funny because I had mentioned this exact kind of thing in my first email to my fellow cohorts where we were supposed to state our fears of taking Dev Bootcamp. This is what I wrote that pertains to stereotype threat:
“This is another giant fear of mine: ability to be taken seriously and getting a job afterwards. I want to be taken seriously as a graduate of DBC but also as female coder. I have many friends in tech who like to crack jokes on female coders (one of them went so far as stating that it is rare that women are as 'good' as men in computer science). It makes me nervous that my gender may just fill the minority role at some companies and not actually be acknowledged for good work which could turn into a self-fulfilling prophecy and spiral downwards from there. I mean, why else are there so few women in programming careers?”
I have definitely felt the stereotype threat. Its hard not to feel your gender social identity especially when the negative stereotypes are typically used in humor or as socially accepted insults. For instance, how often have you heard these phrases: “You run like a girl” or “Women are terrible drivers”. Just a couple of weeks ago, one of my managers told us that he needed to hire more men in the bar because women get too emotional. Emotional?!
So far I feel relaxed and comfortable at Dev Bootcamp and I can’t wait to prove the coding stereotype false. Hold on a second, I’m getting a little emotional!


The source code for this application is available in this repository on GitHub.
You can post your questions and comments on the blog post associated with this application.
I also posted a series of Backbone.js tutorials here: part 1, part 2, part 3, and postface


Sunrise Alarm Admin Panel
This device is {{ authorized ? "authorized" : "unauthorized" }}
{{ device_name }}
Device Name
Status
Actions
{{ device.name }}
{{ device.authorized ? "Authorized" : "Unauthorized" }}
Approve
Delete


By using this website and API you are agreeing to the privacy policy
(Click here to get more information on what data collects)
✔ I agree
🔗Information:
is a RESTful API that serves uniformly and well formatted jokes.It can be used without any API token, membership, registration or payment.
It supports a variety of filters that can be applied to get just the right jokes you need.
The usage is very simple and similar to other RESTful APIs and requires only basic knowledge of HTTP/HTTPS requests and JSON, XML or YAML.
If you come across a term you don't understand, you can try opening the menu and clicking on the section "Terminology".
currently serves jokes. To submit a new joke, please click here.
If you want to report a bug or an illegal joke, please use the GitHub issue tracker.
If you want to contribute to , please read the Contributing Guide.
If you are new to , please start by reading the Getting Started Guide
Note: has been a target of DoS attacks in the past, which is why there is now a limit of requests per minute and why joke submissions are manually curated.
🔗Try it out here:
| Select category / categories: |
|
| Select flags to blacklist: |
(optional)
|
| Select response format: |
|
| Select at least one joke type: |
|
|
Search for a joke that contains this search string: |
|
|
Search for a joke in this ID range: |
(optional)
From:
To:
|
URL: (Loading...)
Result:
(Set parameters and click "Send Request" above)
🔗Getting Started:
doesn't require any API token, authorization or payment to work, although there is a hard limit of requests per minute due to some DoS attacks I have been getting.To start using , you can do one of these two things:
- You can see if your language has a wrapper for (to see a list of officially supported wrappers, click here)
-
You can directly communicate with with HTTP requests (XHR) from within your code (Python XHR Crash Course, JavaScript XHR Documentation)
When/If you know how to send HTTP requests, please take a look at all the endpoints has.
After you've finished reading that, you can start testing out the different endpoints with a client such as Postman and look at some examples by going to the "Examples" section.
If you need any help, feel free to join my Discord server.
🔗Official API Wrappers:
A wrapper is generally a library that wraps around a certain function to make your life easier.In the case of RESTful APIs like , a wrapper library makes it so you can use functions and objects to communicate with the API and the wrapper will do all the HTTP requests for you in the background.
The following is a list of officially supported wrappers:
| Language | Wrapper | Author |
|---|---|---|
| Rust | Sv443_JokeAPI Rust Crate | canarado |
| Python | Sv443s JokeAPI Python Wrapper | thenamesweretakenalready |
🔗Submit a Joke:
| Category: | |
| Type: | |
| Flags: | |
| Joke: |
|
Payload Preview:
🔗URL Parameters:
URL parameters are like the settings or the configuration of an HTTP request.The parameters need to be prefixed by a single question mark (?) and separate key/value pairs need to be delimited from another by an ampersand (&). Keys are separated from values with an equals sign (=).
Example: https://example.org/some/page?key1=foo&key2=bar&key3=baz ... (yellow = key/value pair)
Format: This parameter is global - it can be used on every single endpoint of (excluding the documentation and static content).
It is used to change the response format from the default (JSON) to (Loading...), depending on what you need.
If the format parameter is invalid or not specified at all, the default value of JSON will be used.
Available formats are (Loading...)
Example 1 (click to view)
URL: /joke/Any?format=xml
<data>
<category>Programming</category>
<type>single</type>
<joke>// This line doesn't actually do anything, but the code stops working when I delete it.</joke>
<flags>
<nsfw>false</nsfw>
<religious>false</religious>
<political>false</political>
<racist>false</racist>
<sexist>false</sexist>
</flags>
<id>12</id>
</data>
Example 2 (click to view)
URL: /joke/Any?format=txt
How many programmers does it take to screw in a light bulb?
None. It's a hardware problem.
Blacklist Flags: This parameter can only be used on the "joke" endpoint.
If it is used, jokes that match the specified flag(s) will not be served (what is a flag?).
If you want to use multiple flags, separate them with a comma (,) or a plus sign (+).
These are all the available flags: (Loading...)
Example 1 (click to view)
URL: /joke/Any?blacklistFlags=nsfwUsing the above URL makes sure you don't get any jokes that are not safe for work.
Example 2 (click to view)
URL: /joke/Any?blacklistFlags=nsfw,racist,sexistUsing the above URL makes sure you don't get any jokes that are not safe for work, racist and sexist.
Joke Type: This parameter can only be used on the "joke" endpoint.

If it is not set or set to an invalid value, you will receive jokes of both types.
Available types are: single, twopart
Example (click to view)
URL: /joke/Any?type=twopart
{
"category": "Programming",
"type": "twopart",
"setup": "What is a dying programmer's last program?",
"delivery": "Goodbye, world!",
"flags": {
"nsfw": false,
"religious": false,
"political": false,
"racist": false,
"sexist": false
},
"id": 58
}
(no jokes with type "single" will be served)
Contains: This parameter can only be used on the "joke" endpoint.
If this parameter is specified, only jokes that contain the value of this parameter will be served (case insensitive).
IMPORTANT: If the value of this parameter contains special characters, it needs to be percent-encoded according to the URI standard (MDN Reference), otherwise you might get an error or a wrong response.
Example (click to view)
URL: /joke/Any?contains=C%23 (%23 = pound character / hashtag / # - so the thing searched for here is "C#")
{
"category": "Programming",
"type": "twopart",
"setup": "Why do programmers wear glasses?",
"delivery": "Because they need to C#",
"flags": {
"nsfw": false,
"religious": false,
"political": false,
"racist": false,
"sexist": false
},
"id": 51
}
ID Range: This parameter can only be used on the "joke" endpoint.
If it is used, you will only get jokes that are inside the specified range of IDs.
The lower and upper boundary of the ID range needs to be delimited with a minus (-), comma (,) or a plus sign (+).
If you only want to get a single joke by its ID, you can also ignore the delimiter and just use the single ID as the value for this parameter.
As there are currently jokes, the ID range can be any range from 0 -
Example 1 (click to view)
URL: /joke/Any?idRange=0-55Using the above URL will make only serve you jokes that are inside the ID range of 0 to 55.
Example 2 (click to view)
URL: /joke/Any?idRange=33Using the above URL will make only serve you the joke with the ID 33 (provided there are no other filters that are blacklisting that joke).
🔗Errors:
In all response data, no matter from which endpoint will have an "error" parameter.Usually, it is set to false, which means there was no error in your request or on the server.
If the "error" parameter is set to true though, there was an error and will add an "internalError", "message", "causedBy", "additionalInfo" and "timestamp" parameter.
The "internalError" parameter will be set to false, if the error was due to a malformed or failed request and it will be true, if the error is 's fault.
The "message" parameter will contain a short version of the error message and the "timestamp" parameter will contain a 13-character UNIX timestamp in Central European time (GMT+1).
The "causedBy" parameter is an array of possible causes of this error and the "addidionalInfo" parameter contains a more descriptive error message.
You can view an example of an error, where an invalid category was used, just below this paragraph.
Together with the HTTP status code, which will also be set according to the type of error, these parameters can be used to improve error handling massively from what was the error system in previous versions of .
Example Error:
{
"error": true,
"internalError": false,
"code": 106,
"message": "No matching joke found",
"causedBy": [
"No jokes were found that match your provided filter(s)"
],
"additionalInfo": "The specified category is invalid - Got: \"foo\" - Possible categories are: \"Any, Miscellaneous, Programming, Dark\" (case insensitive)",
"timestamp":<PHONE_NUMBER>412
}
Status Codes:
| Code | Name | Description |
|---|---|---|
| 200 | Ok | The request was accepted and processed successfully and the respose text contains the requested data or a status message |
| 201 | Created | The joke submission is formatted correctly and was accepted and successfully saved |
| 400 | Bad Request | The request you have sent to is formatted incorrectly and cannot be processed |
| 403 | Forbidden | You have been added to the blacklist due to malicious behavior and are not allowed to send requests to anymore |
| 404 | Not Found | The URL you have requested couldn't be found |
| 413 | Payload Too Large | The payload data sent to the server exceeds the maximum size of bytes |
| 414 | URI Too Long | The URL exceeds the maximum length of characters |
| 429 | Too Many Requests | You have exceeded the limit of requests per minute and have to wait a bit until you are allowed to send requests again |
| 500 | Internal Server Error | There was a general internal error within . You can get more info from the properties in the response text |
Success • Client Error • Server Error
🔗Endpoints:
An endpoint is an access point to send the HTTP requests to and get your response.offers these following endpoints:
Get Joke: GET /joke/[Category/-ies]
This endpoint is the one you want to call to get a joke.
A valid joke category or multiple joke categories, delimited with a comma, plus or minus character (, + -) must be provided in the URL.
These are all the available categories: (Loading...)
To see how this URL is built with certain parameters set, visit the "Try It" section.
Example - click to view
/joke/Programming,Miscellaneous?format=xml&blacklistFlags=nsfw,sexist&type=singleWill give a joke from either the Programming or the Miscellaneous category, with the payload format XML,
with the joke type "single", while also preventing all jokes that are potentially not safe for work and sexist from being served.
Supported URL parameters:
(More info on filtering parameters)
Info: GET /info
This endpoint provides some information on :
- The version number
- The amount of jokes
- A 13-character UNIX timestamp
- The URL to a joke submission form
Supported URL parameters:
Categories: GET /categories
This endpoint returns a list / an array of all available joke categories and a 13-character UNIX timestamp.
Supported URL parameters:
Flags: GET /flags
This endpoint returns a list / an array of all available blacklist flags and a 13-character UNIX timestamp.
Supported URL parameters:
Formats: GET /formats
This endpoint returns a list / an array of all available response formats and a 13-character UNIX timestamp.
Supported URL parameters:
Ping: GET /ping
This endpoint returns a parameter named "ping" that contains the word "Pong!" and a 13-character UNIX timestamp.
It is intended for external uptime monitoring but you can also use it if you want to.
Supported URL parameters:
Endpoints: GET /endpoints
This endpoint returns a list / an array of all available endpoints, their usage (method, url and supported parameters) and a short description each.
Supported URL parameters:
Submit Joke: PUT /submit
This endpoint is used to submit a joke to be reviewed and added to 's official jokes.
If you instead just want to manually submit a joke, please click here.
The payload needs to be sent as JSON. Different formats are not allowed here.
The request payload has to follow the same object structure that the jokes are served in when using the "joke" endpoint.
Make sure to add a "formatVersion" property, which just contains the current joke format version ().
This is needed since there were a few changes to the object format since the previous versions and this ensures consistency.
The joke category has to be any valid category, excluding "Any".
If the joke type is set to "single", the properties "setup" and "delivery" will need to be omitted and the joke is to be put in the "joke" property.
If the joke type is set to "twopart", the "joke" property is to be replaced with the properties "setup" and "delivery".
The "flags" property needs to be an object that contains the boolean properties "nsfw", "religious", "political", "racist" and "sexist". These need to be set accordingly.
The joke ID doesn't need to be provided as it will be automatically assigned to the joke.
If the joke is valid and the server accepted the submission, you will get a response with the status code 201.
Example Payload:
{
"formatVersion": ,
"category": "Miscellaneous",
"type": "single",
"joke": "A horse walks into a bar...",
"flags": {
"nsfw": true,
"religious": false,
"political": true,
"racist": false,
"sexist": false
}
}
Supported URL parameters:
(none)
Click here to see how the server responds to a joke submission
Server Response:
{
"error": false,
"message": "Joke submission was successfully saved. It will soon be checked out by the author.",
"submission": {
"formatVersion": 2,
"category": "Miscellaneous",
"type": "single",
"joke": "A horse walks into a bar...",
"flags": {
"nsfw": true,
"religious": false,
"political": true,
"racist": false,
"sexist": false
}
},
"timestamp":<PHONE_NUMBER>560
}
🔗Filtering Jokes:
I created with the main purpose of it having many versatile filtering options as other APIs didn't offer this amount of customization.In this section you will learn how the filtering works.
There are six different filtering methods in :
🔗Examples:
These are some examples in some commonly used languages to show you how you could implement :Node.js (click to show)
Node.js:
const https = require("https"); // Native module, no need to explicitly install
const baseURL = "";
const categories = ["Programming", "Miscellaneous"];
const params = [
"blacklistFlags=nsfw,religious,racist",
"idRange=0-100"
];
https.get(`${baseURL}/joke/${categories.join(",")}?${params.join("&")}`, res => {
console.log("\n");
res.on("data", chunk => {
// On data received, convert it to a JSON object
let randomJoke = JSON.parse(chunk.toString());
if(randomJoke.type == "single")
{
// If type == "single", the joke only has the "joke" property
console.log(randomJoke.joke);
console.log("\n");
}
else
{
// If type == "twopart", the joke has the "setup" and "delivery" properties
console.log(randomJoke.setup);
setTimeout(() => {
console.log(randomJoke.delivery);
console.log("\n");
}, 3000);
}
});
res.on("error", err => {
// On error, log to console
console.error(`Error: ${err}`);
});
});
Web-JavaScript (click to show)
Web-JS:
var baseURL = "";
var categories = ["Programming", "Miscellaneous"];
var params = [
"blacklistFlags=nsfw,religious,racist",
"idRange=0-100"
];
var xhr = new XMLHttpRequest();
xhr.open("GET", baseURL + "/joke/" + categories.join(",") + "?" + params.join("&"));
xhr.onreadystatechange = function() {
if(xhr.readyState == 4 && xhr.status < 300) // readyState 4 means request has finished + we only want to parse the joke if the request was successful (status code lower than 300)
{
var randomJoke = JSON.parse(xhr.responseText);
if(randomJoke.type == "single")
{
// If type == "single", the joke only has the "joke" property
alert(randomJoke.joke);
}
else
{
// If type == "single", the joke only has the "joke" property
alert(randomJoke.setup);
alert(randomJoke.delivery);
}
}
else if(xhr.readyState == 4)
{
alert("Error while requesting joke.\n\nStatus code: " + xhr.status + "\nServer response: " + xhr.responseText);
}
};
xhr.send();
C# (click to show)
C#:
using System;
using System.IO;
using System.Net;
using System.Web.Script.Serialization; // Requires you to include the assembly "System.Web.Extensions" in your project
private void getJoke()
{
string baseURL = "";
string[] categories = { "Programming", "Miscellaneous" };
string[] parameters = {
"blacklistFlags=nsfw,religious,racist",
"idRange=0-100"
};
// Create request and wait for response
WebRequest request = WebRequest.Create($"{baseURL}/joke/{string.Join(",", categories)}?{string.Join("&", parameters)}");
WebResponse response = request.GetResponse();
using (Stream dataStream = response.GetResponseStream())
{
// Convert the stream to a string
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
// Deserialize the string into an object of the Joke class
JavaScriptSerializer ser = new JavaScriptSerializer();
Joke randomJoke = ser.Deserialize(responseFromServer);
if (randomJoke.type == "single")
{
// If type == "single", the joke only has the "joke" property
Console.WriteLine(randomJoke.joke);
}
else
{
// If type == "twopart", the joke has the "setup" and "delivery" properties
Console.WriteLine(randomJoke.setup);
System.Threading.Thread.Sleep(3000);
Console.WriteLine(randomJoke.delivery);
}
}
// Close the request
response.Close();
}
public class Joke
{
public string type { get; set; }
public string joke { get; set; }
public string setup { get; set; }
public string delivery { get; set; }
public int id { get; set; }
public Flags flags { get; set; }
}
public class Flags
{
public bool nsfw { get; set; }
public bool religious { get; set; }
public bool political { get; set; }
public bool racist { get; set; }
public bool sexist { get; set; }
}
🔗Terminology:
You might come across some terms in this documentation you don't understand. This section teaches you what those terms mean.Categories: has a first, coarse filter that just categorizes the jokes depending on what the joke is about or who the joke is directed at.
A joke about programming will be in the "Programming" category, dark humor will be in the "Dark" category and so on.
If you want jokes from all categories, you can instead use "Any", which will make randomly choose a category.
These are all the available categories: (Loading...)
To set the category you want, you need to add it to the URL path, just after the "/joke" endpoint, like this: /joke/Programming (Blacklist-) Flags: Blacklist Flags (or just "Flags") are a more fine layer of filtering.
Multiple flags can be set on each joke and they tell you something about the offensiveness of each joke.
You can tell to not give you jokes that have the specified flags by using the ?blacklistFlags URL parameter.
These are all the available flags: (Loading...)
(Response-) Formats: Response Formats (or just "Formats") are a way to get your data in a different file format.
Maybe you are using some other code that only accepts XML. In that case, is able to convert the JSON-formatted joke to XML for you.
You can tell which file format to respond with by using the ?format URL parameter.
These are all the available formats: (Loading...)
Joke Type: Each joke comes with one of two types: single or twopart.
If a joke is of type "twopart", it has a setup string and a delivery string, which are both part of the joke.
They are separated because you might want to present the users the delivery after a timeout or in a different section of the UI.
A joke of type "single" only has a single string, which is the entire joke.
If you only want one type of joke, you can use the ?type URL parameter.
These are the available types: single, twopart
Search String: If the search string filter is used, only jokes that contain the specified string will be returned.
You can specify this search string by using the ?contains URL parameter.
IMPORTANT: If the value of this parameter contains special characters, it needs to be percent-encoded according to the URI standard (MDN Reference), otherwise you might get an error or a wrong response.
ID Range: If this filter is used, you will only get jokes that are within the provided range of IDs.
You don't necessarily need to provide an ID range though, a single ID will work just fine as well.
Example: an ID range of 0-9 will mean you will only get one of the first 10 jokes, while an ID range of 5 will mean you will only get the 6th joke.
You can set the ID range by using the ?idRange URL parameter.
As there are currently jokes, the ID range can be anywhere in the range of 0 to
🔗Legal Stuff:
License:
is licensed under the MIT License.
Before modifying and / or redistributing the source code, please take two minutes to read the license text.
You can view the full license text by clicking here.
Before modifying and / or redistributing the source code, please take two minutes to read the license text.
You can view the full license text by clicking here.
Privacy:
has to collect some anonymized data to work.
To view a list with details, please click here.
To view the privacy policy, please click here.
To view the site notice / imprint, click here.
To view a list with details, please click here.
To view the privacy policy, please click here.
To view the site notice / imprint, click here.
Disclaimer:
I will hereby not claim any legal responsibility or liability for and the jokes it serves (especially those from the "Dark" category).
Whether it is used maliciously or breaks something in your project or someone gets offended by a joke, I can't be held accountable.
Additionally, I will only be able to provide security updates for a small selection of versions, a list of which you can find here.
I am doing my best to ensure security and stability but there's only so much a single developer can do.
Please report any issue that may arise to the GitHub issue tracker and I will try my best to fix it as soon as possible.
If you want to contact me, you can join my Discord server (fastest way to contact me) or send me an E-Mail at<EMAIL_ADDRESS>Whether it is used maliciously or breaks something in your project or someone gets offended by a joke, I can't be held accountable.
Additionally, I will only be able to provide security updates for a small selection of versions, a list of which you can find here.
I am doing my best to ensure security and stability but there's only so much a single developer can do.
Please report any issue that may arise to the GitHub issue tracker and I will try my best to fix it as soon as possible.
If you want to contact me, you can join my Discord server (fastest way to contact me) or send me an E-Mail at<EMAIL_ADDRESS>Fonts:
uses these third party fonts on its documentation page:
- Cascadia Code by Microsoft
- Roboto by Google
Libraries:
uses these libraries:
- Code-Prettify by Google
- JSLib by Sv443
Dependencies:
These are the packages depends on (excluding dependencies of dependencies):
🔗Dependents:
These are some of the projects that depend on :
- dozens Advices by ZephyrVentum
- shadow-bot by QGIsK
- Random Jokes by Thom Benjamin
- Jokepy by aksty
- Dark1 by whiteadi


BANER
Upload image
Spacing of items:
Diameter of item:
Restrictions of margin:
Draw dots
Download project


--- layout: page title: About header-img: "img/about-bg.png" ---
I'm a young, seasoned professional who has worked in various client services roles and over-exceed expectations with strong organizational skills, vast educational background, and ability to work well with people. Along my career journey, I have gained a bachelors in Health Science and a masters in Sport Management but have worked in industries that differed from those tracks. Seeing how the tech industry has evolved and created opportunities that fit my passions, my studies in Software Engineering is the next step in my career journey.


FAMILY RESOURCE CENTER 100 Pennsylvania Ave., 3rd Floor, Brooklyn 11207, Phone:<PHONE_NUMBER> ext 206
NYC RESCUE MISSION 90 Lafayette St., New York, NY 10013, Phone:<PHONE_NUMBER> ext 134
POSITIVE STEP 305 7th Ave., 13th Floor, New York, NY 10001, Phone:<PHONE_NUMBER>, ext 301
ST. JOHN THE DIVINE COMMUNITY CARES 1047 Amsterdam Ave., New York, NY 10025, Phone:<PHONE_NUMBER>
GOODWILL Multiple locations throughout the NY-NJ area
HOUSING WORKS 732 9th Ave., New York, NY 10019, Phone:<PHONE_NUMBER>
K.I.D.S/FASHION DELIVERS 266 W 37th St., New York, NY 10018, Phone:<PHONE_NUMBER>
KIDS IN DISTRESSED SITUATIONS 112 W. 34th St., Suite 1133, New York, NY 10120, Phone:<PHONE_NUMBER>
ROOM TO GROW 7 W. 30th Street., 3rd Fl. New York, NY 10001, Phone:<PHONE_NUMBER>


pigdice
rules
enter username and press play to print it out
once you press roll,press hold to give the other player a chance
1 point is awarded to anyone rolling a 6
play
roll
hold
play
roll
hold


THIS
+ THAT
A Generative Poster
by Josh McKenna
Creation and Computation
OCAD University
November 9 2018
01
github
02
blog


"Do you give up or are you thisty for more?", Kevin Malachester
The movie starts with kevin's family leaving him home alone while they go to france.
Kevin is then excited with his new freedom.
Kevin then realizes that being self relieant is hard work.
Kevin thinks that his neighbor is a serial killer and gets scared.
The wet bandites plan their robbery of the neighborhood.
Kevin realizes that the neighbor is actual a good guy.
Kevin booby traps his house after overhearing the wet bandiets
The wet bandites fall for kevin's traps
Kevin gets trapped by the wet bandites, then gets saved by the neighbor.