Getting Secure: Transferring a domain to AWS and enabling HTTPS under nginx
2016 February 15th by todd anderson
Introduction
I recently decided to put this site under HTTPS after reading this article/interview with Anselm Hannemann on CSS-Tricks:
> https://css-tricks.com/interview-web-security/
I had already been interested in moving to HTTPS with the advent of an open Certificate Authority, Let's Encrypt, and my growing fascination with Service Workers, which will only work under HTTPS. Not sure if I would ever have a need for offline support for this site, but it never could hurt to mess around.
In any event, I had decided it was time to explore putting custardbelly.com under HTTPS - please don't poke around, it needs a major update - and as I went about trying to set Let's Encrypt up on my current (now old) VPS host I was running into road blocks of predetermined OS'es and dependencies that were beyond my control, which can happen if you entrust hosting your domains through a general VPS provider.
To have more control over my environment, I decided to use the Amazon Web Services (AWS) knowledge I have gained from working intimately with it in my current job/role and spin up an EC2 instance to dedicate to my site - moving it off the VPS I previously had.
In doing so, I wanted to share my process and experiences to any of you that may be wondering how to do the same. As the title suggests but does not entirely convey, my process involved:
- Moving a domain to an EC2 instance
- Transferring DNS records from a VPS to Amazon Route 53
- Setting up nginx to serve my site
- Generating certificates from Let's Encrypt
- Setting up my site to be served under HTTPS
- Conclusion
- References
Moving a Domain to an EC2 Instance
This series of steps is essentially moving any files served by my previous VPS host to an EC2 instance on AWS. Because the site and its blog are all static files, it was a simple matter of moving - or rather pulling - my files to a new server.
Setting up an EC2 Instance
If you don't already have an Amazon Web Services (AWS) account, you can sign up for one here: https://aws.amazon.com/.
I wont go into any detail about what AWS is, how to set up an account and the pricing models, so please review all documentation if you are curious.
Once you have signed in:
- Navigate to the Compute:EC2 space
- Once the EC2 Dashboard select Launch Instance
- Select the Ubuntu Server 14.04 LTS (HVM) instance from the list of AMIs
- Choose the t2.micro item from the Instance Type selection screen
- Click Next: Configure Instance Details
- Leave the default form entries and click Next: Add Storage
- Leave the default form entries and click Next: Tag Instance
- From the Key/Value form, enter in the name related to your site into the Value field. In my case, I entered
custardbelly.com
, but it does not have to specifically be your domain name. - Click Next: Configure Security Group
- Under Assign a security group, select Create new security group
- You will need to create security group with - at least - the following ports available:
22
,80
,443
- You will need to create security group with - at least - the following ports available:
- Use the Add Rule button to add protocol types and ports
- Click Review and Launch
- On the next page, accept the review and click Launch
- If you do not already have a key pair on your system through your AWS account that you want to associated with your site, then Create a new key pair; otherwise, Choose an existin key pair.
Once accepting the license agreement, you should be redirected to the EC2 Dashboard:Instances page and see your new instance listed - most likely spinning up with an Initializing... note.
We'll wait until that is finished initializing before SSH'ing into it, but before we do that, we can assign an Elastic IP to the instance so that the IP is not potentially change by AWS at any time.
Defining an Elastic IP
By associating an Elastic IP to an AWS instance, you are essentially reserving a static IP for your instance that won't change as long as it is associated in your account.
I won't go into detail about Elastic IPs, so please refer to the documentation if interested: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html.
To assign an Elastic IP to your newly launched instance:
- From the EC2 Dashboard select the Network & Security: Elastic IPs from the left-hand tree menu
- Select Allocate New Address
- From the modal window, click Yes, Allocate
- Click on the newlly added address in the listing
- From the Actions button, above the listing_, select Associate Address
- In the Associate Address dialog, start typing the name Value giving to the newly launched instance in the Instance field
- Once you see the entry for your newly launched instance from the previous section, select it and fill the Instance field value
- In my case, that is
custardbelly.com
- In my case, that is
- Click Associate
- Upon association of the new Elastic IP, you should see your Instance show up in the listing entry
At this point, if you navigate back to Instances:Instances from the EC2 Dashboard, you should see your newly launched instance listed, and the Public IP field should display the associated Elastic IP and appear in blue.
Site Files
The main site files are hand curated and live in a github repo. The blog site is generated from markdown and has its own github repo, as well; its a bit overblown for its purpose now, but at the time it was used as a tooling system to generate markdown from Wordpress post as described in a previous article.
Using the newly associated IP for the instance and the key generated, I SSH'd into the box and pulled down my site sources. For example:
$ ssh ~/.ssh/custardbelly.pem<EMAIL_ADDRESS>Since this blog and the main site are static files and all it took was to do some git clone
's on my new instance and move some things to their respective places. But first I had to install git
:
$ sudo apt-get update
$ sudo apt-get install git
Once I installed git and pulled down my repos, I moved the main site files to /var/www/custardbelly.com/public_html
and the blog files to /var/www/blog
. Then I added a sym-link from /var/www/custardbelly.com/public_html/blog
to /var/www/blog
, so that whenever I needed to get updates to the blog on my server, I didn't have to fuddle about in the main site's directory.
This was a rudimentary first pass on getting my site and blog set up. In the future, I will add deployment strategies to these repositories, either in the form of a Continuous Integration server or with tools such as shipit. Props to Kyle Kellogg on opening my eyes to it.
If you do not maintain your site in a Version Control System (VCS), you may need to go through other avenues to get your site files onto the instance...
With the site and blog files up on the new instance, it was time to tell the world to look there when they requested it.
Transferring DNS Records
When defining DNS Records for my website, I had used the administrative control panel provided by my previous VPS host to register my domain; it was pretty straight-forward and allowed me to easily enter in the records to my domain name provider.
Now, when broaching the subject of Domain Name Servers (DNS) and how your browser actually resolves a request with a domain name to an IP, my eyes start to glaze over and the mind wonders. In other words, I am of no authority to actually speak on the topic so I hope you check out some of these articles for a better understanding:
- https://en.wikipedia.org/wiki/Domain_Name_System
- https://webhostinggeeks.com/guides/dns/
- https://pressable.com/blog/2014/12/23/dns-record-types-explained/
- DNS Resolution, Step By Step (video)
That said, with what little I do understand, I know I needed to associate DNS records - specifically NS values - with my domain name purchased from my current Domain Name Provider.
I use directnic to buy my domains, but I won't go into how you define the DNS values for your domain because I am certain it will differ from provider to provider.
Neverless, I had to go into the administrative console of my Domain Name Provider account and assign the DNS records created in the next sections using Amazon Route 53.
Amazon Route 53
Until I started investigating moving my site to an EC2 Instance so I had more control over how my site is served, I honestly never heard of Amazon Route 53. The dcoumentation for Amazon Route 53 states that it provides three main functions:
- Domain Registration
- Domain Name System (DNS) service
- Health checking
I am only concerned about the DNS service side of the Route 53 as I have already purchased my domain and don't consider my site critical enough to set up CloudWatch for alarms on my site not being available.
When I went about moving my domain service to Amazon Route 53, I referred to the following documentation: http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/MigratingDNS.html.
I won't rehash the listing of steps for what I performed from the link above, because they are pretty much what I followed. The only difference was I didn't obtain a DNS configuration from my DNS Provider and import it. Instead I:
- Created a new Hosted Zone
- Upon creation, selected Create Record Set
- Created a Record Set with Type: A - IPv4 Address with a value of the Elastic IP of the AWS Instance set up previously
- Clicked Create
- Created a Record Set with Type: CNAME with the
www
name and a value of the naked domain - Clicked Create
I then had a Hosted Zone for custardbelly.com
with 3 record entries for: NS, A and CNAME.
After creating a Hosted Zone in Amazon Route 53, I took the auto-generated NS values (there were 4 in total) and set those as the the Nameserver records for my domain on my Domain Name registrar.
Check with dig
The new DNS for my domain got resolved rather quickly compared to the many times I have done this for domains before; it look about 3 minutes, but I think I got lucky. Anyway, I checked using the dig
utility to make sure it was up and associated with the Elastic IP I assigned:
$ dig custardbelly.com
Response:
; <<>> DiG 9.8.3-P1 <<>> custardbelly.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58244
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;custardbelly.com. IN A
;; ANSWER SECTION:
custardbelly.com. 300 IN A xxx.xxx.xxx.xxx
;; Query time: 105 msec
;; SERVER: <IP_ADDRESS>#53(<IP_ADDRESS>)
;; WHEN: Wed Feb 10 20:39:01 2016
;; MSG SIZE rcvd: 50
The Elastic IP associated with the AWS Instance I set up for my site is now shown as the A response from a dig
request - the same I defined in the A field of my Hosted Zone record in Amazon Route 53.
Setting Up nginx
Even though the DNS resolves the domain to the IP assocated with the AWS Instance, there is nothing - at the moment, during this setup - to be displayed when making a request from a browser.
Installation
To install nginx on the new box, I ssh'd into the box and issued the following:
$ sudo apt-get install nginx
That should install nginx and start the service, with its default configuration on port 80. I visited my site again - at http://custardbelly.com - and saw the following page:
In order to point to the files I uploaded for my site, I needed to then add custardbelly.com
to the sites-available and sites-enabled directories of the nginx configuration install.
Configuration
By default, nginx sets up the site on port 80 by defining a default configuration defined in /etc/nginx/sites-available and exposed in /etc/nginx/sites-enabled. In order to get nginx to point to the site files I uploaded to /var/www/custardbelly.com/public_html in a previous section of this post, I need to add a new file to /etc/nginx/sites-available and sym-link it in /etc/nginx/sites-enabled.
To do that, I ssh'd into my box and:
$ sudo service nginx stop
$ sudo touch /etc/nginx/sites-available/custardbelly.com
$ sudo vim /etc/nginx/sites-available/custardbelly.com
And in vim editor, entered the following:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name custardbelly.com www.custardbelly.com;
root /var/www/custardbelly.com/public_html;
index index.html index.htm;
}
I wrote and quit out of the vim editor, then removed the default and added custardbelly.com to the sites-enabled:
$ sudo rm -f /etc/nginx/sites-enabled/default
$ sudo ln -s /etc/nginx/sites-available/custardbelly.com /etc/nginx/sites-enabled/custardbelly.com
After adding custardbelly.com
to the enabled site for nginx and exposed on port 80, I restarted nginx:
$ sudo service nginx start
Now navigating in a browser to http://custardbelly.com - or its www domain - resulted in being served up the index page moved to /var/www/custardbelly.com/public_html/index.html.
With the non-secure site files setup under nginx, it was time to generate a certificate and serve the site under https.
Generating Certificates from Let's Enrypt
Let's Encrypt is a relatively recent Certificate Authority (CA) that boasts being free, automated and open. Essentially, it allows you to manage certificates for your site - to be hosted under HTTPS - without having to go through a 3rd-party vendor.
To generate a certificate through Let's Encrypt for my domain - both naked and www - I cloned the repo and issued a cert for my "standalone" webserver... but first I stopped nginx again:
$ sudo service nginx stop
... then:
$ git clone https://github.com/letsencrypt/letsencrypt
$ cd letsencrypt
$ ./letsencrypt-auto certonly --standalone --email<EMAIL_ADDRESS>-d custardbelly.com -d www.custardbelly.com
<EMAIL_ADDRESS>should be an actual email address at which you want to be notified in case of certificate expiration.
I then verified that the cert for custardbelly.com
was created by issuing:
$ sudo ls /etc/letsencrypt/live/
...
> root root 4096 Feb 10 19:39 custardbelly.com
The custardbelly.com
is a directory with key files to be used in defining how to provide SSL for your server in the configurations, as described in the next section.
Updating nginx Site Configuration
Now that I generated a cert using Let's Encrypt to be able to serve my site under HTTPS, it was time to update the site configuration for nginx.
I opened up my /etc/nginx/sites-available/custardbelly.com file and edited it to include a redirect to HTTPS:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name www.custardbelly.com custardbelly.com;
return 301 https://www.custardbelly.com$request_uri;
}
server {
listen [::]:443 ssl;
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/custardbelly.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/custardbelly.com/privkey.pem;
root /var/www/custardbelly.com/public_html;
index index.html index.htm;
}
Essentially, I am forwarding all requests on port 80 to 443. You will also note the entries for ssl_certificate
and ssl_certificate_key
which point to the cert generated using Let's Encrypt.
This is a very rudmentary example of what your site configuration should look like under nginx, but am keeping the minimum in relation to the task at hand.
I then restarted nginx:
$ sudo service nginx start
Navigating to https://www.custardbelly.com/blog in a browser and it showed up! Checked to make sure that the redirect under HTTP request worked as well and, sure enough, my site is now accessible under HTTPS :)
Now the only issue at this point is that a lot of my resources in pages point to HTTP endpoints directly... that is a sore point for a lot of browsers and results in the dreaded Mixed Content.
Setting up my site to be served under HTTPS
Once you move your site to be served up under HTTPS and then point your favorite browser to your site, you may find that it does not look or function as it did previously - as it did for me. That was because a lot of the resources on the pages of my site were being blocked because the site under HTTPS was trying to make requests for content under HTTPS; such resources were CSS files, Javascript files, images, etc.
If you were to open up Console panel of the developer tools in your browser when pointing to your site under HTTPS, you most likely will see a lot of Mixed Content entries. In my case, Google Chrome was blocking requests over differing protocols, even if I was making calls relative to the page (i.e., not cross-site).
Luckily enough, for me, I was using templates for my blog and only had to change the link references in a single template and regenerate all my posts. Once I had done that, all the pages rendered as they did previously when served under HTTP.
Read more about Mixed Content and Google Chrome here.
Conclusion
Getting this site under HTTPS using using Amazon Web Services to host and Let's Encrypt to secure was quick and painless - in just a few hours I was up and running!
Hopefully this article will help anyone else out there interested in moving their site from HTTP to HTTPS. Good luck!
If you do find any content no longer available, please let me know in the comments. Much appreciated!
References
- https://https.cio.gov/
- https://www.smashingmagazine.com/2016/02/breaking-it-down-to-the-bits-how-the-internet-dns-and-https-work/
- http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html
- http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/MigratingDNS.html
- https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-14-04-lts
- https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-14-04
- https://developers.google.com/web/fundamentals/security/prevent-mixed-content/what-is-mixed-content


Meetups
-
Tech Nottingham
The home of Nottingham's software community.
First Monday
-
Second Wednesday
Monthly event for digital creatives.
Second Wednesday
-
Nott Tuesday
The meetup for Nottingham’s tech scene.
Third Tuesday
-
Nottingham Programmers
Monthly meetup of coders.
Third Thursday
-
dot net notts
Monthly .NET user group.
Last Monday
-
Notts Mobile
All things iOS and Android.
Fourth Wednesday
-
Notts Testers
Monthly meetup of Software Testers.
-
Nottingham AWS
Share ideas and learn more about AWS.
-
Notts JS
Javascript community in Nottingham.
-
PHPMinds
Bringing the PHP community together.
Third Thursday
-
UX Notts
UX design
-
Agile Nottingham
Agile in Nottingham
Second Last Wednesday


Deschutes County GIS
#OAGITM
Shad Campbell
@shadcampbell
Applications Division Manager
History
- Started "GIS" in 1990 - 1 Engineering Assistance
- Within 5 years - 6 GIS Specialists
- 26 years later - 11 GIS Professionals in 6 departments
-
Original Deschutes County GIS Logo
Purpose of GIS in IT:
Infrastructure/Licensing
Services
Enterprise applications
Warehouse
Departments IT supports
Clerks Office
Search and Rescue
Emergency Management
Property Management
Surveyor's Office
County Forester
Infrastructure
-
GIS Database (SDE) on SQL Server
- Database for each department
- Warehouse real-only database
- Raster real-only database
- Isolated web access database
- Testing database
Infrastructure cont.
-
ArcGIS Server - Serving Data and Geoprocessing
-
ArcGIS Online and Open Data - Sharing data
Solutions
- Web apps - Custom JavaScript API and WebApp Builder, StoryMap/Templates
- WPF apps - .NET SDK
- Add-Ins (Toolbars and tools for ArcMap/ArcCatalog) - Python and ArcObjects
- APIs
- ORMAP
- R/D


September 11
Lord bringeth the counsel of the heathen to nought: he maketh the devices of
the people of none effect.
Psalm 33:10
You may be facing trouble today that's being caused by people who have willfully plotted to do you harm.  If so, I have a word of encouragement for you. According to Psalm 33:10, God will bring the plans of those people to nought. He will make their devices of none effect. The counsel of the heathen is brought to nought, but the counsel of the Lord stands forever!
Remember this: When you make God your stronghold in the time of trouble, no one can overcome you. No matter how powerful they are in the natural, the odds are in your favor because you trust in the Lord. They may think they've got an edge over you, but God is on your side and that gives you the advantage!
Rest assured, you are eventually going to triumph over this trouble. In the meantime, if you'll set your affections on the Lord, the thoughts of His heart continually will be coming into your heart.  The law of his God is in his heart; none of his stepsshall slide" (Ps. 37:30-31). God's counsel will give you stability when all the world around you is shaking. Evil tidings will not be able to steal your peace. The thoughts of God will immediately rise up and rebuke the evil tidings from taking root in your heart.
Don't let the temporary successes of the troublemaker disturb you. Instead, "mark the perfect man, and behold the upright: for the end of that man is peace" (verse 37).
Scripture Reading: Psalm 33:1-10


We serve a nightly tasting menu that draws inspiration from the local ingredients of Northern Paris, and
Ile-de-France specifically.
A meal in the dining room consists of 8-10 courses.
Tasting Menu: 295
Optional Wine Pairing: 275
In our salon, we offer an abbreviated seasonal menu of 5 courses served at tables in the bar area.
Salon Menu: 180
Due to the close proximity of the restaurant’s own Farm in Paris, less than an hour away, we have the
opportunity and responsibility to showcase the highest quality ingredients, of not only the season but of that
very day, creating a dining experience that is defined by a true sense of place and season.


In my previous post, OpenSCAD 101: Basics of the Programmers’ CAD software, we’ve talked about the most important commands and OpenSCAD’s language features. This time, we’ll discuss transformations (translate
, scale
, … etc) and introduce you to a new subject: Boolean operations on primitives.
More on OpenSCAD’s transformation modules
Cascading transformations on a group of objects
A transformation is basically an operator module, so, it returns a new object, which, naturally, can be transformed again. You are already familiar with this concept, but, what if we wanted to perform two transformations on a group of objects?
Well, grouping in OpenSCAD is usually performed with {...}
(groups objects, actions … etc). The only requirement here is that you don’t forget the tailing semi-colon at the end of each object definition:
m_axis = [0,0,1];
cent = [10,5,30];
mirror(m_axis)
translate(cent){
cube([10,20,20],center=true);
translate([10,0,0]) sphere(5);
}
The mirror
transformation mirrors the object on a plane through the origin.
m_axis
is a normal vector to that plane. So, the previous snippet will:
- Create a 10x20x20 cube at the origin.
- Create a sphere of radius 5 at (10,0,0).
- Translate each object by
cent
vector. - Mirror both resulting objects on the X-Y plane.
This [CheatSheet] lists the available transformations and the [user manual] explains how to use them.
Scope of OpenSCAD variables
Continuing with our grouping thing: Remember when I told you not to mess with variables in OpenSCAD? Well, you are now ready to do so:
- OpenSCAD (starting from 2015.03 I think) is a scope-aware language, which means variables are defined locally in their scopes and can overwrite outer ones but only inside their scope.
- A couple of braces
{...}
defines a new scope only if used with a module.
To illustrate, you can try out these few lines:
// Global scope
vec = [10,5,0];
echo(vec);
translate(vec) {
// Inner scope
vec = 5;
sphere(vec);
echo(vec);
}
// Global scope is back
rotate(vec) cube(10);
The first echo
will output the value of the vector vec
; the second one will say that vec
is a floating point equal to 5, and the rotate
command will use the vector vec
simply because it doesn’t know about the other vec
(note that the translate
command also doesn’t know about it!).
Dummy scopes like this one:
{ var = 10; } // is this a scope?
echo(var); /* ECHO: 10
No it's not!
If it was, ECHO should say 'undef' */
are not considered as valid scopes.
A side note:
Numbers are represented as 64 bit IEEE floating points, and only decimal notation is supported.nan
(“NotANumber”) is the only value that is not equal to any value (including itself):
x = 0/0;
// You can't say this:
// if (x == 0/0) echo "yes";
// Because nothing is equal to 0/0 including 0/0
// Alternatively, use this:
if (x != x) echo("yes");
// This also useful:
// Test to see if y is defined or not:
if (y == undef) echo("y is not defined yet");
Boolean Operations with OpenSCAD
There are three basic Boolean operations you can perform on a group of objects in OpenSCAD:
- Union (logical Or): Simply sums all child objects into a single one.
- Difference (logical and not): Subtracts all child objects starting from the second one from the first one.
- Intersection (logical and): Intersects all child objects.
They are all modules with no arguments, so:
vec = [40, 0, 0];
union() {
sphere(10);
cube(20);
}
translate(vec) difference() {
sphere(10);
// Subtract all following objects from the sphere
cube(20);
}
translate(-vec) intersection() {
cube(20);
sphere(10);
}
The following image showcases the results of each module call:
Now let’s do something interesting with what we have just learned:
/*
Create a module named specialCubes.
It places a series of cubes on the perimeter of
a circle (centered at the origin) where each
cube is oriented towards the center of this circle.
Parameters:
- num: The number of cubes to place.
- dist: circle radius (distance from origin).
*/
module specialCubes(num, dist) {
// Approximate the size of each cube
// Remember, this var. is local to this module
size = (2* PI *dist/num)/sqrt(2);
/* Yes, PI is defined in the MCAD library
Alongside TAU (2*PI) and mm_per_inch to convert
inches to meters.
Take a look at /usr/share/openscad/libraries/MCAD/constants.scad
*/
range = [0:360/num:360];
// ranges are of the form [start: step :end]
for (i=range)
rotate(i)
translate(dist*[1,0,0])
rotate(45)
cube(size, center=true);
}
// Subtract cubes as we create them from the first
// Cylinder.
difference(){
cylinder(r= 20, h=1, $fn=60,center=true);
specialCubes(30, 20);
specialCubes(20, 10);
cylinder(r= 2, h=5, $fn=30, center=true);
}
This will result in something similar to:
Try to remove the
center=true
option from the first cylinder and evaluate the results!If you are having trouble figuring out what happened here, rebuild the module from scratch without the for command.
Let’s explain the for
command though:
- Create a cube at the origin of calculated size.
- Rotate it 45 degrees so it’s oriented towards the origin in its original state.
- Translate it in the x-direction by
dist
units. - Rotate the resulting object by
i
degrees around the z-axis. - These four steps are repeated for each
i
in therange
.
Note that the last cylinder cannot have a height of ‘1’, because the difference
module will be confused when it finds the common surface (h = 1.01
will work fine though).


VanillaQR.js
JavaScript and HTML5 QR Generator
https://github.com/chuckfairy/VanillaQR.js
Color Light
Color Dark
Ecclevel
1
2
3
4
Create QR
Export Image


When you work with us, you are part of a team of committed collaborators.All aspects of our software development are integrated, interactive
and agile.
Our approach unifies design,development and project management to create exceptional products.
We start each project by understanding your business goeals,user's needs and the product requirements.
Then we help translate them into effective and elegant solutions.
Before we sign a contract or write a line of code, our team will spend necessary time needed to understand your product vision.
The outcome of this scoping session is proposal or high-level statement of work.
based on your requirements,we can provide acomplete offering or just like pieces you need.
Our design practice offers a full range of services including brand strategy, interaction and visual design and user experience testing. Throughout your project, our designers create and implement visual design and workflows, solicit user feedback and work with you to make sure what gets built is what is needed.
All engineers are fluent in the latest enterprise, mobile and web development technologies. They collaborate with your team to write, and improve code on a daily basis, using proven practices such as test-driven development and pair programming.
Planning and development is iterative. Because we are constantly coding and testing, the products we build are always ready to go live. This iterative process allows for changes as business requirements evolve.


Home to Mt Yasur, considered to be the world’s most easily accessible active volcano, a stopover in Port Resolution with a trip to the volcano should not be missed.
Take care on entering this poorly charted harbour. The people of Port Resolution love yachts visiting and truly enjoy getting to know yachties.
Port Resolution suffered a lot of damage when Cyclone Pam devastated this Pacific island chain in March 2015. See the comment at the bottom of the page as to how you can help if you plan on visiting.
New Rules 2014: Vessels may not call at Mystery Island (Aneityum), Port Resolution (Tanna) or any other place in Vanuatu unless the Director of Customs & Inland Revenue grants prior written permission. Masters of vessels who visit these places prior to obtaining inwards clearance and being issued with an “Inter-island Cruising Permit”, or obtaining written permission may be subject to fines and/or prosecution.
If planning to visit here, it is worth obtaining this prior written permission as the trip from Lenakel to Port Resolution is very tedious in normal trade wind conditions.
Customs, Immigration and Quarantine are all based in Lenakel on Tanna’s SW coast. The harbour at Lenakel however is small and fairly open so in the past boats would anchor at Port Resolution and take a 4x4 car over to Lenakel on the other side of the island to clear in. However, it is now necessary to obtain prior permission to do this from Vanuatu Customs and Inland Revenue, or face large fines.
See the RCC's report - May 2015.
Once you have obtained prior permission to clear at Port Resolution, on arrival Werry at the Yacht Club will contact Customs and Immigration who will travel over from Lenakel to inspect and clear you.
Note that there is a fee of 5000vatu for Customs and 5000vatu for Biosecurity for clearing in at a port other than a Port of Entry. There is also a charge of 15000vatu for the officials' travel costs (2 hours over the horrendous road from Lenakel and 2 hours back again).
Last updated September 2015.
Port Resolution offers the best all around anchorage on Tanna with a sandy bottom, but it is open from ENE to NNE and is shallow (4m), so in winds over 15 knots, the anchorage becomes very uncomfortable. The anchorage can be rolly and a stern anchor may make life more pleasant.
The Port Resolution Yacht Club are always happy to help with any tours, transport or provisioning needs. The glow of the volcano is visible from anchor at night and in certain winds you can expect to receive a light dusting of volcanic ash.
The growing number of yachts visiting Tanna has caused some problems, the biggest one being yachts leaving their rubbish behind or worse, burning it on shore. What makes this hard is if you ask a person in the village if you can leave trash or burn it they will almost always say yes. That’s their culture, they do not say no and do not tell you when you do something wrong. Be sure to take your rubbish away with you.
Port Resolution did suffer extensive damage during Cyclone Pam in 2015 (see report below under comments by SY Tenaya).
Last updated April 2015.


Games Tounaments
Playing competitive sports has also proven to increase the rate of positive academic achievement among students. The dedicated sports department of Chandigarh University provides students with a plethora of opportunities to maintain a healthy & active lifestyle while pursuing academic goals.


Before discovering a passion for code, I earned a Masters in Forensic Psychology and enjoyed a previous career in historic site administration. I am constantly looking for ways to develop myself personally and professionally, and absolutely love interacting with our complicated world. I enjoy administration and strive for efficiency, organization, and harmony in organizations I'm a part of. I am excited to bring these passions and interests to coding and to a my future employer.
I've completed a full stack programming boot camp at Nashville Software School which gave me the opportunity to work full time with code in both individual and group coding environments. I enjoy combining these skills with my unique blend of psychology, history, and former administration background to create great code that is meaningful to people. I look forward to helping an employer achieve their goals, continuing to grow as a developer, and creating applications that help improve the lives of people.


'walipini-lp-server' is a project archetype which can be used to create a simple HAPI server.
Get Started
Create a working HAPI server project from scratch in less than 5 minutes.
Description of feature-2.
Description of feature-3.
Description of feature-4.


{% extends "base.html" %} {% block content %}
Select a host to add an alert for it:
Or, add an alert that applies to all hosts.
Configure an existing alert:


An isomorphic routing based on the Symfony2 Routing component but more minimal, allows for both the matching as well as the generation of urls.
In node you can install this using npm:
npm install signal.js
Then you can simply require it in your application:
javascript var Signal = require('signal.js');
We currently have the following documentation:
signal.js
An isomorphic routing based on the Symfony2 Routing component but more minimal, allows for both the matching as well as the generation of urls.
Goals
Installation
In node you can install this using npm:
npm install signal.js
Then you can simply require it in your application:
javascript var Signal = require('signal.js');
Further Documentation
We currently have the following documentation:


Palestinian rockets, Israeli airstrikes jolt tenuous Gaza truce
Sirens sounded in the middle of the night in Beersheba, the largest city in southern Israel, some 35 km (18 miles) from the Gaza border, warning of incoming fire. The military said its missile defenses intercepted the two rockets.
Palestinian militants fired two rockets deep into southern Israel from Gaza on Saturday, and the Israeli military responded with a number of air strikes on militant targets, shaking an already tenuous truce.
Sirens sounded in the middle of the night in Beersheba, the largest city in southern Israel, some 35 km (18 miles) from the Gaza border, warning of incoming fire. The military said its missile defenses intercepted the two rockets.
A few hours later, Israeli aircraft struck a number of militant outposts belonging to Hamas, the Islamist group that rules Gaza. No injuries were reported.
The overnight rocket attack came nearly two days after a ceasefire ended a flare-up in cross-border violence between Israel and a smaller Palestinian militant group, Islamic Jihad.
The worst fighting in months was triggered on Tuesday when Israel killed a top commander from the Iranian-backed Islamic Jihad, deeming him an imminent threat.
Gaza medical officials said 34 Palestinians had been killed in the two days of fighting, almost half of them civilians.
At the same time, hundreds of rocket launches by militants paralyzed much of southern Israel and reached as far north as Tel Aviv, sending entire communities to shelters. Dozens of Israelis were injured.
Throughout the fighting, Hamas, the dominant force in Gaza, appeared to have stayed on the sidelines. That may have helped stem the escalation.
Israel's military, however, said on Saturday that it would hold Hamas responsible for any attack emanating from Gaza.
"Hamas will bear the consequences for actions against Israeli civilians," it said in a statement.


Surge.js is a Javascript template engine. It will be compile the compile to javascript function.
Introduction
Get Started
Write a demo template in script block with type="text/template"
:

The Data source:
var data = {
products:[
{title:'The product name short description-1', price:199.89, description:'The detail information about the product-1.'},
{title:'The product name short description-2', price:299.89, description:'The detail information about the product-2.'},
{title:'The product name short description-3', price:399.89, description:'The detail information about the product-3.'},
{title:'The product name short description-4', price:499.89, description:'The detail information about the product-4.'},
]
};
Syntax
The Syntax of Surge.js is very like Liquid or Django template.
Which use "{{" and "}}" for marking up the variable, "{%" and "%}" for marking up flow control, "{#" and "#}" for marking up comment block.
And also, you can use Javascript function to filter variable, that is named filter. The surge define some builtin filters, can also, you can define your own filter, just use surge.register
function to register the filter.
Variable
The variable is marked up with {{ and }}. Example:

{{ product.name }}

{{ product.description }}

Actually, you can aslo use constant, Such as :{{ 12 }}
, {{ "Welcome, You."}}
. Even, you don't need to worry about " and ', you can code like this:

{{ product.name }}

{{ product.name }}

Filter
The filter is just the javascript function, The filter usage is like:
{{ product.name | title }}
{{ product.name | title | truncate: 20 }}
{{ product.name | truncate: 20 |title }}
The both of "title
" and "truncate
" are filters. which decleard like function title(a) {...
and function truncate(a, count) {...
.
The Surge.js will compile these code to js expression, like below codes:
title(product.name)
truncate(title(product.name), 20)
title(truncate(product.name, 20))
The filter is not only used in variable, but also you can use filters with if and for tags. The following chapters will discuss them.
Builtin filters
The Surge.js predefine some filters.
trim
Trim the white space started with string or ended with string.
Input source:
{{ " abc "|trim }}
Output: abc
ltrim
Trim the white space started with string.
Input source:
{{ " abc "|ltrim }}
Output: "abc "
rtrim
Trim the white space ended with string.
Input source:
{{ " abc "|rtrim }}
Output: " abc"
add
Adds the argument to the value.
Input source:
{{ 12|add:12 }}
Output: 24
capfirst
Capitalizes the first character of the value. If the first character is not a letter, this filter has no effect.
Input source:
{{ "surge"|addslashes }}
Output: "Surge"
cut
Removes all values of arg from the given string. The argment can be regex pattern.
Input source:
{{ "String with spaces"|cut:" " }}
Output: "Stringwithspaces"
default
If value evaluates to False, uses the given default. Otherwise, uses the value.
Input source:
{{ value|default:"nothing" }}
If value
is one of "", 0, [], false, undefined, the output will be "nothing"
, or output is value
.
[] is not false in javascript.
sort
Takes a list of object and returns that list sorted by the key given in the argument, or use default argument.
For example:
{{ value|sort:"name" }}
If value
is:
[
{'name': 'zed', 'age': 19},
{'name': 'amy', 'age': 22},
{'name': 'joe', 'age': 31},
]
then the output would be:
[
{'name': 'amy', 'age': 22},
{'name': 'joe', 'age': 31},
{'name': 'zed', 'age': 19},
]
Also this filter can used with Array argument, For example:
{{ value|sort }}
If value
is:
[1,15,80,9,10,12]
Or
["1", "15", "80", "9", "10", "12"]
then the output would be:
[1,9,10,12,15,90]
Or
["1", "10", "12", "15", "9", "90"]
This would be diff with js. Array.sort function will sort the item in Array as string, so the output would be:
[1, 10, 12, 15, 9, 90]
in js.
reverse
Takes a list of dictionaries and returns that list sorted in reverse order by the key given in the argument. This works exactly the same as the above filter, but the returned value will be in reverse order.
escape
Escapes a string's HTML. Specifically, it makes these replacements:
- < is converted to <
- > is converted to >
- ' (single quote) is converted to '
- " (double quote) is converted to "
- & is converted to &
length
Returns the length of the value. This works for both strings and lists.
For example:
{{ value|length }}
If value
is ['a', 'b', 'c', 'd']
, the output will be 4
.
lower
Converts a string into all lowercase.
For example:
{{ value|lower }}
If value
is Still MAD At Yoko
, the output will be still mad at yoko
.
upper
Converts a string into all uppercase.
For example:
{{ value|upper }}
If value
is "Joel is a slug"
, the output will be "JOEL IS A SLUG"
.
striptags
Strips all [X]HTML tags.
For example:
{{ value|striptags }}
If value
is "Joel <button>is</button> a slug"
, the output will be "Joel is a slug"
.
title
Converts a string into titlecase by making words start with an uppercase character and the remaining characters lowercase. This tag makes no effort to keep "trivial words" in lowercase.
For example:
{{ value|title }}
If value
is "my FIRST post"
, the output will be "My First Post"
.
truncate
Truncates a string if it is longer than the specified number of characters. Truncated strings will end with a translatable ellipsis sequence ("...").
Argument: Number of characters to truncate to
For example:
{{ value|truncate:9 }}
If value
is "Joel is a slug"
, the output will be "Joel is ..."
.
Create Your Own Filters
Create Your Own Filters
Tag
Tag
if
if
for
for
Comment
Comment


For communities under resourced by Head Start, we encourage families to connect with local organizations to access alternative programs and services. Communities can also jumpstart the application process to apply for federal funding to build a Head Start with eligible organizations.
Build Early Ed is creating a platform to bridge the gap between early childhood organizations, teachers, advocates, and families. This messaging platform streamlines access to mentorship, job opportunities, resources, and community surveys. Ultimately, we aim to foster dialogue in the community to build the continuum of care for youth together.
Fill out this survey to make child care more affordable.
Join a community advocacy network to make more equitable systems for children and families.
Stay updated on available funding and opportunities for child care and early education.
Let's create a stronger continuum of care for youth.
Connect here to get help with enrolling in a program near you.
Pursue a career in early education and learn about job opportunities here.
Mentorship network for early childhood educators and child care providers in New Mexico.
Just got accepted as a CYFD Scholar to earn my Childhood Development Certificate!
11:11 AM | YesterdayCongratulations!!  I've got a few interviews as a Preschool Teacher Assistant. Any advice for interview prep?
11:15 AM | YesterdayThat's wonderful to hear, I'm happy to connect today or tomorrow afternoon.
9:17 AM | TodayAwesome, this afternoon is open for me. I appreciate all of your support in this process!
9:44 AM | Today


This salient air gap model can be used for machines with uniform air gaps and for machines with rotor saliency. The air gap model is not symmetrical towards stator and rotor since it is assumed the saliency always refers to the rotor. The saliency of the air gap is represented by a main field inductance in the d- and q-axis.
For the mechanical interaction of the air gap model with the stator and the rotor is equipped with two rotational connectors. The torques acting on both connectors have the same absolute values but different signs. The stator and the rotor reference angles, and are related by where is the electrical angle between stator and rotor.
The air gap model has two magnetic stator and two magnetic rotor ports. The magnetic potential difference and the magnetic flux of the stator and rotor are equal complex quantities, respectively, but the reference angles are different; see Concept. The d and q axis components with respect to the rotor fixed reference frame (superscript r) are determined from the stator (superscript s) and rotor (superscript r) reference quantities, by
.
The d and q axis magnetic potential difference components and flux components are related with the flux by:
Magnetic.FundamentalWave.BasicMachines.Components.RotorSaliencyAirGap


--- layout: default nav-class: home description: A White label website keywords: jekyll, reg tait nav-class: home ---
{{ site.description }}
{{ post.date | date: "%b %-d, %Y" }}—{{ post.excerpt }}
{{ case.summary }}


R/fit_ezddm.R
fit_ezddm.Rd
Fits Wagenmaker et al.'s (2007) EZ-diffusion model for two-choice response time tasks. To use the function, ensure your dataframe is in long form, has single-trial reaction time (in seconds) and responses (coded as 0 or 1) on each row. You can use the function to fit the EZ-diffusion model to just a single subject or multiple subjects, and separately for each experimental condition (see below for examples).
fit_ezddm(data, rts, responses, id = NULL, group = NULL, s = 0.1, decimal = 4)
| data | data object with reaction time and accuracy variables (long form data expected) |
|---|---|
| rts | specify in characters the name of the reaction time column (reaction time must be in seconds) |
| responses | specify in characters the name of the accuracy column (coded as 0/1) |
| id | specify in characters the name of your subject/id column (if not specified, assumes data [all rows] belong to a single subject) |
| group | specify in characters the name of your column(s) indicating various conditions (default = NULL) |
| s | scaling parameter (often set to 0.1 or 1.0) |
| decimal | round parameter estimates (default = 4) |
A datatable
Details to follow
Notes to follow
Wagenmakers, E. J., van der Maas, H. L., & Grasman, R. P. (2007). An EZ-diffusion model for response time and accuracy. Psychonomic Bulletin & Review, 14(1), 3-22. doi:10.3758/BF03194023 (https://link.springer.com/article/10.3758/BF03194023)
Hause Lin
if (FALSE) { library(rtdists) # load package to simulate data with diffusion parameters data1 <- rdiffusion(n = 100, a = 2, v = 0.3, t0 = 0.5, z = 0.5 * 2) # simulate data data2 <- rdiffusion(n = 100, a = 2, v = -0.3, t0 = 0.5, z = 0.5 * 2) # simulate data dataAll <- rbind(data1, data2) # join data dataAll$response <- ifelse(dataAll$response == "upper", 1, 0) # convert responses to 1 and 0 dataAll$subject <- rep(c(1, 2), each = 100) # assign subject id dataAll$cond1 <- base::sample(c("a", "b"), 200, replace = TRUE) # randomly assign conditions a/b dataAll$cond2 <- base::sample(c("y", "z"), 200, replace = TRUE) # randomly assign conditions y/z # fit model to just entire data set (assumes all data came from 1 subject) fit_ezddm(data = dataAll, rts = "rt", responses = "response") # fit model to just entire data set (assumes all data came from 1 subject) fit_ezddm(data = dataAll, rts = "rt", responses = "response", id = "subject") # fit model to each subject by cond1 fit_ezddm(data = dataAll, rts = "rt", responses = "response", id = "subject", group = "cond1") # fit model to each subject by cond1,cond2 fit_ezddm(data = dataAll, rts = "rt", responses = "response", id = "subject", group = c("cond1", "cond2")) }


--- layout: post date: 2012-05-17 time: "09:00:00" authors: ["Greg Wilson"] title: Halifax in July tags: ["Saint Mary's University"] ---
We have just added another workshop to the summer's list, this one at Saint Mary's University in Halifax, Nova Scotia, on July 16-17. Please let friends and colleagues know—I look forward to meeting them.


Green / Fruits / Healthy
Pepper / Chicken / Vegetables
Green / Chicken
Beef / Fried Potatoes
Pepper / Crispy
Lorem ipsum dolor sit amet consectetur adipisicing elit.


Default mode:
CSS
Less
Sass
Indentation:
Tab character
Space characters:
1
2
3
4
8
Storage:
If you change this option, the data would be auto-migrated between these storages per site when used.
Extension Storage
(chrome.storage.local)
Remember all your changes and keep them accessible only through this extension.
Web Storage
(localStorage)
Your changes might be cleared/overwritten by "Clear History" feature of the browser or by JavaScript on the web page.
Autocomplete:
CSS selectors
If your selectors are pre-processed, you may wish to uncheck it.
CSS properties and values
If you mostly use Emmet autocomplete, you may wish to uncheck it.
Font size:
Default
Custom:
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
px
Load for frame/iframe:
Load separate instances for each frame/iframe
When applying styles automatically:
Show notification at:
top-right corner
bottom-right corner
bottom-left corner
top-left corner
Experimental options:
These options may not work perfectly in all the scenarios.
Hide editor when mouse pointer is outside the webpage
Done


Can you guess the color?
Changing the difficulty resets the game!
Easy
Medium
Hard
Score: 0
7
GAME OVER
REPLAY


Ambien in itself is an extremely interesting drug and it usually takes 15-30 minutes to feel the effects. I had used Ambien on several previous occasions before deciding to combine it with cannabis.
9:00 pm: I take 10 mg Ambien
9:15 : Feeling slightly confused and euphoric
9:30 : The effects of the ambien have fully manifested and it is hard to concentrate. I feel moderately drunk, my motor skills are inhibited and I lose my balance several times on my way to the bong. I proceed to smoke two bowls of marijuana.
9:45 : I am completely zonked and I snap in and out of vivid dream- like states. I feel that I am not alone and that there are people talking to me. Ambien usually trips me out like that but the cannabis makes the hallucinations all the more real.
10:15 : The Ambien effects are not as strong now but still definitely have a prescence.
10:00 : At this time I am quite drowsy and lethargic. I think of going to bed but I forget to do so.
10:45 : I can no longer stay awake and doze off.
11:15 : I wake up dazed and confused feeling very drowsy but high.
I decide to return to bed.
In retrospect I found the trip very odd and interesting. The feeling of the presence of people was so real that i actually beleived that there were people around me, talking to me. Ambien, an extremely weird drug anyways, was intensified by the ganja.
I enjoyed the experience and would do it again. For those who want to experience this combination i would recommend experimenting with ambien by itself first. Ambien, although odd as hell, is definitely worth a try.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


--- layout: page title: About header-img: "img/about-bg.png" ---
Hi, my name is Laura Darlak. I am a former gerontology nerd turned self-taught Front End Developer. I enjoy building websites for social and ecological entrepreneurs. Currently, I am enrolled in the Flatiron School Full Stack Web Development program. My off-line interests include raising chickens, mycology, and simple living.


--- layout: default ---
You will find here information about the Hyperwave concept as well as the hyperwave that has been discover so far


Pet Finder
Find. Adopt. Love.
Gender :
None
Male
Female
Animal :
Dog
Cat
Barnyard
Bird
Horse
Reptile
Smallfurry
Size :
None
Huge
Large
Medium
Small
GO !


A wrapper function that calls scrub_doublets
from python
module scrublet
. Simulates doublets from the observed data and uses
a k-nearest-neighbor classifier to calculate a continuous
scrublet_score
(between 0 and 1) for each transcriptome. The score
is automatically thresholded to generate scrublet_call
, a boolean
array that is TRUE
for predicted doublets and FALSE
otherwise.
runScrublet( inSCE, sample = NULL, useAssay = "counts", simDoubletRatio = 2, nNeighbors = NULL, minDist = NULL, expectedDoubletRate = 0.1, stdevDoubletRate = 0.02, syntheticDoubletUmiSubsampling = 1, useApproxNeighbors = TRUE, distanceMetric = "euclidean", getDoubletNeighborParents = FALSE, minCounts = 3, minCells = 3L, minGeneVariabilityPctl = 85, logTransform = FALSE, meanCenter = TRUE, normalizeVariance = TRUE, nPrinComps = 30L, tsneAngle = NULL, tsnePerplexity = NULL, verbose = TRUE, seed = 12345 )
| inSCE | A SingleCellExperiment object.
Needs |
|---|---|
| sample | Character vector. Indicates which sample each cell belongs to.
Scrublet will be run on cells from each sample separately. If NULL, then
all cells will be processed together. Default |
| useAssay | A string specifying which assay in the SCE to use. Default 'counts'. |
| simDoubletRatio | Numeric. Number of doublets to simulate relative to the number of observed transcriptomes. Default 2.0. |
| nNeighbors | Integer. Number of neighbors used to construct the KNN
graph of observed transcriptomes and simulated doublets. If |
| minDist | Float Determines how tightly UMAP packs points together. If |
| expectedDoubletRate | The estimated doublet rate for the experiment. Default 0.1. |
| stdevDoubletRate | Uncertainty in the expected doublet rate. Default 0.02. |
| syntheticDoubletUmiSubsampling | Numeric. Rate for sampling UMIs when creating synthetic doublets. If 1.0, each doublet is created by simply adding the UMIs from two randomly sampled observed transcriptomes. For values less than 1, the UMI counts are added and then randomly sampled at the specified rate. Defuault: 1.0. |
| useApproxNeighbors | Boolean. Use approximate nearest neighbor method
( |
| distanceMetric | Character. Distance metric used when finding nearest
neighbors.
For list of valid values, see the documentation for |
| getDoubletNeighborParents | Boolean. If |
| minCounts | Numeric. Used for gene filtering prior to PCA. Genes
expressed at fewer than |
| minCells | Integer. Used for gene filtering prior to PCA. Genes
expressed at fewer than |
| minGeneVariabilityPctl | Numeric. Used for gene filtering prior to PCA. Keep the most highly variable genes (in the top minGeneVariabilityPctl percentile), as measured by the v-statistic (Klein et al., Cell 2015). Default 85. |
| logTransform | Boolean. If |
| meanCenter | If |
| normalizeVariance | Boolean. If |
| nPrinComps | Integer. Number of principal components used to embed the transcriptomes prior to k-nearest-neighbor graph construction. Default 30. |
| tsneAngle | Float. Determines angular size of a distant node as measured
from a point in the t-SNE plot. If default, it is set to 0.5 Default |
| tsnePerplexity | Integer. The number of nearest neighbors that
is used in other manifold learning algorithms.
If default, it is set to 30. Default |
| verbose | Boolean. If |
| seed | Seed for the random number generator. Default 12345. |
A SingleCellExperiment object with
scrub_doublets
output appended to the
colData slot. The columns include
scrublet_score and scrublet_call.
data(scExample, package = "singleCellTK") if (FALSE) { sce <- subsetSCECols(sce, colData = "type != 'EmptyDroplet'") sce <- runScrublet(sce) }


Breakfast At Tiffany's 1961
Rebel Without A Cause 1955
Giant 1956
Casablanca 1942
Gone With The Wind 1939
Love Is A Many-Splendored Thing 1955
Breakfast at Tiffany's is a 1961 drama directed by Blake Edwards,starring George Peppard and Audrey Hepburn. The story is about a young woman,from New York, who works as an expensive escort whose dream is to marry an old and rich man. Iconic is the scene of Audrey Hepburn wearing a black tight dress outside Tiffany having breakfast.
Rebel without a cause is a 1955 drama directed by Nicholas Ray,starring James Dean.This probably is the most famous movie of J.Dean. The story is about a troublemaker teen who moves to a new city,makes some bad friendships and falls in love with a girl.
Giant is a 1956 drama directed by George Stevens,starring James Dean, Elizabeth Taylor and Rock Hudson. The story is about a tense rivarly between a Texas rancher and an ambitious young man.
Casablanca is a 1942 drama directed by Michael Curtiz,starring Humphrey Bogard and Ingrid Bergman. The story is about a nightclub owner who meets his old flame after many years finding out that that love never changed. " We will always have Paris " is the most famous quote related to this movie.
Gone with the wind is a 1939 drama directed by Victor Fleming,starring Vivien Leigh and Clarck Gable. This movie is probably the most famous of all time,everyone knows it,everyone has seen it at least once. The story develops during the American Civil War and follows the adventures,the loves and troubles of Scarlett O'Hara. " Frankly,my dear,I don't give a damn" was voted the number one movie line of all time by American Film Institute in 2005.
Love is a many-splendored thing is a 1955 drama directed by Henry King,starring William Holden and Jennifer Jones. The story is about a love between and American reporter and an Eurasian doctor. They will face many prejudices because of their love.


| < Day Day Up > |
Hack 69 Tune FreeBSD for Different Applications
Know how to tune and what to tune on your FreeBSD system As an administrator, you want to tune your server systems so they work at peak efficiency. How do you know what to tune? The answer depends heavily upon the system's function. Will the system perform a lot of small network transactions? Will it perform a small number of large transactions? How will disk operations factor in? How you answer these and other questions determines what you need to do to improve the performance of your systems. This hack starts with general optimizations and then looks at function-specific tunables. 7.2.1 Optimizing Software CompilingA good place to start is with software compiling, as you want to compile software and updates as efficiently as possible. Whenever you compile, your compiler makes assumptions about your hardware in order to create binaries. If you have an x86-compliant CPU, for example, your compiler will create binaries that can run on any CPU from a 386 onward. While this allows portability, it won't take advantage of any new abilities of your CPU, such as the extended MMX, SSE, SSE2, or 3DNow! instruction sets. This is also why using precompiled binaries on your system is a surefire way to reduce your overall performance. To ensure that software will be compiled efficiently, update your compiler flags in /etc/make.conf . This file does not exist on new systems, but you can copy it from /usr/share/examples/etc/defaults/make.conf. Start by editing the CPUTYPE= line to reflect your CPU type; you'll find supported types listed as comments just before this line. While this will take advantage of your CPU's features, the disadvantage is that your compiled binaries may not run on different CPU types. However, if all of your systems run the same CPU platform, any optimizations you make to shared binaries will affect all of your systems equally well. Next, change the CFLAGS line to CFLAGS= -O2 -pipe -funroll-loops. The -pipe option can significantly decrease the amount of time it takes to compile software, by using pipes to communicate between compiler processes instead of temporary files, but at the expense of using slightly more memory. The -funroll-loops saves one CPU register that would otherwise be tied up in tracking the iteration of the loop, but at the expense of making a slightly larger binary.
7.2.2 Kernel OptimizationsIn your kernel configuration, add the following line after the machine i386 line: makeoptions COPTFLAGS="-O2 -pipe -funroll-loops -ffast-math" This is similar to the CLAGS option in /etc/make.conf, except that it optimizes kernel compilation.
You can also add this line: TOP_TABLE_SIZE=number where number is a prime number that is at least twice the number of lines in /etc/passwd. This statement sets the size of the hash that top uses. Set the following option if you have an AMD K5/K6/K6-2 or Cyrix 6x86 chip. It enables cache write allocation for the L1 cache, which is disabled by default for these chips. options CPU_WT_ALLOC This option will disable NFS server code, so include it when you know that you will not be acting as an NFS server: options NFS_NOSERVER Another way of saving kernel memory is to define the maximum number of swap devices, as shown in the next example. Your kernel needs to allocate a fixed amount of bitmapped memory so that it can interleave swap devices. I set the number to 1 on my workstation and 2 on my servers. If I need to add more to a server, I can easily create another partition. options NSWAPDEV=number If you plan on compiling all your requisites into the kernel (NIC driver, IPF/IPFW, etc.) and won't be loading any of these options as modules, you can include this line to skip module compiling. This saves significantly on the time taken to compile a kernel (sometimes reducing it by two-thirds). makeoptions MODULES_OVERRIDE="" By default, all kernel options are compiled as modules. This allows you to use kldload to load a module even though it isn't specified in your kernel configuration file. The advantage of MODULES_OVERRIDE is the decrease in kernel compilation time. The disadvantage is that you'll need to recompile your kernel if you ever need to add additional functionality, since you will have lost the ability to load the kernel module separately. 7.2.3 Optimizing Network PerformanceMost modern network cards and switches support the ability to auto-negotiate the communication speed. While this reduces administration, it comes at the cost of network throughput. If your switch, server, or workstation is set to use auto-negotiation, it will stop transferring network traffic every few moments to renegotiate its speed. If your network driver supports it, you can set network speed with ifconfig at runtime or in /etc/rc.conf at boot time. Here is an example: % grep fxp0 /etc/rc.conf ifconfig_fxp0="inet x.x.x.x netmask x.x.x.x media 100BaseTX mediaopt full-duplex"
Next, you can enable DEVICE_POLLING in your kernel, which changes the method by which data travels from your network card to the kernel. Without this setting, frequent interrupt calls may never free the kernel. This is known as livelock and can leave your machine unresponsive.  The DEVICE_POLLING option causes the kernel to poll the network card at certain predefined times, during idle loops, or on clock interrupts. This allows the kernel to decide when it is most efficient to poll a device for updates and for how long, and ultimately results in a significant increase in performance. To take advantage of DEVICE_POLLING, you need to compile two options into your kernel: options DEVICE_POLLING and options HZ=1000. The latter option slows the clock interrupts to 1,000 times per second, which prevents the kernel from polling too often. Once you've recompiled your kernel, you'll still need to enable the feature. Add this line to /etc/sysctl.conf: kern.polling.enable=1 The DEVICE_POLLING option does not work with SMP-enabled kernels by default. If you are compiling an SMP kernel with DEVICE_POLLING, first remove the following lines from /usr/src/sys/kern/kern_poll.c: #ifdef SMP #include "opt_lint.h" #ifndef COMPILING_LINT #error DEVICE_POLLING is not compatible with SMP #endif #endif 7.2.4 Optimizing Mail ServersMail servers typically have a very large number of network connections, during which they transfer a small amount of data for a short period of time before closing the connection. In this case, it is useful to have a large number of small network buffers. Network connections have two buffers, one for sending and one for receiving. The size of the buffer dictates how quickly data will funnel through the network and, in the event of a network delay, how much data can back up the server for that connection before there is a problem. Having a network buffer that is too small will cause a data backlog as the CPU waits for the network to clear, which causes greater CPU overhead. Having a network buffer that is too large wastes memory by using the buffer inefficiently. Finding a balance is the key to tuning. I find that multiplying the number of established connections by 32 leaves me with room to breathe in the event that I see an abnormally high surge of traffic. I've come to this number over time through trial and error. So, if you expect to have a peak of 128 servers sending you mail, having 8,192 network buffer clusters would be good (128 2 per connection 32). Also, remember that connections can take up to two full minutes or more to close completely. If you expect more than 128 emails in any given two-minute period, increase the number accordingly. Another important value to control is the maximum number of sockets. Start with the same number of sockets as there are network buffers, and then tune as appropriate. You can find out how many network buffer clusters are in use with the command netstat -m. You can specify the values you want in /boot/loader.conf. For example: kern.ipc.nmbclusters=8192 kern.ipc.maxsockets=8192 As with any performance tuning, monitor your system after making changes. Did you go overboard or underestimate what you would need? Always check and adjust accordingly. 7.2.5 Optimizing File ServersFile servers generally have longer-lived and less frequent network connections than those on mail servers. They usually transfer larger files. To determine the optimal number of network buffer clusters, consider how many clients you have. Multiplying the number of network buffers by two is good practice, though some admins prefer to multiply by four to accommodate multiple file transfers. If you have 128 clients connecting to the file server, set the number of network buffer clusters to 1,024 (128 2 per connection 4). 7.2.6 Optimizing Web ServersIf you have more than one element on your web page (for example, multiple images or frames), expect web browsers to make multiple connections to your web server. It's common to see four connections per page served. Also count any database or network connections made in server-side scripting. Web servers go through periods of highs and lows. While you might serve 100 pages per minute on average, at your low you might serve 10 pages per minute and at peak over 1,000 pages per minute. At a peak of 1,000 pages per minute, your clusters and sockets should be around 16,384 (1,000 pages 2 per connection 4 connections 2 for growth). 7.2.7 See Also
|
| < Day Day Up > |


Now you can view some, or all, or even just one of their 25 dispatches in whatever order you like. Click the red stars on the map above to preview Caity and Rich’s shorter meal and ride reports. Don’t miss their Epcot epic: Drinking Around the World.


Have I gone mad? A developer's guide to project management
Genevieve Johnson // genjohnson
Genevieve Johnson // genjohnson
Lorem ipsum sit dolor lorem ipsum sit dolor. Lorem ipsum sit dolor lorem ipsum sit dolor!
Press ESC to enter the slide overview.
Hold down alt and click on any element to zoom in on it using zoom.js. Alt + click anywhere to zoom back out.
Presentations look great on touch devices, like mobile phones and tablets. Simply swipe through your slides.
Hit the next arrow...
... to step through ...
... a fragmented slide.
There's different types of fragments, like:
grow
shrink
roll-in
fade-out
current-visible
highlight-red
highlight-blue
<section data-background="image.png">
function linkify( selector ) {
if( supports3DTransforms ) {
var nodes = document.querySelectorAll( selector );
for( var i = 0, len = nodes.length; i < len; i++ ) {
var node = nodes[i];
if( !node.className ) {
node.className += ' roll';
}
}
}
}
Code syntax highlighting courtesy of highlight.js.
| Item | Value | Quantity |
|---|---|---|
| Apples | $1 | 7 |
| Lemonade | $2 | 18 |
| Bread | $3 | 2 |
These guys come in two forms, inline:
“The nice thing about standards is that there are so many to choose from”
and block:
“For years there has been a theory that millions of monkeys typing at random on millions of typewriters would reproduce the entire works of Shakespeare. The Internet has proven this theory to be untrue.”


{% extends 'layouts/main.html' %} {% block title %}Authorization Failed{% endblock %} {% block jumbotron %}
Sorry, looks like something went wrong! We can't access your Strava account, if you want to try again you can use the button below.
Error: {{ error }}
Sign in to Strava » {% endblock %}


The Thinker
The Thinker (fr. Le Penseur) is one of the most famous sculptural works of Auguste Rodin. The master worked on it in the years 1880-1882. The original sculpture is exhibited at the Rodin Museum in Paris. According to the author’s original design, the sculpture was called “The Poet” and was part of the Gates of Hell composition based on the Divine Comedy, depicting Dante, the creator of the paintings of hell cast in bronze. Rodin’s design was complicated by the time. In particular, the image of Dante was replaced by the universal image of the creator.


--- post_id: /internetnoll-i-mexico-del-tva-motorvagen date: 2010-05-17 07:13 return_url: '2010-05-15-internetnoll-i-mexico-del-tva-motorvagen.html' name: 'Magnus' email<EMAIL_ADDRESS>comment: '
Yeah, it''s likely that an oxxo and "The Italian Coffee House" will show up there eventually.
' ---


This is a free responsive contact form made with Bootstrap. Download it on AZMIND, customize and use it as you like!
Fill in the form below to send us a message:


Here we will explore common issues and their resolutions. Visit me (wayneeseguin) in #rvm on irc.freenode.net and let me help you with any issues and please leave feedback!
Most commonly this is due to RUBYOPT. rvm attempts to disable it during installation however you may need to manually disable RUBYOPT while installing a ruby. Check the ~/.rvm/log/[ruby you are installing]/rubygems.install.error.log to see if this might be the case.
This is most often due to your environment being jacked up when you call rvm so that the wrong system defaults get recorded. Remove ~/.rvm/current and ~/.rvm/default*, open a new terminal shell and use rvm to select a ruby.
If all else fails rm -rf ~/.rvm/ and re-run rvm-update. If this still does not resolve your particular issue, please visit me (wayneeseguin) in #rvm on irc.freenode.net


Storing Codable structs on the disk
Most of our apps are REST clients for some backends. During the development of this kind of apps, we want to keep it working offline. In this case, we have to cache data somewhere locally on the device to make it readable without an internet connection.
Apple provides a CoreData framework, which is the best way to store your app data locally. It has a lot of excellent features which help you to boost development. However, it is tough to use it as a simple cache. Most of the time, we just need to display cached data without any additional manipulations. In my opinion, all we need is pure disk storage. This week we will discuss how easily we can implement straightforward disk store for our Codable structs.
Let’s start with defining a couple of protocols for our storage logic. I want to separate access to writable and readable parts of the storage, and this is where we can use protocol composition feature of Swift language.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import Foundation
typealias Handler<T> = (Result<T, Error>) -> Void
protocol ReadableStorage {
func fetchValue(for key: String) throws -> Data
func fetchValue(for key: String, handler: @escaping Handler<Data>)
}
protocol WritableStorage {
func save(value: Data, for key: String) throws
func save(value: Data, for key: String, handler: @escaping Handler<Data>)
}
typealias Storage = ReadableStorage & WritableStorage
Here we have two protocols describing reading and writing operations on storage. Protocols also provide an asynchronous version for reading and writing actions with completion handlers. We also create typealias Storage, which is a composition of two protocols. Now we can start to work on DiskStorage class which implements our Storage protocols.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
enum StorageError: Error {
case notFound
case cantWrite(Error)
}
class DiskStorage {
private let queue: DispatchQueue
private let fileManager: FileManager
private let path: URL
init(
path: URL,
queue: DispatchQueue = .init(label: "DiskCache.Queue"),
fileManager: FileManager = FileManager.default
) {
self.path = path
self.queue = queue
self.fileManager = fileManager
}
}
First of all, let’s describe some variables for root path of our storage, DispatchQueue for asynchronous work and FileManager, which we will use to navigate through the file system.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
extension DiskStorage: WritableStorage {
func save(value: Data, for key: String) throws {
let url = path.appendingPathComponent(key)
do {
try self.createFolders(in: url)
try value.write(to: url, options: .atomic)
} catch {
throw StorageError.cantWrite(error)
}
}
func save(value: Data, for key: String, handler: @escaping Handler<Data>) {
queue.async {
do {
try self.save(value: value, for: key)
handler(.success(value))
} catch {
handler(.failure(error))
}
}
}
}
extension DiskStorage {
private func createFolders(in url: URL) throws {
let folderUrl = url.deletingLastPathComponent()
if !fileManager.fileExists(atPath: folderUrl.path) {
try fileManager.createDirectory(
at: folderUrl,
withIntermediateDirectories: true,
attributes: nil
)
}
}
}
Next step is the implementation of the writable part of our storage. It is a little bit tricky because the key is a path to our data on the file system. That’s why we need append the key to our root path and generate new URL for the storing data. New URL can contain subfolders, that’s why we create a createFolders function which creates needed folders according to the path.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
extension DiskStorage: ReadableStorage {
func fetchValue(for key: String) throws -> Data {
let url = path.appendingPathComponent(key)
guard let data = fileManager.contents(atPath: url.path) else {
throw StorageError.notFound
}
return data
}
func fetchValue(for key: String, handler: @escaping Handler<Data>) {
queue.async {
handler(Result { try self.fetchValue(for: key) })
}
}
}
Here is the readable part of our Storage protocol, where we implement data fetching for a passed key. Again, we use the key as a path to our data on disk. Now we have a working example of straightforward disk storage. Next step is implementing a simple adapter for our DiskStorage class, which will handle JSON coding/decoding.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class CodableStorage {
private let storage: DiskStorage
private let decoder: JSONDecoder
private let encoder: JSONEncoder
init(
storage: DiskStorage,
decoder: JSONDecoder = .init(),
encoder: JSONEncoder = .init()
) {
self.storage = storage
self.decoder = decoder
self.encoder = encoder
}
func fetch<T: Decodable>(for key: String) throws -> T {
let data = try storage.fetchValue(for: key)
return try decoder.decode(T.self, from: data)
}
func save<T: Encodable>(_ value: T, for key: String) throws {
let data = try encoder.encode(value)
try storage.save(value: data, for: key)
}
}
CodableStorage class wraps our DiskStorage class to add JSON coding-decoding logic. It uses generic constraints to understand how to decode and encode data. It’s time to use our CodableStorage in real life sample.
1
2
3
4
5
6
7
8
9
10
11
struct Timeline: Codable {
let tweets: [String]
}
let path = URL(fileURLWithPath: NSTemporaryDirectory())
let disk = DiskStorage(path: path)
let storage = CodableStorage(storage: disk)
let timeline = Timeline(tweets: ["Hello", "World", "!!!"])
try storage.save(timeline, for: "timeline")
let cached: Timeline = try storage.fetch(for: "timeline")
In the code sample above, you can see the usage of CodableStorage class. We create DiskCache class instance which uses a temporary folder to store data. Timeline is a simple codable struct representing an array of strings which we store in our CodableStorage.
Conclusion
Today we discussed a simple way of storing Codable structs which we can fetch via REST API. Sometimes we don’t need complicated features of CoreData for simple JSON caching and it is enough to implement disk storage.


COVID- antibodies patients virus SARS-CoV- {border-style coronavirus px;} #ffffff;} convalescent antibody plasma vaccination viral severe therapy disease recovered COVID-. effective high immune potential BCG human patients. protein px; {font-family Accessed case children font-size inflammatory neutralizing protective studies virus-neutralizing Infect Korean acute countries course days double; effects immunoglobulin monoclonal rheumatic vaccine (COVID-) Chinese HIV- IVIg IgG antiviral border-color border-width cases cells clinical demonstrated early individuals measles multiple required respiratory response responses risk series serum solid; spike study subjects syndrome treatment use vaccinated {font-style {font-weight AY, Dis Gasparyan Immunol Med SARS-CoV-. Zimba antibodies. autoimmune based blocking bold courier; cross-reactivity em; high-risk host immunosuppressive initial interaction lung mAbs mortality nonspecific novel pandemic particularly production proteins pt;} related revealed spread strategies


Undergrad Computer Applications student in DCU.
Second year undergrad in DCU studying Computer Applications (Software Engineering).
During Transition Year, I received work experience at LocalSocial, an Internet of Things software development office. I gained some introductory experience with Java along with the testing process.
Outside of software engineering I do some hobby frontend work in my spare time.
My other interests lie mainly in media production and fitness.


Password Generator!
Generate Password
Store password
Encrypt password & store it
Note: Click on "generate Password" button to get another one.
Retrieve Stored Password
Find!
Help!
Modal title
×
...
About Me!


ADNAT
Home
About
About
For Patients
For Clinicians
References
FAQ
FAQs
Young People FAQ
Health Professionals FAQ
Contact
Sign In


Photonic Integrated Circuits, Sensors & Networks
(Read more)
Central Board of Secondary Education & Kendriya Vidyalaya Sangathan
(Read more)
Incubation Center for Medical Electronics at Indian Institute of Technology(IIT), Patna, India.
(Read more)
AIM-HI Institute, National Chung Cheng University, Taiwan
(Read more)


Shaarli export of all bookmarks on Sat, 06 Jun 20 15:50:59 +0200
- The hunt for the fish pirates who exploit the sea - BBC Future
- For 10 years, a rogue fishing vessel and its crew plundered the world’s oceans, escaping repeated attempts of capture. Then a dramatic pursuit finally netted the one that got away.


|
OR-Tools
7.1
Google Optimization software suite
|
#include <constraint_solver.h>
Public Member Functions | |
| IntExpr (Solver *const s) | |
| ~IntExpr () override | |
| virtual int64 | Min () const =0 |
| virtual void | SetMin (int64 m)=0 |
| virtual int64 | Max () const =0 |
| virtual void | SetMax (int64 m)=0 |
| virtual void | Range (int64 *l, int64 *u) |
| virtual void | SetRange (int64 l, int64 u) |
| virtual void | SetValue (int64 v) |
| virtual bool | Bound () const |
| virtual bool | IsVar () const |
| virtual IntVar * | Var ()=0 |
| IntVar * | VarWithName (const std::string &name) |
| virtual void | WhenRange (Demon *d)=0 |
| void | WhenRange (Solver::Closure closure) |
| void | WhenRange (Solver::Action action) |
| virtual void | Accept (ModelVisitor *const visitor) const |
| Public Member Functions inherited from operations_research::PropagationBaseObject | |
| PropagationBaseObject (Solver *const s) | |
| ~PropagationBaseObject () override | |
| std::string | DebugString () const override |
| Solver * | solver () const |
| void | FreezeQueue () |
| void | UnfreezeQueue () |
| void | EnqueueDelayedDemon (Demon *const d) |
| void | EnqueueVar (Demon *const d) |
| void | ExecuteAll (const SimpleRevFIFO< Demon * > &demons) |
| void | EnqueueAll (const SimpleRevFIFO< Demon * > &demons) |
| void | set_action_on_fail (Solver::Action a) |
| void | reset_action_on_fail () |
| void | set_variable_to_clean_on_fail (IntVar *v) |
| virtual std::string | name () const |
| void | set_name (const std::string &name) |
| bool | HasName () const |
| virtual std::string | BaseName () const |
| Public Member Functions inherited from operations_research::BaseObject | |
| BaseObject () | |
| virtual | ~BaseObject () |
Definition at line 3810 of file constraint_solver.h.
|
inlineexplicit |
Definition at line 3812 of file constraint_solver.h.
|
inlineoverride |
Definition at line 3813 of file constraint_solver.h.
|
pure virtual |
Implemented in operations_research::BooleanVar.
|
pure virtual |
Implemented in operations_research::BooleanVar.
|
pure virtual |
Implemented in operations_research::BooleanVar.
|
pure virtual |
Implemented in operations_research::BooleanVar.
|
inlinevirtual |
Definition at line 3822 of file constraint_solver.h.
|
inlinevirtual |
Reimplemented in operations_research::BooleanVar.
Definition at line 3827 of file constraint_solver.h.
|
inlinevirtual |
Definition at line 3833 of file constraint_solver.h.
|
inlinevirtual |
Reimplemented in operations_research::BooleanVar.
Definition at line 3836 of file constraint_solver.h.
|
inlinevirtual |
Reimplemented in operations_research::IntVar.
Definition at line 3839 of file constraint_solver.h.
|
pure virtual |
Implemented in operations_research::IntVar, and operations_research::BaseIntExpr.
| IntVar* operations_research::IntExpr::VarWithName | ( | const std::string & | name | ) |
|
pure virtual |
Implemented in operations_research::BooleanVar.
|
inline |
Definition at line 3853 of file constraint_solver.h.
|
inline |
Definition at line 3859 of file constraint_solver.h.
|
virtual |
Reimplemented in operations_research::IntVar.


lpq(1) Apple Inc. lpq(1) NAME lpq - show printer queue status SYNOPSIS lpq [ -E ] [ -U username ] [ -h server[:port] ] [ -P destina‐ tion[/instance] ] [ -a ] [ -l ] [ +interval ] DESCRIPTION lpq shows the current print queue status on the named printer. Jobs queued on the default destination will be shown if no printer or class is specified on the command-line. The +interval option allows you to continuously report the jobs in the queue until the queue is empty; the list of jobs is shown once every interval seconds. OPTIONS lpq supports the following options: -E Forces encryption when connecting to the server. -P destination[/instance] Specifies an alternate printer or class name. -U username Specifies an alternate username. -a Reports jobs on all printers. -h server[:port] Specifies an alternate server. -l Requests a more verbose (long) reporting format. SEE ALSO cancel(1), lp(1), lpr(1), lprm(1), lpstat(1), http://localhost:631/help COPYRIGHT Copyright 2007-2011 by Apple Inc. 16 June 2008 CUPS lpq(1)


4 Behavioral econometrics
4.1 Example dataset
library(foreign)
library(ggplot2)
<- read.csv("../2021ECON5820/Hey2001.csv")
Hey2001
::kable(head(Hey2001)) knitr
| id | t | q1 | q2 | q3 | q4 | p1 | p2 | p3 | p4 | y |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 0 | 0 | 0.875 | 0.125 | 0 | 0.125 | 0.000 | 0.875 | 0 |
| 1 | 2 | 0 | 0 | 0.875 | 0.125 | 0 | 0.125 | 0.000 | 0.875 | 0 |
| 1 | 3 | 0 | 0 | 0.875 | 0.125 | 0 | 0.125 | 0.500 | 0.375 | 1 |
| 1 | 4 | 0 | 0 | 0.875 | 0.125 | 0 | 0.375 | 0.000 | 0.625 | 0 |
| 1 | 5 | 0 | 0 | 0.875 | 0.125 | 0 | 0.375 | 0.125 | 0.500 | 1 |
| 1 | 6 | 0 | 0 | 0.875 | 0.125 | 0 | 0.375 | 0.250 | 0.375 | 1 |
- decisions over 2 lotteries. \(p\) or \(q\)
- \(y=1\) iff \(i\) chooses the q-lottery in decision \(t\)
- prizes: 0, 50, 100, 150 pounds
4.2 Risk neutral
Maximization problem \[ \max_l\{E[u(X\mid l)]\} \]
Probabilistic choice function. Given choice set \(\mathbb A\) (softmax) \[ \Pr\left(l\right)\propto \exp\left(\lambda E[u(x)\mid l]\right) \]
- As the utility of one action increases, I am more likely to take it.
- Interpretations
- I make mistakes, but I recognize big payoff differences better than small ones
- There is a random component to my utility (observed by the decision-maker but not econometrician)
- There is a component of my utility that is not modeled well by \(E[u(x)\mid l]\)
Since we have only 2 choices, this becomes:
\[ \begin{aligned} \Pr(y=1\mid p,q)&=\frac{\exp(\lambda E[u(x)\mid q])}{\exp(\lambda E[u(x)\mid q])+\exp(\lambda E[u(x)\mid p])}\\ &=\left(1+\exp\left(\lambda\left(E[u(x)\mid p]-E[u(x)\mid q]\right)\right)\right)^{-1} \end{aligned} \]
log-likeihood function: \[ \mathcal L(\theta)=\sum_{t=1}^T\Pr(y_t\mid p_y,q_t) \]
For risk-neutral: \(u(x)=x\)
library(dplyr)
<-(Hey2001
D%>% mutate(EVq = 0*q1+50*q2+100*q3+150*q4,
EVp = 0*p1+50*p2+100*p3+150*p4
)%>% mutate(DEV = EVq-EVp)
)head(D)
## id t q1 q2 q3 q4 p1 p2 p3 p4 y EVq EVp DEV
## 1 1 1 0 0 0.875 0.125 0 0.125 0.000 0.875 0 106.25 137.50 -31.25
## 2 1 2 0 0 0.875 0.125 0 0.125 0.000 0.875 0 106.25 137.50 -31.25
## 3 1 3 0 0 0.875 0.125 0 0.125 0.500 0.375 1 106.25 112.50 -6.25
## 4 1 4 0 0 0.875 0.125 0 0.375 0.000 0.625 0 106.25 112.50 -6.25
## 5 1 5 0 0 0.875 0.125 0 0.375 0.125 0.500 1 106.25 106.25 0.00
## 6 1 6 0 0 0.875 0.125 0 0.375 0.250 0.375 1 106.25 100.00 6.25
Define and maximize likelihood:
<-function(lambda,DEV,y) {
LL# somthing in here to change DEV to DEU
sum(-log(1+exp((-1)^y*lambda*DEV)))
}
LL(1,D$DEV,D$y)
## [1] -78116.31
<- optimize(function(x) {-LL(x,D$DEV,D$y)}, c(0, 1))
lambdaHat
print(lambdaHat)
## $minimum
## [1] 0.06112392
##
## $objective
## [1] 15170.62
4.3 Estimate a \(\lambda_i\) for every subject (split by ID)
<-function(DEV,y) {
lambdaHatoptimize(function(x) {-LL(x,DEV,y)}, c(0, 1))$minimum
}
print(lambdaHat(D$DEV,D$y))
## [1] 0.06112392
<-(D
LambdaHatEstimates%>% group_by(id)
%>% summarize(lhat = lambdaHat(DEV,y)))
%>% head() %>% knitr::kable() LambdaHatEstimates
| id | lhat |
|---|---|
| 1 | 0.0293029 |
| 2 | 0.0461682 |
| 3 | 0.0412640 |
| 4 | 0.1111173 |
| 5 | 0.0374135 |
| 6 | 0.1656475 |
(ggplot(LambdaHatEstimates,aes(x=lhat))
+stat_ecdf()
)
In context: \[ \Pr(\text{chooses y to max DEV})=(1+\exp(-\lambda |\mathrm{DEV}|)^{-1} \] on average, a subject will choose the “right” action with probability \[ \frac{1}{T}\sum_{t=1}^T(1+\exp(-\lambda |\mathrm{DEV}_t|)^{-1} \]
<-function(l,DEV) {
LogitResponsemean(1/(1+exp(-l*abs(DEV))))
}<-function(l,DEV) {
EVloss<-(1/(1+exp(-l*abs(DEV))))
p
mean(p*0+(1-p)*abs(DEV))
}
<-(D
LambdaHatEstimates%>% left_join(LambdaHatEstimates,by="id")
%>% group_by(id)
%>% summarize(PrHat = LogitResponse(lhat,DEV),
EVloss = EVloss(lhat,DEV),
lhat = mean(lhat))
)
%>% head() %>% knitr::kable() LambdaHatEstimates
| id | PrHat | EVloss | lhat |
|---|---|---|---|
| 1 | 0.6032170 | 4.663298 | 0.0293029 |
| 2 | 0.6500962 | 3.537870 | 0.0461682 |
| 3 | 0.6374532 | 3.826159 | 0.0412640 |
| 4 | 0.7619261 | 1.450055 | 0.1111173 |
| 5 | 0.6269719 | 4.073668 | 0.0374135 |
| 6 | 0.8097907 | 0.812481 | 0.1656475 |
(ggplot(LambdaHatEstimates,aes(x=PrHat))+stat_ecdf()
)
(ggplot()
+stat_ecdf(data=LambdaHatEstimates,aes(x=EVloss,color="Estimated expected loss"))
+stat_ecdf(data=D %>% filter(id==1),aes(x=abs(DEV),color="Theoretical max"))
+xlab("Expected loss relative to EV-maximizing (pounds)")
)
4.4 Adding in risk aversion
Expected utility in vector form: \[ \begin{aligned} u(x)&=(u(x_1),u(x_2),\ldots)\\ p&=(p_1,p_2,p_3,p_4)\\ q&=(q_1,q_2,q_3,q_4)\\ E[u(X)\mid p]&=p^\top u(x)\\ E[u(X)\mid q]&=q^\top u(x)\\ DEU(u,p,q)&=(q-p)^\top u(x) \end{aligned} \]
<-c(0,50,100,150)
prizes
<-function(params,p,q,y) {
LL<-exp(params[1])
r<-exp(params[2])
lambda
<-as.matrix(prizes^r)
Ux
<-as.matrix(q) %*% Ux
EUq<-as.matrix(p) %*% Ux
EUp
<-EUq-EUp
DEU
sum(-log(1+exp((-1)^as.matrix(y)*lambda*DEU)))
}
<-D%>% filter(id==1) %>% dplyr::select(p1:p4)
p<-D%>% filter(id==1) %>% dplyr::select(q1:q4)
q<-D %>% filter(id==1) %>% dplyr::select(y)
y
<-function(p,q,y) {
EUHatexp(optim(c(log(0.5),log(0.7)),function(x) {-LL(x,p,q,y)})$par)
}
<-(D
Estimates%>% group_by(id)
%>% summarize(rhat = EUHat(p,q,y)[1],
lhat = EUHat(p,q,y)[2])
)
#Estimates %>% head() %>% knitr::kable()
library(latex2exp)
(ggplot(Estimates,aes(x=rhat,y=lhat))+geom_point()
+theme_bw()
#+xlab(TeX("$\\hat r$"))+ylab(TeX("$\\hat\\lambda$"))
+ylim(c(0,exp(10)))
+scale_y_continuous(trans="log10")
)
4.5 Certainty equivalents:
Lottery induced by behaving according to parameters \(r\) and \(\lambda\) \[ \begin{aligned} \Pr(y_t=1\mid r,\lambda)&=(1+\exp(\lambda DEU_t(r)))^{-1} \end{aligned} \] Induced lottery for choice \(t\): \[ q_t\Pr(y_t=1\mid r,\lambda)+p_t\left(1-\Pr(y_t=1\mid r,\lambda)\right) \] what is the lottery of the entire experiment? \[ L=\frac{1}{T}\sum_{i=1}^T\left(q_t\Pr(y_t=1\mid r,\lambda)+p_t\left(1-\Pr(y_t=1\mid r,\lambda)\right)\right) \] Expected utility of experiment: \[ EU(\text{expt})=L^\top u(x) \] Certainty equivalent of an experiment: \[ CE(\text{expt})=u^{-1}\left(EU(\text{expt})\right) \]
From here, we can calculate:
- How much is the experiment worth to someone who behaves according to \((r,\lambda)\)?
- How much could it be worth if we shut down the noise (i.e. \(\lambda\to\infty\))?
- How much was the experiment worth based on their actual choices?
Bland, J.R., 2020. Measuring and comparing two kinds of rationalizable opportunity cost in mixture models. Games, 11(1), p.1.
Alekseev, Aleksandr, Glenn W. Harrison, Morten Lau, and Don Ross. “Deciphering the noise: the welfare costs of noisy behavior.” (2019).


Fried Game Hen
Story
Ever since Katie bought me a deep fryer for Christmas last year, I've been thinking about giving fried chicken a shot. Mom taught me how to make the best Italian style chicken cutlet but southern-style fried chicken was something I've never been able to master. Cornish game hens were on sale and I wondered if frying a whole one would be doable.  So I bought one, some buttermilk and some brussels for a "nest" and set out to see if we could pull it off...
Recipe
Fried Cornish Game Hen over Brussels' Salad
June 8, 2014
Buttermilk fried cornish game hen stung with Sriracha honey in "nest" of brussels sprouts and currants
Prep time:
Cook time:
Total time:
Yield: 2 hens
Equipment:
Deep Cast Iron Skillet or Deep Fryer with enough Oil to fill 2/3 (peanut, canola, vegetable, something with a high smoke point)Ingredients:
Birds:
Buttermilk: 2cGarlic: 3 cloves, minced
Salt: 1 tbsp
Smoked Chili Powder: 1 tsp
Black pepper: 2 tsp
Onion Powder: 1 tsp
Rosemary: 1 tbsp
Thyme: 1 tbsp
Flour: 3c
Baking Powder: 1.5 tsp
Garlic Powder: 1 tsp
Onion Powder: 1 tsp
Cornish Game Hens: 2
Salad:
Brussels' Sprouts: 1 lb, shreddedSalt: 1 tbsp
Lemon: 1, juiced
Dried Currants: 2 tbsp
Thyme: 1 tsp
Parmigiano Reggiano: 2 tbsp
Sting:
Honey: 2 tbspSriracha: 1 tsp
Directions:
1. Combine first 8 ingredients in gallon sized freezer bag. Place hens in bag. Squeeze as much air out as possible out of the bag, place in a bowl and refrigerate 8 hours to overnight.
2. Preheat oven to 200 F and oil to 360 F.
3. Combine flour, baking powder, garlic powder, onion powder, and a heavy pinch of salt and pepper in a gallon freezer bag.
4. Transfer hens (one at a time) to bag with flour. Toss to coat. Repeat with second hen. Return both to buttermilk bag to coat again. Finish one last time in flour mixture.
5. Deep fry hens for 15-20 minutes each or until golden brown.
6. Move birds to rack over pan in oven (see below) and place in oven for 30 minutes to finish.
7. Mix salad ingredients. Set up "nest" on two plates.
8. Plate hens in nests.
9. Pour sting over birds. Grab a rag for your hands and dig in.
2. Preheat oven to 200 F and oil to 360 F.
3. Combine flour, baking powder, garlic powder, onion powder, and a heavy pinch of salt and pepper in a gallon freezer bag.
4. Transfer hens (one at a time) to bag with flour. Toss to coat. Repeat with second hen. Return both to buttermilk bag to coat again. Finish one last time in flour mixture.
5. Deep fry hens for 15-20 minutes each or until golden brown.
6. Move birds to rack over pan in oven (see below) and place in oven for 30 minutes to finish.
7. Mix salad ingredients. Set up "nest" on two plates.
8. Plate hens in nests.
9. Pour sting over birds. Grab a rag for your hands and dig in.
</div>


Hunt the
Delu Lizardman Suppliers, Special Agents, Commanders, Shaman and Cursed Seers
to obtain the Crystals.


health {border-style px;} #ffffff;} policy COVID- Health measures economic countries social Coronavirus public px; recovery {font-family economy font-size impact need World double; global governments impacts virus (COVID-) border-color border-width disease effective from: international novel outbreak socio-economic solid; {font-style {font-weight April Covid- bold citizens collab: country courier; delicate distancing em; individual infection influenza interventions pandemic pt;} rates strategies travel


{% extends "layout.html" %} {% block page_title %} Travel and leave at DWP {% endblock %} {% block main_content %}
You don't have to pay for your travel if both:
You can claim accommodation if travelling the same day is impractical.
You can claim up to £5 a day for lunch and £16 for an evening meal if away for work - make sure to keep your receipts.
Book all travel and accommodation using the trips online booking system if you can. It's far simpler and quicker than paying for it yourself and claiming it back as expenses.
Trips website: www.trips.uk
Your cost code (needed for booking): 173013
If you don't have a trips account the instructions for how to get one are on RM. In the meantime ask your line manager to book any train tickets or hotels you need.
Whoever books your ticket, it can be collected in person from any station on the national rail network using your bank card. Make sure you say if you want to pick up yout ticket from anywhere different to your departure station.
Time spent travelling out of hours (which includes your regular journey to work) can be claimed as flexitime.
For example if you need to catch a train at 6:30am but normally travel on the 8am train then you can claim 1 hour and 30 minutes flexitime.
You have an annual holiday allowance. You're also entitled to claim back any hours you've worked out of your normal hours as flexi leave.
If you want to book leave or take flexi you must tell:
Your line manager will give you a leave form on your first day to fill in.
Try to ask for leave at least 2 weeks in advance of taking it.
Check with your line manager who to put in your out of office reply on your email if taking leave.
{% endblock %}


BZDIFF(1) BZDIFF(1) NAME bzcmp, bzdiff - compare bzip2 compressed files SYNOPSIS bzcmp [ cmp_options ] file1 [ file2 ] bzdiff [ diff_options ] file1 [ file2 ] DESCRIPTION Bzcmp and bzdiff are used to invoke the cmp or the diff program on bzip2 compressed files. All options specified are passed directly to cmp or diff. If only 1 file is specified, then the files compared are file1 and an uncompressed file1.bz2. If two files are specified, then they are uncompressed if necessary and fed to cmp or diff. The exit status from cmp or diff is preserved. SEE ALSO cmp(1), diff(1), bzmore(1), bzless(1), bzgrep(1), bzip2(1) BUGS Messages from the cmp or diff programs refer to temporary filenames instead of those specified. BZDIFF(1)


--- layout: post title: Sepat leaving + Leaving Taipei date: 2007-08-19 05:48:52.000000000 -05:00 type: post parent_id: '0' published: true password: '' status: publish categories: - English - Korea'07 tags: [] meta: {} author: login: dreamessenceonthemove email<EMAIL_ADDRESS>display_name: darribas first_name: Daniel last_name: Arribas-Bel permalink: "/2007/08/19/sepat-leaving-leaving-taipei/" ---
Yesterday, we couldn't do that much because of the typhoon: authorities had allowed people not to go working so most of the stores were closed, and most of people stayed at home too (even though it wasn't as hard as one could expect when hearing the word "typhoon"). The only thing we could do then was eating, eating and, when there was nothing left to do, we ate a bit more. Katie is totally introducing me into taiwanese cuisine and even into chinese language (you should have heard me asking for Chua Bin...).
Today we are leaving Taipei on the way to Taijung, Katie's hometown. We don't know yet where we'll be able to go because, since though the typhoon is gone, it might have left behind some traces. I don't know whether i'll have internet access in the next days either, so don't be afraid if you don't see any update here. Mom, Dad, I'll be safe :)


New feature request - info in floater
-
habesct
I have been really enjoying your product for sometime now... perfect compliment to iTunes. Anyway, the one thing I would really like to see added would be the ability to add more info to the floater. Specifically some of the info that would appear in the track 'info', like 'Grouping' or comments as well. I have a lot of live music and place Set info in the grouping field, special guests in comments, etc...
It would be nice to have this info in the floater. Thanks for your consideration.
-
Greg Hurrell
Check out the feature requests database; there are already a couple of entries for this:
http://wincent.com/a/support/bugs/show_bug.cgi?id=291
http://wincent.com/a/support/bugs/show_bug.cgi?id=104
Those two are about "Grouping" but there are others as well. Some of the requested features are already implemented in Synergy Advance, but Synergy Advance is only in public preview testing and doesn't even have a Floater yet (although Growl notifications can be used to similar effect).
Reply
This topic is now closed.


An edge-document handler that fetches edges from the server and
persists them on the server. It does so by issuing the
appropriate HTTP requests to the server.
Intermediate function to call the createFromArray function from the right context
createFromArrayWithContext(mixed $data, mixed $options) : \triagens\ArangoDb\Edge
Parameters
$data
$options
Returns
save an edge to an edge-collection
saveEdge(mixed $collectionId, mixed $from, mixed $to, mixed $document, bool|array $options) : mixed
This will save the edge to the collection and return the edges-document's id
This will throw if the document cannot be saved
Parameters
$collectionId
mixed
- collection id as string or number
$document
mixed
- the edge-document to be added, can be passed as an object or an array
$options
bool
array
- optional, prior to v1.2.0 this was a boolean value for create. Since v1.0.0 it's an array of
options.
Options are :
'create' - create the collection if it does not yet exist.
'waitForSync' - if set to true, then all removal operations will instantly be synchronised to
disk.
If this is not specified, then the collection's default sync behavior will be applied.
Exceptions
Returns
mixed
- id of document created