apiman Policy and Endpoint Security
Aug 3, 2015 Len DiMaggio securityNote: A newer revision of this blogpost for apiman 1.2.x can be found here. This version was written for apiman 1.1.x.
In this, the fifth article in the series on apiman, JBoss’ new API Management framework, we’ll examine how apiman enables you to provide security for your managed services at the policy level, and and at the endpoint level for its managed and unmanaged endpoints.
Unintentionally Insecure?
If you read the first article in this series closely (https://dzone.com/articles/impatient-new-users) you might have noticed that in the course of creating a service whose endpoint was managed by the apiman API Gateway, we also inadvertently left that service in a very insecure state as unauthorized client applications could bypass the gateway and access the service directly. We discussed how to configure authentication in a policy for the managed service endpoint in the most recent post in this series (https://dzone.com/articles/adding-basic-authentication). This authentication policy provides username/password security for clients as they access the managed service through the API Gateway, but it does not protect the service from unauthorized access attempts that bypass the Gateway completely. To make the service secure from unauthorized client applications, endpoint level security should also be configured.
In this article, we’ll examine both apiman policy level and endpoint level security, how they compare, and how they differ.
Complementary Types of Security Provided by apiman
The best way to start our discussion of the different, but complementary types of security that we’ll examine in this article is with a diagram. The nodes involved are the client applications that will access our services, the apiman API Gateway, and the servers that host our services:
Let’s work our way through the diagram from left to right and start by taking a look at Policy Level Security.
Policy Level Security
apiman includes several pre-defined policies OOTB. The policies provide support for controlling access to services based on the rate at which the services are invoked, the IP address of the client applications that access the services, authorization, and authentication. In the most recent article in this series, we showed how to configure an authentication policy. To keep things simple, we chose BASIC authentication. This BASIC Authentication policy provides security for the communication channel between the client applications and the apiman API Gateway. An incoming request to the API Gateway from a client initiates the policy chain, the policy is applied and the client is requested to supply a username and password. The level of security provided by this policy can be enhanced if the policy is configured with SSL encryption.
But, this policy level security only secures the left side of the diagram, that is the communication channel between the applications and the API Gateway. In this communication channel, the applications play the role of the client, and the API Gateway plays the role of the server.
We also want to secure the right side of the diagram, where the API Gateway plays the role of a client, and the services play the role of the servers.
(It’s also worth noting that while policy security protects the managed service, it does nothing to protect the unmanaged service as this service can be reached directly, without going through the API Gateway. This is illustrated by the red line in the diagram. So, while access to the managed service through the apiman API Gateway is secure, policy security does not secure the unmanaged service endpoint.)
Endpoint Level Security
In contrast to policy level security, with endpoint security we are securing the right side of the diagram.
A recent post by Marc Savy to the apiman blog https://www.apiman.io/blog/gateway/security/mutual-auth/ssl/mtls/2015/06/16/mtls-mutual-auth.html described how to configure Mutually Authenticated TLS (Transport Layer Security) between the API Gateway and the managed services. With Mutual TLS, bi-direction authentication is configured so that the identities of both the client and server are verified before a connection can be made.
In setting up Mutual TLS, keystores, containing a node’s private key, and truststores, containing public certificates to govern the other nodes that the node should trust, were created. The API Gateway was configured in its apiman.properties file to reference the keystores and truststores. The service was configured with mutual authentication by setting the API Security dropdown in the Implementation tab to MTLS/Two-Way-SSL. Finally, the service was programmed with mutual authentication enabled. With Mutual TLS configured, the communication channel on the right side of the diagram, from the API Gateway to the services, was made secure.
We should also note that, unlike policy security, endpoint security also secures the services from attempts to bypass the API Gateway. With Mutual TLS, a two-way trust pattern is created. The API Gateway trusts the services and the services trust the API Gateway. The services, however, do not trust the client applications. As is shown by the large “X” character that indicates that an application cannot bypass the API Gateway and access the services directly.
One last point that is important to remember is that the endpoint level of security applies to all requests made to the services, regardless of whatever policies are configured.
Compare and Contrast
To summarize, the differences between policy level security and endpoint level security are:
| Policy Level Security | End Point Level Security |
|---|---|
| Secures communications between the applications (clients) and API Gateway (server) | Secures communications between the API Gateway (client) and services (servers) |
| Configured in an API Gateway policy | Configured for the API Gateway as a whole in apiman.properties and with key/certificates infrastructure |
| Applied by the policy at runtime | Applied for all service requests, regardless of the policies configured for a service |
| Does not secure the unmanaged service from access by unauthorized clients | Secures the unmanaged service endpoints from access by unauthorized clients |
Author Acknowledgements
As always, the author would like to acknowledge Marc Savy, Eric Wittmann, and the apiman team for their review comments and suggestions on writing this article!
References
- https://www.apiman.io/blog/gateway/security/mutual-auth/ssl/mtls/2015/06/16/mtls-mutual-auth.html (written by Marc Savy)
- https://dzone.com/articles/adding-basic-authentication


EVER AFTER RATING: 7 / 10 --> Good Movie
For more reviews and movie trivia, visit http://www.joblo.com/
PLOT: A retelling of the classic Cinderella fable, has a sweet, innocent 8-year girl who loves her father dearly, turn into a servant for her stepmother, after her father passes away unexpectedly. After 10 years of waiting on her demanding stepmom and her stepsisters, the girl is wooed by the bachelor prince, who believes her to be a courtier, and falls for her ability to say what is on her mind, and her lack of manipulative tactics.
CRITIQUE: Interesting, well-told, beautifully photographed version of the classic tale, features many new, fun twists, and solid performances by the entire cast, especially Drew Barrymore in the lead role of Danielle. This movie is sure to strike a chord with girls around the world, who might be able to identify with the lead character's conviction, truth and love. They might also appreciate the whole "white knight in shining armor" scenario, with the higher-brow prince falling for the lower-brow servant. Anjelica Huston plays another wicked character flawlessly, as this film actually allows her character to show some humanity, as well as one of the stepsisters, who is essentially, very understanding to Cinderella's plight. Having said that, the movie didn't blow my mind, was quite predictable considering its source material, and did have a weak link in the prince character, who didn't quite bowl me over. All in all, this film will be appreciated much more by girls, but entertaining enough for all, with great cinematography, a solid lead, and an interesting and timely story line.
Review Date: March 21, 1999 Director: Andy Tennant Writers: Susannah Grant, Andy Tennant and Rick Parks Producers: Mireille Soria and Tracey Trench Actors: Drew Barrymore as Danielle, Anjelica Huston as Rodmilla, Dougray Scott as Prince Henry Genre: Romance Year of Release: 1998
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Game Engine.
More...
|
| def | __init__ (self, dim, dt=0.1, maxtime=10, collisions=False, collision_tol=0.25) |
| |
| def | log (self, newdf) |
| |
| def | log_diagnostics (self, diag_df) |
| |
| def | apriori_collisions (self, current_state, agents, targets, time) |
| |
| def | run (self, x0, system) |
| |
|
|
| dim |
| |
|
| dt |
| |
|
| maxtime |
| |
|
| df |
| |
|
| diagnostics |
| |
|
| collisions |
| |
|
| collision_tol |
| |
◆ __init__()
| def DOT_assignment.engine.Engine.__init__ |
( |
|
self, |
|
|
|
dim, |
|
|
|
dt = 0.1 , |
|
|
|
maxtime = 10 , |
|
|
|
collisions = False , |
|
|
|
collision_tol = 0.25 |
|
) |
| |
Engine constructor
Input:
- dim: simulation dimension (2D/3D)
- dt: engine tick size
- maxtime: simulation time
- collisions: collisions on/off
- collision_tol:collitions tolerance
Output:
◆ apriori_collisions()
| def DOT_assignment.engine.Engine.apriori_collisions |
( |
|
self, |
|
|
|
current_state, |
|
|
|
agents, |
|
|
|
targets, |
|
|
|
time |
|
) |
| |
computes apriori collisions between agents and targets in 2D/3D
# implements apriori (continuous) collision detection
# use bounding circles/spheres around each particle
# easy to calculate distances for circles
# more complicated shapes - use gilbert-johnson-keerthi algorithm (GJK)
◆ log()
| def DOT_assignment.engine.Engine.log |
( |
|
self, |
|
|
|
newdf |
|
) |
| |
logs simulation updates after each tick
◆ log_diagnostics()
| def DOT_assignment.engine.Engine.log_diagnostics |
( |
|
self, |
|
|
|
diag_df |
|
) |
| |
logs simulation diagnostic updates after each tick
◆ run()
| def DOT_assignment.engine.Engine.run |
( |
|
self, |
|
|
|
x0, |
|
|
|
system |
|
) |
| |
Main simulation loop
Input:
- x0: initial agent, target, target terminal states
- system: System which encapsulates the agent-target engagement
The documentation for this class was generated from the following file:


--- layout: page title: About header-img: "img/about-bg.png" ---
Doak Covington worked in the Health Care field before attending Flatiron School. His passions are skiing, coaching, and programming.


const findMicroservice = require(`./find_microservice`);
Arc loads resources for finding a microservice
const findMicroservice = require(`./find_microservice`);
Arc can get stats for a particular microservice
module.exports = ({microservices}) => {
return (request, response) => {
Arc gets the microservice slug from the request parameters
const { microserviceTitleSlug } = request.params;
Arc can respond with a json with stats for a microservice
const replyWithStats = (stats) => {
response.json(stats);
};
Arc can get microservice stats
const getMicroserviceStats = ({pool, manifest, title}) => {
return new Promise((resolve, reject) => {
Given Arc acquires a microservice from the pool
pool.acquire()
.then((microservice) => {
And Arc releases the microservice into the pool
pool.release(microservice);
When Arc gets the configurations stats from the microservice
const {settings, resource, maxLoad, process} = microservice;
And Arc gets the process stats from the microservice process
const {pid, connected} = process;
And Arc gets the pool stats from the microservice pool
const {size, available, borrowed, pending, max, min, spareResourceCapacity} = pool;
Then Arc will return the combined stats as a single object
resolve({
settings, resource, maxLoad, title, manifest,
process: {pid, connected},
pool: {size, available, borrowed, pending, max, min, spareResourceCapacity}
});
})
But Arc will return an error if an error is caught
.catch(() => {
reject(`Oops, let someone know there was an acquisition problem, sorry!`);
});
});
};
Given Arc finds the microservice using a slug
findMicroservice({microservices, microserviceTitleSlug})
When Arc gets stats for the microservice
.then(getMicroserviceStats)
Then Arc replies with microservice stats
.then(replyWithStats)
But Arc replies with an error if one was caught
.catch((error) => {
response.json({error: error.message ? error.message : error});
});
};
};


Title:
*
Short Title:
*
Subj.:
BLST
Num.:
Section.:
Year:
0910
Enrollment limit
Num.:
Rationale:
Class Meetings/Week:
Class Hours/Week:
Semester(s) Offered
- None -
First
Second
Third
Incl. semester in prereqs.
Offered only once
Incl. in printed catalog
Keywords:
Science for non-major
Fine arts for non-major
Lab science course
Artistic practice
Foreing language/culture taught in English
Community based learning
Writting attentive
Writting intensive
Consent required
Rationale:
Limit class level
Code:
Rationale:
How to handle over-enrollment:
Prerequisite
Rationale:
Required Prereqs.(major,course):
Recommended Prereqs.:
Approvals:
Date:
Comment:
CEP
Committee of Six
Faculty


One community.
Many continents.
Remote working
The pins on the map only tell part of the story. Mozilla has hundreds of paid and volunteer contributors who work from home. And we’re happy to support them however we can.
Office locations only tell part of the story. Mozilla has hundreds of paid and volunteer contributors who work from home. And we’re happy to support them however we can.
-
Mountain View
Mountain View
331 E. Evelyn Ave.
Mountain View, CA,
94041
USA
-
Auckland
Auckland
Level 7
5 Short St
Newmarket
Auckland 1023
New Zealand
-
Beijing
Beijing
Mozilla Online Ltd.
International Club Office Tower 800A
21 Jian Guo Men Wai Avenue
Chaoyang District, Beijing 100020
China
-
Berlin
Berlin
Mozilla Berlin
Haus 10, Treppe 6
Voltastr. 5
13355 Berlin
Germany
-
Boston
Boston
Mozilla Boston
281 Summer St, 5th floor
(member at Space with a Soul)
Boston, MA
02210
USA
-
London
London
101 St Martin’s Ln
Floor 3
London WC2N 4AZ,
UK
-
Paris
Paris
16 bis blvd. Montmartre
Paris 75009,
France
-
Portland
Portland
Brewery Block 2
1120 NW Couch St. Suite 320
Portland, Oregon
97209
USA
-
San Francisco
San Francisco
2 Harrison Street, Suite 175
San Francisco, CA,
94105
-
Taipei
Taipei
4F-A1, No. 106, Sec. 5,
Xinyi Rd., Xinyi Dist.,
Taipei City, 11047,
Taiwan
-
Tokyo
Tokyo
Roppongi 7-5-6
Minato-ku,
Tokyo 106-0032,
Japan
-
Toronto
Toronto
366 Adelaide St W, Suite 500
Toronto, Ontario
M5V 1R9
Canada
-
Vancouver
Vancouver
163 W Hastings St
Suite 209
Vancouver, BC
V6B 1H5
Canada
We are global in the truest sense, working around the world for people everywhere.


--- order: 1 title: Space Marine – Codex Astartes name: Codex Astartes Space Marine introduction: |
forces: - space-marine - imperial-navy - titan-legion using_the_army_list: | The following army list allows you to field an army based on one of the Space Marine Chapters that closely follows the teachings of the Codex Astartes. It can also be used as aThe Codex Astartes is the holy tome of these loyal Battle Brothers. The wisdom of the ancients is both scripture and the unbending rod by which they are measured. In war, they are fierce and as steadfast as those of old who stood beside the Emperor and broke the Legions of Horus. In faith and valour they are unmatched.  In their lives and in war, the Codex Astartes is their guide.
stand inarmy list for other Space Marine Chapters that do not follow the Codex Astartes, such as the Blood Angels, Dark Angels and Space Wolves. Space Marines are organised into small formations called _detachments_. Each detachment is made up of one or more units, and may also include a number of extra units called _upgrades_. The detachments that may be taken in a Codex Astartes army are shown on the chart that follows. The chart also shows what units comprise the detachment, what upgrades are allowed, and its points cost. For example, an Assault detachment consists of four Space Marine Assault units for 175 points, and may include the Commander and Vindicator upgrades at an additional cost in points. Each upgrade that is taken adds to the cost of the detachment, as shown on the _upgrade chart_. The upgrade chart also lists the units that make up the upgrade. Note that these will sometimes replace units in the detachment they are taken for, and sometimes takes the form of additional units for the detachment. Each upgrade may be taken once per formation. For example, an Assault detachment could include one Commander and one Vindicator. If both were taken it would cost 175 + 50 +75 = 300 points. Codex Astartes armies may be supported by Imperial Navy aircraft, Titan Legion battlegroup and Codex Astartes aircraft formations. A maximum of up to a third of the points available to the army may be spent on these formations. special_rules_text: | The _They Shall Know No Fear_ rule applies to all Codex Astartes detachment formations (see [_They Shall Know No Fear_](#they-shall-know-no-fear)). special_rules: - space-marine-transports ---
Codex Astartes Space Marine armies have a strategy rating of 5. Imperial Navy aircraft formations have an initiative rating of 2+. All other formations have an initiative rating of 1+.
| Formation | Units | Upgrades | Cost |
|---|---|---|---|
| Assault | Four Assault units | Commander, Vindicators | 175 points |
| Bike | Any five of the following units: Attack Bike, Bike | Commander | 200 points |
| Devastator | Four Devastator units plus transport | Commander, Dreadnoughts, Hunter, Land Raiders, Razorbacks | 250 points |
| Land Raider | Four Land Raiders | Commander, Hunter, Vindicators | 325 points |
| Land Speeder | Any five of the following units: Land Speeder, Land Speeder Tornado | Commander, Typhoons | 200 points |
| Landing Craft | One Landing Craft | None | 350 points |
| Predator | Any four of the following units: Predator Annihilator, Predator Destructor | Commander, Hunter, Vindicators | 250 points |
| Scout | Four Scout units plus transport | Commander, Razorbacks, Snipers | 150 points |
| 0–1 Strike Cruiser | One Strike Cruiser | Battle Barge | 200 points |
| Tactical | Six Tactical units plus transport | Commander, Dreadnoughts, Hunter, Land Raiders, Razorbacks, Vindicators | 275 points |
| Terminator | Four Terminator units | Commander, Dreadnoughts, Land Raiders, Vindicators | 350 points |
| Vindicator | Four Vindicators | Commander, Hunter | 225 points |
| Whirlwind | Four Whirlwinds | Commander, Hunter | 275 points |
| (Each upgrade may be taken once per detachment.) | |||
| Upgrade | Units | Cost | |
|---|---|---|---|
| Battle Barge | Replace the Strike Cruiser with a Battle Barge | +150 points | |
| Commander | Add any one of the following characters to any unit in the formation: | Captain, Chaplain, Librarian | +50 points |
| 0–1 Supreme Commander per army | +100 points | ||
| Dreadnoughts | Add up to two Dreadnoughts | +50 points each | |
| Hunter | Add one Hunter | +75 points | |
| Land Raiders | Add up to four Land Raiders | +75 points each | |
| +125 points per pair | |||
| Razorbacks | Add any number of Razorbacks, up to the number required to transport the formation | +25 points each | |
| Snipers | Give up to four Scout units Sniper | +10 points each | |
| Typhoons | Replace up to five Land Speeders with an equal number of Land Speeder Typhoons | +10 points each | |
| Vindicators | Add up to two Vindicators | +50 points each | |
| +75 points per pair |
| (Up to a third of the points available may be spent on these formations.) | ||||||||||||||||||||||||||||||
|


Most projects are unfortunately not public at the moment. If you’d like more details on stuff I’m working on please feel free to reach out and hopefully I can share!
Github
Post-Exploitation Ruby framework on top of metasploit. Also with a collection of exploitation and Command and Control resources. (Not currently public)
The website you’re on: Website
Published CVE’s
Windows priviledge escalation from freeSSHD process.
https://medium.com/@TheWindowsTwin/vulnerability-in-freesshd-5a0abc147d7a
Research
Post Exploitation opsec.
Underlying code not yet released.
Talk can be found here: https://www.derbycon.com/friday-schedule/#event-50


Preparation time
30 mins to 1 hour
Cooking time
10 to 30 mins
Serves
Serves 8-10
This pie is perfect for a Boxing Day feast: replace the meat with cooked turkey and ham to use up Christmas leftovers.
Equipment and preparation: for this recipe you will need a 900g/2lb loaf tin.
Preheat the oven to 200C/180C fan/Gas 6. Grease the base and sides of a 900g/2lb loaf tin with lard and line with baking parchment.
For the filling, place the eggs into a saucepan, cover with cold water and bring to the boil. Boil for 8 minutes, then drain and plunge into a bowl of cold water. Set aside until cooled, then peel. Trim the white from each end of the eggs so the yolk is just visible at each end. (This means that everyone will get a whole slice of egg in their piece of pie; the trimmed egg whites can be reserved for use in a salad or sandwiches.)
Mix the sausage meat, thyme and lemon zest together in a large bowl and season, to taste, with salt and freshly ground black pepper. Cover and set aside until needed.
For the hot-water crust pastry, sift the flour into a bowl.
Pour 100ml/3½fl oz of water into a saucepan, add the lard and salt, and bring to the boil, boiling until the lard has melted.
Gradually pour the boiling water and lard mixture over the flour, mixing well with a wooden spoon until the mixture comes together as a dough. Knead the dough in the bowl until smooth and pliant.
Cut off one-third of the dough, wrap it in cling film and set aside to use for the pie lid.
Turn out the remaining dough onto a lightly floured work surface and roll into a thin rectangle large enough to line the whole of the inside of the tin and reach over the edges slightly.
Line the tin with the pastry, pushing it into the base and corners and leaving a little hanging over the edges.
Using slightly wet hands, press one-third (about 150g/5oz) of the sausage meat mixture into the bottom of the pastry-lined tin. Put half of the dried pickled walnuts on top, then arrange half of the chicken strips down the sides and season, to taste, with salt and freshly ground black pepper.
Spread a thin layer (about 75g/3oz) of the remaining sausage meat mixture on top of the chicken and walnuts, then arrange the eggs, end to end, in a line down the middle of the tin, pushing them slightly into the sausage meat mixture. Cover the eggs with another 75g/3oz portion of the sausage meat mixture. Arrange the ham strips on top, across the length of the tin.
Cover the ham with another 75g/3oz layer of sausage meat, then sprinkle the remaining pickled walnuts on top. Arrange the remaining chicken strips on top, then cover with the remaining sausage meat mixture, pressing it down firmly to ensure the pie does not crumble when cut.
Roll out the reserved one-third of pastry onto a lightly floured work surface.
Brush some of the beaten egg over the overhanging pastry lining the tin. Cover the pie with the pastry lid, pressing to seal to the overhanging pastry. Trim and crimp the edges of the pastry. Make a small hole in the middle of the pastry lid to allow steam to escape.
Roll out any pastry trimmings and cut them into shapes to decorate the top of the pie, sticking them to the lid with a little beaten egg. Brush the top of the pie all over with the remaining beaten egg.
Transfer the pie to a baking tray, then bake in the oven for 25-30 minutes, or until light golde-brown. Reduce the oven temperature to 180C/160C Fan/Gas 4 and continue to bake for 1 hour, or until the pastry is deep golden-brown on top and the filling is cooked through.
Allow the pie to cool completely in the tin, then lift out of the tin using the baking paper lining. Peel away the baking paper and chill the pie in the fridge overnight.
To serve, cut the pie into thick slices and serve cold.


#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include "slu_scomplex.h"
Functions | |
| void | c_div (complex *c, complex *a, complex *b) |
| Complex Division c = a/b. | |
| double | c_abs (complex *z) |
| Returns sqrt(z.r^2 + z.i^2). | |
| double | c_abs1 (complex *z) |
| Approximates the abs. Returns abs(z.r) + abs(z.i). | |
| void | c_exp (complex *r, complex *z) |
| Return the exponentiation. | |
| void | r_cnjg (complex *r, complex *z) |
| Return the complex conjugate. | |
| double | r_imag (complex *z) |
| Return the imaginary part. | |
| complex | c_sgn (complex *z) |
| SIGN functions for complex number. Returns z/abs(z). | |
| complex | c_sqrt (complex *z) |
| Square-root of a complex number. |
-- SuperLU routine (version 2.0) -- Univ. of California Berkeley, Xerox Palo Alto Research Center, and Lawrence Berkeley National Lab. November 15, 1997
This file defines common arithmetic operations for complex type.
| double c_abs | ( | complex * | z | ) |
| double c_abs1 | ( | complex * | z | ) |
| double r_imag | ( | complex * | z | ) |


House Shimokitakata / n.yamada architect & associates
- Curated by Paula Pintos
- about 1 hour
Sustainability · Miyazaki, Japan
- version="1.0" encoding="UTF-8"? Architects: n.yamada architect & associates
- AreaArea of this architecture projectArea: 69.01 m2
- version="1.0" encoding="UTF-8"?YearCompletion year of this architecture project Year: 2014
- version="1.0" encoding="UTF-8"?PhotographsPhotographs: Atsushi Nakamichi, Tomooki Kengaku
Text description provided by the architects. This architecture is located in Miyazaki Prefecture, Japan, which has a long confortable temperature period, and is examining the relationship between the inside and outside of the building, including the outside garden. Instead of spending the entire budget just for construction, we first plan to have enough space for two couples to live. If child is born, we are planning to arrange it in the north side garden while considering the room where children's rooms and workrooms can be added. I'm aiming at the flexible construction with which growth in a garden and the family's growth agree.
Miyazaki Prefecture is relatively warm even in winter and is characterized by high sunshine and precipitation throughout the season. The large roof of the eaves prevents strong summer sunshine and protects the building from rain. The cedar board of the outer wall has an exterior that has been here since ancient times, and stucco is used for the wall and ceiling in the building, and the cedar board is used for the floor.
It is a size that can be warmed by one air conditioner under the floor by being an airy indoor space city. In summer, an irrigation pipe attached to the south spreads natural water (well water) pumped from a well in the site, and is expected to have an effect of heat of vaporization.


'UTTERLY SHOCKING'
Scots health chiefs warned of major infection control failings at crisis-hit hospital two weeks before two patients died
by Graham MannHEALTH chiefs were warned of major infection control failings at a crisis-hit hospital weeks before two patients died, it has emerged.
Tory MSP Miles Briggs branded the Health and Safety Executive papers “utterly shocking” after they raised concerns for staff and the public.
It came amid claims bosses could’ve faced criminal charges over the scandal at Glasgow’s Queen Elizabeth Uni Hospital.
Shadow health secretary Mr Briggs said: “We have a duty of care to patients and our NHS staff. This shows a complete lack of that. It’s utterly shocking.”
The November 2018 report listed numerous problems linked to training staff.
An accompanying letter demanded urgent action to protect workers, patients and the public.
But within weeks two had died from bugs linked to pigeon droppings.
And on Sunday, it was claimed 10 more infections linked to contaminated water were identified as far back as 2016.
Top bacteriologist Professor Hugh Pennington, of Aberdeen Uni, said: “I’m astonished that NHS Greater Glasgow and Clyde did not face criminal charges or other tough sanctions.
"The consequences could be disastrous.”
Health Secretary Jeane Freeman said she’d not seen the report, adding: “I think I should be informed when HSE issues serious compliance notices.”
A health board spokeswoman said they implemented an action plan last December.


External Commands¶
All commands in this section rely on another tool or piece of software.
The scripts therein collectively automate use of git,
Neovim, conda, and IPython
.
g
¶
g — Programmatically work with subprocess’ and Git.¶
This module intends to build a base class through subprocesses in order to build up a trimmed-down, and more importantly safer Git object.
Subprocess and Git¶
Currently we need to move some module functions into our BaseCommand class. I don’t want it to attempt implementing too much however. But it should have a method that checks output in the way that our module function does for the git rev-parse expression that sets up the git root.
You know what would be nice? Run the following commands in one.
git branch -d foo
git branch -rd origin/foo
git push origin :foo
There’s no reason that that’s 3 commands with differing syntax.
All you need to do is check if the branch exists both locally and remotely and kill everything.
-
class
pyutil.g.
Git
(root=None, **kwargs)[source] Bases:
pyutil.shell.BaseCommand
Create a base class for working with Git in Python.
For the time being we only really need to run the
g.BaseCommand.run()
What other parameters do we need to pay attention to? State that would be useful to grab? Silencing the warnings aboutversion
is a start. So I guess learning how to properly initialize a class.-
_check_output
(self, cmd, \*\*kwargs)[source] Checks output from a subprocess call.
-
_get_git_root
(self)[source] Show the root of a repo.
-
static
_quote
(self, cmd)[source] Which one of these two is preferable?
-
_quote_cmd
(self, cmd)[source] Maybe this should be in the parent class?
-
get_git_upstream_remote
(self)[source] Get the remote name to use for upstream branches.
- Returns
str – Uses “upstream” if it exists, “origin” otherwise
- Return type
Remote git server
-
property
version
[source] Return the version of Git we have.
-
-
class
pyutil.g.
Other
(root=None, version=None)[source] Bases:
object
Toy code always refers to other I.E. self != other. Let’s write other!
Haha just kidding. I’m testing out Git but one that doesn’t subclass anything because the parent class is having problems
-
_get_git_root
(self)[source] Show the root of a repo.
-
-
pyutil.g.
get_git_branch
()[source] Get the symbolic name for the current git branch.
Nvim Profiler¶
Attaching to a remote instance from the REPL¶
The below code displays how to attach to a remote neovim instance.:
>>> if not os.environ.get('NVIM_LISTEN_ADDRESS'): # we have no running nvim
>>> subprocess.run(['nvim&']) # are we allowed to do this?
>>> import pynvim
>>> vim = pynvim.attach('socket', path=os.environ.get('NVIM_LISTEN_ADDRESS'))
>>> vim.command('edit $MYVIMRC')
>>> vim_root = vim.current.buffer
Finding the initialization file to profile¶
Here’s the help documentation on how to find an init.vim
file
assuming it’s placed in the standard location I.E. ~/.config/nvim
or
USERPROFILE
\AppData\Local\nvim.
stdpath({what}) *stdpath()* *E6100*
Returns |standard-path| locations of various default files and directories.
{what} Type Description ~
cache String Cache directory. Arbitrary temporary
storage for plugins, etc.
config String User configuration directory. The
|init.vim| is stored here.
config_dirs List Additional configuration directories.
data String User data directory. The |shada-file|
is stored here.
data_dirs List Additional data directories.
Example:
:echo stdpath("config")
Roadmap¶
In the future this module is going to move towards implementing a command that will behave similarly to the following command run in the shell:
nvim --startuptime test.txt test.py test.txt -c"bn"
# Also we could make the base command
nvim --clean --startuptime foo.log example_module.py foo.log -c'bn'
Nvim API Docs¶
Automate profiling nvim.
-
class
pyutil.nvim_profiling.
Neovim
[source]¶ Bases:
object
Instantiate a connection to neovim if it’s running, establish the path if not.
Todo
Utilize __new__ to establish a Global Object.
-
pyutil.nvim_profiling.
get_log_file
(nvim_root)[source]¶ Profile nvim.
- Parameters
nvim_root (str) – The directory where nvim’s configuration files are found.
- Returns
profiling_log_file – Creates file based on the current time in ISO format profiling nvim.
- Return type
Todo
Allow the
test.py
file that we use for startup to be configured.
-
pyutil.nvim_profiling.
output_results
(output_dir)[source]¶ Checks that an directory named profiling exists.
IPython has a function in
IPython.utils
that I believe is called ensure_dir_exists. Do we provide anything that that implementation doesn’t?- Parameters
output_dir (str) – Directory to store profiling results in.
- Returns
- Return type
Bool
Shell¶
Base class for shell commands.
Aug 11, 2019:
To make the interface more consistent it may help a lot to check out the link here.
The lead into the explanation for abstract base classes particularly was really informative.
In it’s current state the Command class is unusable but the
BaseCommand
class is interesting and a good starting point.
-
class
pyutil.shell.
BaseCommand
(cmd=None)[source]¶ Bases:
object
Create a base command class.
Pass
cmd
tosubprocess
and process output and build in logging.-
popen
(self, cmd=None)[source]¶ Execute the required command in a subshell.
First the command is split using
shlex
.A new process is created, and from the resulting subprocess object the
subprocess.Popen().wait()
is invoked.When the subprocess returns, any non-zero value will lead to a
SystemExit
with a passed value ofreturncode
. If we don’t need to capture output, check the return code.- Parameters
cmd (list, optional) – cmd to run in subprocess
- Returns
process.returncode – Output from subprocess.
- Return type
- Raises
subprocess.CalledProcessError – If there is an error in the command.
-
run
(self)[source]¶ Run a safer subprocess.
- Parameters
cmd (list, optional) – cmd to run in subprocess
*args (list of str) – Command and parameters to be executed
- Returns
output – Output from subprocess. Can return
NoneType
if nocmd
.- Return type
Examples
>>> BaseCommand(['ls']).run() ... CompletedProcess(args='ls', returncode=0...)
-


About HipSci
The Human Induced Pluripotent Stem Cells Initiative (HipSci) is generating a large, high-quality reference panel of human iPSC lines for the research community.
HipSci stands apart from other iPSC projects in a number of respects:
- Magnitude – HipSci is systematically generating iPSCs from hundreds of donors using a standardised experimental pipeline.
- Cell line availability – HipSci’s cell lines are produced as a global iPSC resource. The cell lines are readily available from two cell banks (ECACC and EBiSC), for use by the wider research community.
- Cohorts – HipSci’s reference panel comprises hundreds of cell lines from phenotypically healthy donors, plus several cohorts of donors with inherited genetic diseases.
- The data – – Each line generated is extensively characterised. Assays include genotyping by array, expression array, methylation array, RNA-seq, Exome-seq, proteomics mass spectrometry, and high content cellular phenotyping.


(1) Why did you contact customer service?
(2) What method did you use to contact customer service?
Landline Cellphone Mail E-mail Fax Other(3) How satisfied are you with the time it took customer service
to answer your question or resolve your concerns?
Please indicate how you agree or disagree with the following statements:
(4) The customer service representative was knowledgeable and easy to understand.
Strongly Agree Agree Disagree No Comment(5) The customer service representative was able to handle my problems quickly.
Strongly Agree Agree Disagree No Comment(6) The customer service representative has treated me with respect.
Strongly Agree Agree Disagree No Comment(7) The customer service representative was courteous and professional.
Strongly Agree Agree Disagree No Comment(8) The customer service representative was helpful.
Strongly Agree Agree Disagree No Comment


Cryptocurrency and the Internet of Things
Core: Debian based OS with integrated Bitcoin OK Clients, Nodes and Open Bazaar server ready for use.
ROKOS v8 "Core" for Raspberry Pi 2, 3, and IoT Devices.
Full Bitcoin OK Clients, nodes and much more. Faster, Easier, Stronger.
We support the new technology and uses for cryptocurrencies in the Raspberry Pi , Banana Pro, Pine64+ and IoT environments, hence we came up with a Free solution for every IoT enthusiast, developer, user, service that want to use their IoT devices with Bitcoin and OK, or that would like to turn their Pi into a Staking device.
ROKOS comes with a fully functional Bitcoin Full node client among other goodies and provides the users with the best and easier Out of the Box experience; The favorite toolbox for developers and new users alike.
The First OS image release that merges the full power of Raspberry Pi zero, 2, 3, Banana Pro, Pine64+ & IoT Devices with Bitcoin OK and Cryptocurrencies:
- ROKOS v8 "core" comes with integrated OK and Bitcoin Client / node, OpenBazaar server, Dev tools, cgminer deps, etc.
Distribution aimed for everyone, from new IoT users to IoT Developers, Ease of use Out of the Box.
Download & Burn, Ready for use.
Requirements:
ROKOS v8 "core":
- Raspberry Pi 2, 3. - ready for download
- Pine64+ - ready for download
- Banana Pro - ready for download
- Min 16gb SD card and an External device (usb / hdd / ssd). To sync the BTC chain on the external device instead of the SD card, BTC chain alone is around 110gb.


import Layout from './layout' import List, {Item as TestItem} from './layout/list' import * as Icons, {Save} from './icons' @find h1 span @remove Test title @prepend Test text Item @find i.close X @append OK @empty


Include nested team content in team payloads.
Custom media type: hellcat-preview Announced: 2017-09-01
hellcat-preview


The CloudCoin Consortium was setup to enable the world to use CloudCoins free of charge. We have many developers who share their work with us.
You are free to use this software and modify it so long as you are not creating malware.
If you have any questions or concerns, please email<EMAIL_ADDRESS>We are working frantically to create great client-side software.
{ "networks":[ {"nn":1, "raida":[ {"raida_index":0, "failsEcho":"false","failsDetect":"false","failsFix":"false","failsTicket":"false","location":"au", "urls":[ {"url": "raida0.cloudcoin.global","port": 443,"milliseconds": 700} ]}, {"raida_index":1, "failsEcho":"false","failsDetect":"false","failsFix":"false","failsTicket":"false","location":"mk", "urls":[ {"url": "raida1.cloudcoin.global","port": 443,"milliseconds": 700} ]}, //RAIDA 2 though 23 left out for space. {"raida_index":24, "failsEcho":"false","failsDetect":"false","failsFix":"false","failsTicket":"false","location":"ca", "urls":[ {"url": "raida24.cloudcoin.global","port": 443,"milliseconds": 700} ]} ] },


Once you have pccom running on the target machine, you can invoke
pcget
on the development machine to yank a file from the target machine to the development machine.
Normally you would just type
pcget goemon.gif
to retrieve a file from the target machine's current directory or
pcget ..\clipart\jigen.gif
to retrieve it from another directory. To use different speed settings than the
pccom
tool would normally use (the
pccom
tool's settings are normally determined by the PTTY environment variable), you may pass /b, /c, and /I flags, as you did when invoking the
pccom
tool. The /b flag sets the baud rate (e.g. "/b:19400"); the /c: flag sets the com port (e.g. "/c:3"), and the /I flag sets the IRQ level (e.g. "/I:3"). Note that these flags may be indicated with "-" instead of "/").


*unWined: to unwind with friends and wine
Women unWined wants to connect the next generation of professional women in Miami. We wine, dine, and unwind about life and business or as we call it “unWined”. Join to cultivate new friendships, in joy of curated wines and even more curated topics.
Women UnWined aims to inspire collaboration between professional like-minded women. Started by Daniela Hernandez and friends at Studio Uni, the monthly gathering is limited to a small group of ladies. If you’re a female entrepreneur or student and would like to join, please check the dates below.
sign up and receive alerts for new dates and topics
For partnership opportunitites please contact us at info@weunwined.com


Featured Content
HTML5 The Cheat Sheet
A Definitive Guide to Tags and Semantics
See The Full Project
Regex-what?
Intro to Regular expressions
As week-8 ends we’re one step closer to the end of phase-0 and the start of DBC’s onsite curriculum. We’ve covered numerous topics and even had our stints with Ruby and JavaScript and while nothing compares to learning the basics there are some more advanced concepts that we haven’t touched on.
Read the Full Post


Dataflow: Interest calculator¶
HPX provides its users with several different tools to simply express parallel concepts. One of these tools is a local control object (LCO) called dataflow. An LCO is a type of component that can spawn a new thread when triggered. They are also distinguished from other components by a standard interface which allow users to understand and use them easily. A Dataflow, being an LCO, is triggered when the values it depends on become available. For instance, if you have a calculation X that depends on the results of three other calculations, you could set up a dataflow that would begin the calculation X as soon as the other three calculations have returned their values. Dataflows are set up to depend on other dataflows. It is this property that makes dataflow a powerful parallelization tool. If you understand the dependencies of your calculation, you can devise a simple algorithm which sets up a dependency tree to be executed. In this example, we calculate compound interest. To calculate compound interest, one must calculate the interest made in each compound period, and then add that interest back to the principal before calculating the interest made in the next period. A practical person would of course use the formula for compound interest:
where \(F\) is the future value, \(P\) is the principal value, \(i\) is the interest rate, and \(n\) is the number of compound periods.
Nevertheless, we have chosen for the sake of example to manually calculate the future value by iterating:
and
Setup¶
The source code for this example can be found here:
interest_calculator.cpp
.
To compile this program, go to your HPX build directory (see HPX build system for information on configuring and building HPX) and enter:
make examples.quickstart.interest_calculator
To run the program type:
./bin/interest_calculator --principal 100 --rate 5 --cp 6 --time 36
This should print:
Final amount: 134.01
Amount made: 34.0096
Walkthrough¶
Let us begin with main, here we can see that we again are using
Boost.Program Options to set our command line variables (see
Asynchronous execution with hpx::async and actions: Fibonacci for more details). These options set the principal,
rate, compound period, and time. It is important to note that the units of time
for cp
and time
must be the same.
int main(int argc, char ** argv)
{
options_description cmdline("Usage: " HPX_APPLICATION_STRING " [options]");
cmdline.add_options()
("principal", value<double>()->default_value(1000), "The principal [$]")
("rate", value<double>()->default_value(7), "The interest rate [%]")
("cp", value<int>()->default_value(12), "The compound period [months]")
("time", value<int>()->default_value(12*30),
"The time money is invested [months]")
;
return hpx::init(cmdline, argc, argv);
}
Next we look at hpx_main.
int hpx_main(variables_map & vm)
{
{
using hpx::shared_future;
using hpx::make_ready_future;
using hpx::dataflow;
using hpx::util::unwrapping;
hpx::naming::id_type here = hpx::find_here();
double init_principal=vm["principal"].as<double>(); //Initial principal
double init_rate=vm["rate"].as<double>(); //Interest rate
int cp=vm["cp"].as<int>(); //Length of a compound period
int t=vm["time"].as<int>(); //Length of time money is invested
init_rate/=100; //Rate is a % and must be converted
t/=cp; //Determine how many times to iterate interest calculation:
//How many full compound periods can fit in the time invested
// In non-dataflow terms the implemented algorithm would look like:
//
// int t = 5; // number of time periods to use
// double principal = init_principal;
// double rate = init_rate;
//
// for (int i = 0; i < t; ++i)
// {
// double interest = calc(principal, rate);
// principal = add(principal, interest);
// }
//
// Please note the similarity with the code below!
shared_future<double> principal = make_ready_future(init_principal);
shared_future<double> rate = make_ready_future(init_rate);
for (int i = 0; i < t; ++i)
{
shared_future<double> interest = dataflow(unwrapping(calc), principal, rate);
principal = dataflow(unwrapping(add), principal, interest);
}
// wait for the dataflow execution graph to be finished calculating our
// overall interest
double result = principal.get();
std::cout << "Final amount: " << result << std::endl;
std::cout << "Amount made: " << result-init_principal << std::endl;
}
return hpx::finalize();
}
Here we find our command line variables read in, the rate is converted from a
percent to a decimal, the number of calculation iterations is determined, and
then our shared_futures are set up. Notice that we first place our principal and
rate into shares futures by passing the variables init_principal
and
init_rate
using hpx::make_ready_future
.
In this way hpx::shared_future
<double>
principal
and rate
will be initialized to init_principal
and init_rate
when
hpx::make_ready_future
<double>
returns a future containing
those initial values. These shared futures then enter the for loop and are
passed to interest
. Next principal
and interest
are passed to the
reassignment of principal
using a hpx::dataflow
. A dataflow
will first wait for its arguments to be ready before launching any callbacks, so
add
in this case will not begin until both principal
and interest
are ready. This loop continues for each compound period that must be calculated.
To see how interest
and principal
are calculated in the loop let us look
at calc_action
and add_action
:
// Calculate interest for one period
double calc(double principal, double rate)
{
return principal * rate;
}
///////////////////////////////////////////////////////////////////////////////
// Add the amount made to the principal
double add(double principal, double interest)
{
return principal + interest;
}
After the shared future dependencies have been defined in hpx_main, we see the following statement:
double result = principal.get();
This statement calls hpx::future::get
on the shared future
principal which had its value calculated by our for loop. The program will wait
here until the entire dataflow tree has been calculated and the value assigned
to result. The program then prints out the final value of the investment and the
amount of interest made by subtracting the final value of the investment from
the initial value of the investment.


All Classes
Packages
com.amadeus
com.amadeus.airport
com.amadeus.airport.predictions
com.amadeus.analytics
com.amadeus.booking
com.amadeus.client
com.amadeus.dutyOfCare
com.amadeus.dutyOfCare.diseases
com.amadeus.ereputation
com.amadeus.exceptions
com.amadeus.location
com.amadeus.location.analytics
com.amadeus.media
com.amadeus.referenceData
com.amadeus.referenceData.locations
com.amadeus.referenceData.locations.hotels
com.amadeus.referenceData.locations.pointsOfInterest
com.amadeus.referenceData.urls
com.amadeus.resources
com.amadeus.safety
com.amadeus.safety.safetyRatedLocations
com.amadeus.schedule
com.amadeus.shopping
com.amadeus.shopping.activities
com.amadeus.shopping.availability
com.amadeus.shopping.flightOffers
com.amadeus.travel
com.amadeus.travel.analytics
com.amadeus.travel.analytics.airTraffic
com.amadeus.travel.predictions


The decades-long and still ongoing debate about the identity of Boston’s so-called newest neighborhood starts with its name.
As the city hotly debated a master plan to develop the South Boston waterfront, City Council President James M. Kelly pushed back, believing that it would negatively impact local working families already in Southie. "We don't need a whole new neighborhood. We already have a neighborhood," Kelly told the Boston Herald in 1998.
Mayor Thomas M. Menino finally ordered the Seaport District to be officially known as the South Boston Waterfront in June 1999 as a result of Kelly’s objection.
Years later, the fight intensified again as an increasing number of shiny new buildings rose rapidly on top of what was previously abandoned warehouses and parking lots.
Michela West, for example, grew up and Boston and recalls seeing how sparse the neighborhood used to be. “I remember when there was nothing around here but construction,” she said.
Now 20, West works at the gift shop in the Institute of Contemporary Art, and witnesses firsthand how quickly things are changing.
To see it, even five years later, with all these new buildings is such as strange thing. It’s weird how fast this part of Boston has developed.
– Michela West, 20, Brighton resident and ICA employee
When developers closed a $200 million deal near Pier 4 called the “Seaport Development Project” in 2006, Southie leaders pushed to preserve the name the harborfront as an extension of their nearby residential neighborhood, according to a Herald report at the time.
Much of the revitalization — or gentrification, as some see it — is a result of Menino prioritizing development of the Seaport during his tenure as mayor. He dubbed it the “Innovation District” in 2010 in a push to create a tech hub rivaling Cambridge. In the years leading up, he had also been a strong proponent for getting the now iconic Institute of Contemporary Art and massive Boston Convention and Exhibition Center built there.
These days, official city documents and websites refer to the area as the “South Boston Waterfront.” However, the simpler, trendier “Seaport” is the everyday name for the neighborhood now known for gleaming office buildings, upscale hotels with harbor views, and tourist attractions. That distinction from South Boston and other older established neighborhoods in terms of demographics and perception manifests particularly in the area’s accessibility from nearly anywhere else in the city.
Despite the Seaport’s proliferation of cultural institutions and recreational activities, its limited public transportation and pricey venues disenfranchise many of the locals it was intended to serve.
For example, the Seaport is only serviced by one train — the Silver Line with three stations — and only two bus routes run through the neighborhood.
West lives in the Allston/Brighton area and said it’s only through a combination of a bus and two trains that she gets to work every weekend. It takes an hour each way.
That lack of transportation is exacerbated by the increased traffic and congestion that development inevitably brings. All these challenges make the Seaport’s alluring new restaurants and recreational activities inaccessible to many residents of Boston.
If a student biked from Northeastern University to the Institute of Contemporary Art, the three and a half mile trip would take only 25 minutes. According to a 2015 study of transportation in the Seaport, 14 percent of trips originated from this area — Boston’s “core” — which includes everywhere from the North End to Mission Hill.
But the journey would also include a perilous ride across one of three bridges. Two force riders to choose between biking on the often crowded pedestrian sidewalk or squeezing in next to zooming traffic. One has a narrow bike lane. Once across the bridge, the Seaport only has three miles of bicycle paths and offer “limited” bike parking options, according to the study.
If a family of four who lived farther — for example from Somerville — wanted to enjoy a Saturday at the Boston Children’s Museum, their trip might include a 20 to 30-minute walk to a red line shuttle bus, because the Red Line, which departs every 15 minutes, doesn’t run between Harvard and Alewife on weekends. They would also have to skip the stroller since elevators at Harvard station are out of service this month.
Dropped off at South Station, the family would spend another 10 minutes walking across a bridge. 9 percent of trips to the Seaport originate from the Cambridge/Somerville area, but the nearest Red Line stop is 8 minutes away. Their trip would cost $18 in transportation alone, not accounting for the city’s proposed fare hike for this summer.
Although North Station is a popular transportation hub, it is still a trek to reach the Seaport. If someone visiting Boston wanted to go to the Convention Center from North Station, the trip would take 25 minutes — transfer from the Orange Line to the Red Line, and then a 15 minute walk. The convention visitor could also opt to the take Silver Line instead of walking, but they would be relegating themselves to buses that are at 123 percent of maximum capacity during rush hour, according to the study.
One could also venture a trip on the ferry, which just opened earlier this year. It takes 20 minutes to ride from Lovejoy Wharf near North Station to Fan Pier in the Seaport. However, currently the ferry only allows five seats at $12 each for the commuting public — the rest are reserved for employees of copmanies in the Seaport, who ride for free.
Though someone who works in the Seaport might have the option driving, for example from Brookline to a Seaport office, it would mean maneuvering to find parking in lots that are at 80 percent capacity during peak hours and often cost $30 for just a few hours.
Josh O’Mara and Madison Gonzalez, who were visiting from New Jersey and staying in Quincy, were a little luckier. They found street parking, though it was still $15 for all-day parking on a Sunday.
Still, some of the lots they drove past were full. Though they were only making a weekend trip to Boston, they opted not to visit other neighborhoods since parking was so tough to find.
There are also a fortunate few who work for corporations that provide private shuttle buses to the Seaport. The study, however, identified that the redundant shuttle routes leave others with “roadway congestion and increased emissions.”
Lindsay Leavitt and Daryn Decesare spent their Sunday with their children, 2 and 3 months, on the greens outside of the ICA. Leavitt, who lives in Southie, said that she chose to switch daycares due to the long trip to the Seaport.
I would pick [my son] up in the car … and it’s a drive, and it would take me 30. Just because you’re dealing with all the commuters.
– Lindsay Leavitt, 35, Southie resident
If you do manage to find transportation to the neighborhood, you might find yourself in a neighborhood with recreational activities that, though designed for the public, are often too pricey to afford.
Finding activities to do transcends every cross section of person there is. Whether you’re a family looking for kid-friendly fun, a young adult or an art enthusiast, cities try to create entertainment to please everyone and Boston is no exception.
The Institute of Contemporary Art was one of the first big attractions in the Seaport. With one of the best views of the harbor in the city, hundreds of thousands of people visit over a dozens rotating exhibits each year, and it is an ideal attraction for families, young adults, and art lovers.
O’Mara and Gonzalez, the tourists from New Jersey, chose to go to the Seaport solely because they were looking for interesting Boston museums, but museum prices are often a limiting factor. General admission to the ICA would have $15 for each person, with discounted $10 tickets for students, but O’Mara and Gonzalez only paid $8 because the museum is under construction.
After paying for transportation to get to the ICA and a meal, the costs add up. Although the museum offers discounts such as free tickets for ICA members, free tickets for children under 18, and free admission on Thursdays, each of those offers disenfranchises a different group of people, leading them to look for other activities to do. Museum membership is a annual fee starting at $65 each year. Free entry for children helps somewhat, but the adults accompanying them will still have to pay. While free entry on Thursday nights can benefit many, it doesn’t work for people working evenings in food service or retail.
The Lawn on D would be a great alternative. The aesthetically appealing outdoor hangout has quickly become an Instagram-worthy hot spot for young adults, and its free price tag makes it even more enticing. The lack of accessibility, however, makes it difficult for a lot of young people to go. The closest subway stop is not even in the Seaport, and the closest Silver Line and local bus stops are those serving the Boston Convention & Exhibition Center. That venue poses its own problems.
BCEC often hosts conventions with a hefty price tag. Typically starting at $50 per person, many who come from disenfranchised communities cannot afford to go to these events. The center has also been criticized for a layout that makes it very difficult for families with young children and people with disabilities to navigate it. Compared to other convention centers, some find the signage confusing, especially since there is only one bathroom with nursing facilities in the entire center.
The convention center’s events are usually designed for teens and adults, leaving parents of young children looking to go to the nationally-ranked Boston Children’s Museum. Tickets are $17 for all visitors over 12 months old, with members getting free admission. The similarly acclaimed Houston Children’s Museum is $12. The seaport’s attraction could easily be too much of a strain for a family, especially since people need to eat.
After tech companies and startups, the Seaport is probably best-known for its restaurants. From the high-class Morton’s The Steakhouse to the Harpoon Brewery, the Seaport is touted as the home of restaurants to accommodate every taste.
That “something for everyone” quality doesn’t extend to socioeconomic status, though.
Parents Leavitt and Decesare had gone on their stroll after brunch at Row 34, where entrees range from $12 for lettuce cups to $24 for a Shrimp Hash. “For us, it’s actually pretty convenient,” Leavitt said. Brunch is a fairly regular weekend outing for them.
Aside from fine dining, “fast casual” restaurants dominate the Seaport. These restaurants offer quick but healthier choices and often cater to the large population of millennials and Gen Xers working in the Seaport. While these restaurants may help workers stick to their nutrition goals, it can be difficult to eat a filling meal for under $10. At Flour Bakery + Cafe, a well-loved local chain, the cheapest entree item is a $9.50 sandwich. Healthy fast-food chain b.good’s cheapest entree has a friendlier $6.99 price tag, but the item is a standard burger with lettuce, tomato, onions, and pickles. Once fries and a drink are added, the price jumps to $12.27 without tax. Asking growing pre-teens to eat a plain hamburger for lunch might seem unfair, but it could be necessary for a family of four that can’t spend $50 on lunch.
While the potentially-deceiving lack of combo discounts can happen in any neighborhood, this happens more often in the trendy, fast-casual restaurants that dominate the Seaport. There is a b.good on Northeastern’s campus, neighbors with the even more expensive European cafe Tatte. Down the street, however, are Amelia’s Taqueria, where a large burrito is $8.25, and Boston Shawarma where falafel sandwiches start at $7.50. While they aren’t as healthy or trendy, these restaurants offer hearty meals that could save a family a lot of money.
Additionally, the Seaport’s sit-down scene is almost entirely fine-dining. In other trendy parts of the city like Fenway, couples can have a nice sit-down experience for $30. At Sweet Cheeks Q, the $26 Fat Cheeks Tray could feed two people. Among the Seaport’s best restaurants, however, the cheapest entrees would put you past $30 for two people, and they are almost universally some version of a house or Caesar salad. A middle-class couple looking to treat themselves after a day at the museum would be forced to limit themselves to soup and salad or spend at least $50.
Hover over the circles below to learn more about restaurant costs and locations in the Seaport.
The first, and perhaps most important step, to making the Seaport more accessible is to improve transportation options to the district. The bus/subway hybrid of the Silver Line and a handful of local buses routes are the only public transit options, and the local buses often don’t run when a major event is in town. With Silver Line connections to the Red and Blue Lines, people living near the Orange and Green lines, including many of Boston’s lower-income families, are forced to transfer twice to take public transit into the district.
One way to increase accessibility would be to extend the SL2 to Downtown Crossing. This would connect the Seaport to the other two subway lines, via the Winter St. Concourse in the case of the Green Line. While one or two stops on the Red Line may not discourage college students headed to a convention, a second transfer is a serious hassle for families with young children and no car. New underground construction is seriously expensive, but it would open up the Seaport to a host of people who have ruled it out as inconvenient. The spending power of young professionals in Jamaica Plain is equal to those living in Somerville, who will see a Green Line extension in the coming years. Why wouldn’t we add this single stop – below or above ground – to connect the other half of the city with an area that’s being increasingly developed?
Additionally, the Seaport’s sidewalks should be designed to accommodate all. From narrow sidewalks on bridges and overpasses to sidewalks surrounded by scaffolding for never-ending construction, there are many places in the Seaport where strollers and wheelchairs wouldn’t fit through. Leavitt and Decesare said that taking Atlantic Avenue would be the most convenient route for them, except it ends abruptly on a commercial road at one side, forcing their family to turn around.
This has been a complaint of mine: That bridge that's not working between Seaport and Atlantic Ave, it would be great if they turn that into a more accessible pedestrian walkway similar to what the High Line is in New York City.
– Daryn Decesare, 36, Southie resident
As a newly constructed neighborhood, there’s no excuse for street infrastructure that excludes people with strollers or mobility aids. Those who can’t wander around looking for restaurants or attractions won’t feel comfortable planning a full day in the Seaport.
Lastly, restaurants, museums, and other attractions can collaborate to offer discount days designed for students and families who normally couldn’t afford a day in the district. The ICA already offers free admission for all on Thursday nights, and free admission for two adults with a child under 13 years old on the last Saturday of the month. Why couldn’t they collaborate with some of the fast-casual restaurants nearby to offer discounted family meals to people who show their ICA ticket? Add a fun outdoor activity at the Children’s Wharf Park (and maybe discounted Children’s Museum tickets) and there’s a fun night for families at a reasonable budget.
The Seaport is full of innovation and excitement that makes Boston better, however, it’s difficult for many residents to enjoy it. With a few thoughtful changes, we could make it the new playground for the whole city.
Thanks to our professor Steven Braun for all his guidance and inspiration, and to ZevRoss.com for the D3 animation tutorial.


channel.25c5c7 __
channel.4a4746 __
octree __
channel.e2ccc5 __
binary __
channel.f5ce2f __
channel.9e7063 __
channel.756f86 __
channel.967b8d __


We embody everything you love about your favourite local bookshop, perfected for your modern life. Our mission is to bring the power of reading to your world — because we’re booklovers, just like you. Why do we do it? Because we believe stories shape who we are, and words can enhance and transform the world around us.
Take a Tour


{% extends "template.html" %} {% block body %}
For many reasons it can be advantegeous to run the analysis locally on your own computer. Here we describe how to get the current databases (SWEET-Cat and exoplanet.eu) and to combine them in Python
Before getting any further, please get the two databses below by clicking the buttons. Note that the data is updated on a weekly basis if any new planets are found, or homogeneous stellar parameters are added. If you already have a working python enviroment, chances are that you do not need to worry about any special requirements. However, we also make the list of Python packages available in the table below ready for download. Last you will need the script also provided in the table below.
| SWEET-Cat | Exoplanet.eu | Requirements | Script |
|---|---|---|---|
| SWEET-Cat.csv | exoplanetEU.csv | requirements.txt | sweetcat.py |
It is important to combine the two data sets if into one combined data set. This is done by comparing the stellar names. To do this use the script provided above.
Simply place the script, the requirement file, and the two data sets in the same
working folder and run:
$ python sweetcat.py -h
to see some help text.
If you have any problems running the script, then you might have to install any
missing dependencies:
$ pip install -r requirements.txt
If this does not resolve the issue, then feel free to contact us.


|
EmberZNet API Reference: For the EM35x SoC Platform
EmberZNet <IP_ADDRESS>
For the EFR32 and EM3xx Platforms
|
Bootloader GPIO definitions. More...
Enumerations | |
| enum | blState_e { BL_ST_UP, BL_ST_DOWN, BL_ST_POLLING_LOOP, BL_ST_DOWNLOAD_LOOP, BL_ST_DOWNLOAD_FAILURE, BL_ST_DOWNLOAD_SUCCESS } |
| Defines various bootloader states. Use in LED code to signal bootload activity. More... | |
Functions | |
| void | bootloadGpioInit (void) |
| Initialize GPIO. More... | |
| void | bootloadStateIndicator (enum blState_e state) |
| Helper function used for displaying bootloader state (for example: with LEDs). More... | |
| bool | bootloadForceActivation (void) |
| Force activation of bootloader. More... | |
State Indicator Macros | |
The bootloader indicates which state it is in by calling these // macros. Map them to the ::halBootloadStateIndicator function // (in bootloder-gpio.c) if you want to display that bootloader state. // Used to blink the LED's or otherwise signal bootloader activity. | |
| #define | BL_STATE_UP() do { bootloadStateIndicator(BL_ST_UP); } while (0) |
| Finished init sequence, ready for bootload. More... | |
| #define | BL_STATE_DOWN() do { bootloadStateIndicator(BL_ST_DOWN); } while (0) |
| Called right before bootloader resets to application. Use to cleanup and reset GPIO's to leave node in known state for app start, if necessary. More... | |
| #define | BL_STATE_POLLING_LOOP() do { bootloadStateIndicator(BL_ST_POLLING_LOOP); } while (0) |
| Standalone bootloader polling serial/radio interface. More... | |
| #define | BL_STATE_DOWNLOAD_LOOP() do { bootloadStateIndicator(BL_ST_DOWNLOAD_LOOP); } while (0) |
| Processing download image. More... | |
| #define | BL_STATE_DOWNLOAD_SUCCESS() do { bootloadStateIndicator(BL_ST_DOWNLOAD_SUCCESS); } while (0) |
| Download process was a success. More... | |
| #define | BL_STATE_DOWNLOAD_FAILURE() do { bootloadStateIndicator(BL_ST_DOWNLOAD_FAILURE); } while (0) |
| Download process failed. More... | |
Bootloader GPIO definitions.
See bootloader-gpio.h for source code.
| #define BL_STATE_DOWN | ( | ) | do { bootloadStateIndicator(BL_ST_DOWN); } while (0) |
Called right before bootloader resets to application. Use to cleanup and reset GPIO's to leave node in known state for app start, if necessary.
| #define BL_STATE_DOWNLOAD_FAILURE | ( | ) | do { bootloadStateIndicator(BL_ST_DOWNLOAD_FAILURE); } while (0) |
Download process failed.
| #define BL_STATE_DOWNLOAD_LOOP | ( | ) | do { bootloadStateIndicator(BL_ST_DOWNLOAD_LOOP); } while (0) |
Processing download image.
| #define BL_STATE_DOWNLOAD_SUCCESS | ( | ) | do { bootloadStateIndicator(BL_ST_DOWNLOAD_SUCCESS); } while (0) |
Download process was a success.
| #define BL_STATE_POLLING_LOOP | ( | ) | do { bootloadStateIndicator(BL_ST_POLLING_LOOP); } while (0) |
Standalone bootloader polling serial/radio interface.
| #define BL_STATE_UP | ( | ) | do { bootloadStateIndicator(BL_ST_UP); } while (0) |
Finished init sequence, ready for bootload.
| enum blState_e |
| bool bootloadForceActivation | ( | void | ) |
Force activation of bootloader.
| void bootloadGpioInit | ( | void | ) |
Initialize GPIO.
| void bootloadStateIndicator | ( | enum blState_e | state | ) |
Helper function used for displaying bootloader state (for example: with LEDs).


Select any city from the tree to show the description.
PARIS
Paris, the city of lights and love - this short guide is full of ideas for how to make the most of the romanticism...
CAMEMBERT
The village in the Orne département of Normandy where the famous French cheese is originated from.
GRENOBLE
The capital city of the French Alps and a major scientific center surrounded by many ski resorts, host of the Winter Olympics in 1968.


Freecell Solver version 2.38.0 has been released. It is available in the form of a source tarball from the download page.
This is a minor release which makes sure one can build Freecell Solver outside the source distribution (e.g: mkdir build ; cd build ; cmake ..) without AsciiDoc, adds a --pysfolfc (or an -F for short) flag to make_pysol_freecell_board.py and fixes one of the help displays.


‘In proportion as he simplifies his life, the laws of the universe will appear less complex, and solitude will not be solitude, nor poverty poverty, nor weakness weakness.’ ~Henry David Thoreau
The tendency of life in our society is to become more complicated: Internet, television, shopping, work, family commitments, possessions, eating, debt … these things pile on top of each other endlessly.
This is a rather bad formula, as our days have a limited capacity, and so do we as humans. We can only do so much, only handle so many tasks and possessions and social commitments, and filling ourselves to those limits means we stress our breaking points.
It takes a bit of conscious effort to simplify, but it’s one of the greatest things I’ve ever learned to do.
Simplify everything. That might sound hard, but with practice it’s actually fairly easy, and leads to a quiet, content, lovely life full of space, with only the things in it that matter to me: my family, my writing, with some reading and workouts thrown in.
So how do you simplify? As simply as possible.
Here are a few ways:
- Block off some disconnected time. The Internet is amazing, but always being connected means you’re always pulled in a thousand directions at once. It’s hard to focus, hard to connect with others, hard to get out into nature and be active. So schedule some time every day for disconnection: maybe a block in the morning where you get your best work done, and a block in the afternoon when you get out and active, or connect with friends or family.
- Start eliminating commitments. List your commitments, and pick one to eliminate today. It’s a simple matter of making a call or sending an email explaining that you can’t do the commitment. Trust me, they’ll find a way to live without you. You’ll start to free up time for what’s more important to you.
- Start purging possessions. Every day, find 5 things to donate or give to friends. Or clear an entire shelf or countertop, leaving only the things you actually use, getting rid of the rest. Slowly your possessions will be simplified to just the essentials.
- Ban shopping for 30 days. You can do this. Don’t buy anything except the essentials (food, toiletries, basic supplies). If you think you really need it, put it on a list to be evaluated after the 30 days.
- Wash your bowl. When you’re done eating, mindfully wash your bowl. When you’re done with anything, get in the habit of pausing before moving onto the next thing, and cleaning up after yourself. Put your food away. Put your clothes where they belong. Put your keys in one spot. Clean the sink before you leave it. This simple habit will keep you mindful while saving you lots of cleanup later.
- Schedule time for what’s important. What’s most important to you? Your spouse or kids? Creating? Reading novels? Cooking, gardening, crafts, carpentry? Make the time for it.
- Get outdoors once a day. Too often we are stuck at a desk or on the couch. Get outside, take a walk, enjoy the fresh air and sunshine. Go for a hike or a run with a friend. Play some sports. Run around and play tag with your kids. These simple activities will change your life.
- Eat some plants. Learn some simple recipes that incorporate super healthy foods you might not be eating: kale, spinach, broccoli, quinoa, berries, flaxseeds, lentils, avocados, black beans, squash, raw almonds and walnuts, garlic, turmeric, cayenne, cinnamon. These simple plants will make you strong like oxen.
- Drink tea. Green tea brewed from relatively fresh whole tea leaves is calming, healthy, and wonderful. A daily tea ritual keeps you grounded and mindful.
Posted with : Passion


You can get basic control over how a vector is printed in a tibble by
providing a format()
method. If you want greater control,
you need to understand how printing works. The presentation of a column
in a tibble is controlled by two S3 generics:
vctrs::vec_ptype_abbr()
determines what goes into the
column header.pillar::pillar_shaft()
determines what goes into the
body, or the shaft, of the column.Technically a pillar is composed of a shaft (decorated with an ornament), with a capital above and a base below. Multiple pillars form a colonnade, which can be stacked in multiple tiers. This is the motivation behind the names in our API.
This short vignette shows the basics of column styling using a
"latlon"
vector. The vignette imagines the code is in a
package, so that you can see the roxygen2 commands you’ll need to create
documentation and the NAMESPACE
file. In this vignette,
we’ll attach pillar and vctrs:
You don’t need to do this in a package. Instead, you’ll need to
import the packages by then to the Imports:
section of your DESCRIPTION
. The following helper does this
for you:
To illustrate the basic ideas we’re going to create a
"latlon"
class that encodes geographic coordinates in a
record. We’ll pretend that this code lives in a package called earth.
For simplicity, the values are printed as degrees and minutes only. By
using vctrs_rcrd()
, we already get the infrastructure to
make this class fully compatible with data frames for free. See
vignette("s3-vector", package = "vctrs")
for details on the
record data type.
#' @export
latlon <- function(lat, lon) {
new_rcrd(list(lat = lat, lon = lon), class = "earth_latlon")
}
#' @export
format.earth_latlon <- function(x, ..., formatter = deg_min) {
x_valid <- which(!is.na(x))
lat <- field(x, "lat")[x_valid]
lon <- field(x, "lon")[x_valid]
ret <- rep(NA_character_, vec_size(x))
ret[x_valid] <- paste0(formatter(lat, "lat"), " ", formatter(lon, "lon"))
# It's important to keep NA in the vector!
ret
}
deg_min <- function(x, direction) {
pm <- if (direction == "lat") c("N", "S") else c("E", "W")
sign <- sign(x)
x <- abs(x)
deg <- trunc(x)
x <- x - deg
min <- round(x * 60)
# Ensure the columns are always the same width so they line up nicely
ret <- sprintf("%d°%.2d'%s", deg, min, ifelse(sign >= 0, pm[[1]], pm[[2]]))
format(ret, justify = "right")
}
latlon(c(32.71, 2.95), c(-117.17, 1.67))
#> <earth_latlon[2]>
#> [1] 32°43'N 117°10'W 2°57'N 1°40'E
Columns of this class can be used in a tibble right away because
we’ve made a class using the vctrs infrastructure and have provided a
format()
method:
library(tibble)
#>
#> Attaching package: 'tibble'
#> The following object is masked from 'package:vctrs':
#>
#> data_frame
loc <- latlon(
c(28.3411783, 32.7102978, 30.2622356, 37.7859102, 28.5, NA),
c(-81.5480348, -117.1704058, -97.7403327, -122.4131357, -81.4, NA)
)
data <- tibble(venue = "rstudio::conf", year = 2017:2022, loc = loc)
data
#> # A tibble: 6 × 3
#> venue year loc
#> <chr> <int> <erth_ltl>
#> 1 rstudio::conf 2017 28°20'N 81°33'W
#> 2 rstudio::conf 2018 32°43'N 117°10'W
#> 3 rstudio::conf 2019 30°16'N 97°44'W
#> 4 rstudio::conf 2020 37°47'N 122°25'W
#> 5 rstudio::conf 2021 28°30'N 81°24'W
#> 6 rstudio::conf 2022 NA
This output is ok, but we could improve it by:
Using a more description type abbreviation than
<erth_ltl>
.
Using a dash of colour to highlight the most important parts of the value.
Providing a narrower view when horizontal space is at a premium.
The following sections show how to enhance the rendering.
Instead of <erth_ltl>
we’d prefer to use
<latlon>
. We can do that by implementing the
vec_ptype_abbr()
method, which should return a string that
can be used in a column header. For your own classes, strive for an
evocative abbreviation that’s under 6 characters.
#' @export
vec_ptype_abbr.earth_latlon <- function(x) {
"latlon"
}
data
#> # A tibble: 6 × 3
#> venue year loc
#> <chr> <int> <latlon>
#> 1 rstudio::conf 2017 28°20'N 81°33'W
#> 2 rstudio::conf 2018 32°43'N 117°10'W
#> 3 rstudio::conf 2019 30°16'N 97°44'W
#> 4 rstudio::conf 2020 37°47'N 122°25'W
#> 5 rstudio::conf 2021 28°30'N 81°24'W
#> 6 rstudio::conf 2022 NA
The format()
method is used by default for rendering.
For custom formatting you need to implement the
pillar_shaft()
method. This function should always return a
pillar shaft object, created by new_pillar_shaft_simple()
or similar. new_pillar_shaft_simple()
accepts ANSI escape
codes for colouring, and pillar includes some built in styles like
style_subtle()
. We can use subtle style for the degree and
minute separators to make the data more obvious.
First we define a degree formatter that makes use of
style_subtle()
:
deg_min_color <- function(x, direction) {
pm <- if (direction == "lat") c("N", "S") else c("E", "W")
sign <- sign(x)
x <- abs(x)
deg <- trunc(x)
x <- x - deg
rad <- round(x * 60)
ret <- sprintf(
"%d%s%.2d%s%s",
deg,
pillar::style_subtle("°"),
rad,
pillar::style_subtle("'"),
pm[ifelse(sign >= 0, 1, 2)]
)
format(ret, justify = "right")
}
And then we pass that to our format()
method:
#' @importFrom pillar pillar_shaft
#' @export
pillar_shaft.earth_latlon <- function(x, ...) {
out <- format(x, formatter = deg_min_color)
pillar::new_pillar_shaft_simple(out, align = "right")
}
Currently, ANSI escapes are not rendered in vignettes, so this result doesn’t look any different, but if you run the code yourself you’ll see an improved display.
data
#> # A tibble: 6 × 3
#> venue year loc
#> <chr> <int> <latlon>
#> 1 rstudio::conf 2017 28°20'N 81°33'W
#> 2 rstudio::conf 2018 32°43'N 117°10'W
#> 3 rstudio::conf 2019 30°16'N 97°44'W
#> 4 rstudio::conf 2020 37°47'N 122°25'W
#> 5 rstudio::conf 2021 28°30'N 81°24'W
#> 6 rstudio::conf 2022 NA
As well as the functions in pillar, the cli package provides a variety of tools for styling text.
Tibbles can automatically compacts columns when there’s no enough horizontal space to display everything:
print(data, width = 30)
#> # A tibble: 6 × 3
#> venue year loc
#> <chr> <int> <latlon>
#> 1 rstu… 2017 28°20'N 81°33'W
#> 2 rstu… 2018 32°43'N 117°10'W
#> 3 rstu… 2019 30°16'N 97°44'W
#> 4 rstu… 2020 37°47'N 122°25'W
#> 5 rstu… 2021 28°30'N 81°24'W
#> 6 rstu… 2022 NA
Currently the latlon class isn’t ever compacted because we haven’t specified a minimum width when constructing the shaft. Let’s fix that and re-print the data:
#' @importFrom pillar pillar_shaft
#' @export
pillar_shaft.earth_latlon <- function(x, ...) {
out <- format(x)
pillar::new_pillar_shaft_simple(out, align = "right", min_width = 10)
}
print(data, width = 30)
#> # A tibble: 6 × 3
#> venue year loc
#> <chr> <int> <latlon>
#> 1 rstudio::c… 2017 28°20'N …
#> 2 rstudio::c… 2018 32°43'N 1…
#> 3 rstudio::c… 2019 30°16'N …
#> 4 rstudio::c… 2020 37°47'N 1…
#> 5 rstudio::c… 2021 28°30'N …
#> 6 rstudio::c… 2022 NA
Truncation may be useful for character data, but for lat-lon data it’d be nicer to show full degrees and remove the minutes. We’ll first write a function that does this:
deg <- function(x, direction) {
pm <- if (direction == "lat") c("N", "S") else c("E", "W")
sign <- sign(x)
x <- abs(x)
deg <- round(x)
ret <- sprintf("%d°%s", deg, pm[ifelse(sign >= 0, 1, 2)])
format(ret, justify = "right")
}
Then use it as part of more sophisticated implementation of the
pillar_shaft()
method:
#' @importFrom pillar pillar_shaft
#' @export
pillar_shaft.earth_latlon <- function(x, ...) {
deg <- format(x, formatter = deg)
deg_min <- format(x)
pillar::new_pillar_shaft(
list(deg = deg, deg_min = deg_min),
width = pillar::get_max_extent(deg_min),
min_width = pillar::get_max_extent(deg),
class = "pillar_shaft_latlon"
)
}
Now the pillar_shaft()
method returns an object of class
"pillar_shaft_latlon"
created by
new_pillar_shaft()
. This object contains the necessary
information to render the values, and also minimum and maximum width
values. For simplicity, both formats are pre-rendered, and the minimum
and maximum widths are computed from there.
(get_max_extent()
is a helper that computes the maximum
display width occupied by the values in a character vector.)
All that’s left to do is to implement a format()
method
for our new "pillar_shaft_latlon"
class. This method will
be called with a width
argument, which then determines
which of the formats to choose. The formatting of our choice is passed
to the new_ornament()
function:
#' @export
format.pillar_shaft_latlon <- function(x, width, ...) {
if (get_max_extent(x$deg_min) <= width) {
ornament <- x$deg_min
} else {
ornament <- x$deg
}
pillar::new_ornament(ornament, align = "right")
}
data
#> # A tibble: 6 × 3
#> venue year loc
#> <chr> <int> <latlon>
#> 1 rstudio::conf 2017 28°20'N 81°33'W
#> 2 rstudio::conf 2018 32°43'N 117°10'W
#> 3 rstudio::conf 2019 30°16'N 97°44'W
#> 4 rstudio::conf 2020 37°47'N 122°25'W
#> 5 rstudio::conf 2021 28°30'N 81°24'W
#> 6 rstudio::conf 2022 NA
print(data, width = 30)
#> # A tibble: 6 × 3
#> venue year loc
#> <chr> <int> <latlon>
#> 1 rstudio::c… 2017 28°N 82°W
#> 2 rstudio::c… 2018 33°N 117°W
#> 3 rstudio::c… 2019 30°N 98°W
#> 4 rstudio::c… 2020 38°N 122°W
#> 5 rstudio::c… 2021 28°N 81°W
#> 6 rstudio::c… 2022 NA
If you want to test the output of your code, you can compare it with
a known state recorded in a text file. The
testthat::expect_snapshot()
function offers an easy way to
test output-generating functions. It takes care about details such as
Unicode, ANSI escapes, and output width. Furthermore it won’t make the
tests fail on CRAN. This is important because your output may rely on
details out of your control, which should be fixed eventually but should
not lead to your package being removed from CRAN.
Use this testthat expectation in one of your test files to create a snapshot test:
See https://testthat.r-lib.org/articles/snapshotting.html for more information.


Stephan Jaensch
@s_jaensch
To connect people with great local businesses
def hello(who: str) -> str:
return 'Hello, {}'.format(who)
hello(5)
error: Argument 1 to "hello" has incompatible type "int";
expected "str"
def process_data(self, items):
self.values = [item.value.id for item in items]
[mypy]
check_untyped_defs = True
disallow_untyped_calls = False
disallow_untyped_defs = True
follow_imports = silent
ignore_missing_imports = True
python_version = 3.6
strict_optional = True
warn_redundant_casts = True
- repo: local
hooks:
- id: mypy
name: mypy
entry: mypy
language: python
language_version: 'python3.6'
additional_dependencies: ['mypy']
args: ['--config-file', 'mypy-pre-commit.ini']
files: ^package_name/.+\.py$
pre-commit install -f --install-hooks
[mypy]
ignore_missing_imports = True
python_version = 3.6
strict_optional = True
warn_redundant_casts = True
from typing import Iterable, NamedTuple, Optional
class Business(NamedTuple):
id: int
name: str
photos: Iterable[Photo]
address1: Optional[str]
address2: Optional[str]
address3: Optional[str]
city: str
latitude: float
longitude: float
...
from typing import Optional
from mypy_extensions import TypedDict
class BusinessDict(TypedDict):
id: int
name: str
address1: Optional[str]
address2: Optional[str]
def get_biz_address(business: BusinessDict) -> str:
...
value = business.get('adress2', '')
error: TypedDict "BusinessDict" has no key 'adress2'
def namedtuple_from_dict(
nt_class,
dict_values,
):
"""Create a namedtuple from a dict, using the namedtuple
attribute names to look up values in the dict."""
return nt_class._make(
dict_values.get(k) for k in nt_class._fields
)
def namedtuple_from_dict(
nt_class: Type[NamedTuple],
dict_values: Dict[str, Any],
) -> NamedTuple:
"""Create a namedtuple from a dict, using the namedtuple
attribute names to look up values in the dict."""
return nt_class._make(
dict_values.get(k) for k in nt_class._fields
)
error: Incompatible return value type
(got "NamedTuple", expected "Business")
error: Argument 1 to "namedtuple_from_dict" has incompatible
type "Type[Business]"; expected "Type[NamedTuple]"
Struct = TypeVar('Struct', bound=NamedTuple)
def namedtuple_from_dict(
nt_class: Type[Struct],
dict_values: Dict,
) -> Struct:
"""Create a namedtuple from a dict, using the namedtuple
attribute names to look up values in the dict."""
return nt_class._make(
dict_values.get(k) for k in nt_class._fields
)
error: Value of type variable "Struct" of "namedtuple_from_dict"
cannot be "Business"
from typing_extensions import Protocol
T = TypeVar('T')
class NTProto(Protocol):
_source: str
_fields: Tuple[str, ...]
@classmethod
def _make(cls: Type[T], iterable: Iterable[Any]) -> T: ...
# add other methods, if needed
NT = TypeVar('NT', bound=NTProto)
def namedtuple_from_dict(
nt_class: Type[NT],
dict_values: Dict[str, Any],
) -> NT:
return nt_class._make(
dict_values.get(k) for k in nt_class._fields
)
class Pagination(NamedTuple):
count: int
index: int
error: Incompatible types in assignment (expression has type "int",
base class "tuple" defined the type as
"Callable[[Tuple[int, ...], Any], int]")
error: Incompatible types in assignment (expression has type "int",
base class "tuple" defined the type as
"Callable[[Tuple[int, ...], Any, int, int], int]")
T = TypeVar('T')
V = TypeVar('V')
class SetOnceProperty(Generic[T, V]):
def __get__(self, instance: T, owner: Type[T]) -> V:
return self._property_map[instance]
def __set__(self, instance: T, value: V) -> None:
if instance in self._property_map:
raise AttributeError(
'this attribute can only be set once.'
)
self._property_map[instance] = value
class BizAppContext():
biz_user_id = SetOnceProperty['BizAppContext', int]()
...
class Category(NamedTuple):
id: int
name: str
children: List['Category']
error: Recursive types not fully supported yet,
nested types replaced with "Any"
/business/{business_id}/v1:
get:
operationId: business_info
parameters:
- $ref: '#/parameters/AcceptLanguage'
- description: Business identifier
in: path
name: business_id
required: true
type: int
responses:
'200':
schema:
$ref: '#/definitions/Business'
...
Business:
properties:
address1:
type: string
address2:
type: string
alias:
type: string
has_business_upgrades:
type: boolean
review_rating:
type: string
from business_clientlib.client import create_client
client = create_client(...)
business = client.business.business_info(
business_id=business_id,
).result(timeout=TIMEOUT)
return business.review_rating
def get_business_review_rating(business_id: int) -> float:
business = client.business.business_info(
business_id=business_id,
).result(timeout=TIMEOUT)
return business.review_rating
def test_get_business_review_rating():
mock_business = mock.Mock(review_rating=4.5)
with mock.patch('my_package.client') as client:
client.business.business_info.return_value.\
result.return_value = mock_business
review_rating = get_business_review_rating(5)
assert review_rating == mock_business.review_rating
class Business():
id: int
address1: str
address2: Optional[str]
review_rating: str
def get_business_review_rating(business_id: int) -> float:
business = client.business.business_info(
business_id=business_id,
).result(timeout=TIMEOUT)
return business.review_rating
def test_get_business_review_rating():
mock_business = models.Business(review_rating=4.5)
with mock.patch('get_business_future') as mock_future:
mock_future.return_value.\
result.return_value = mock_business
review_rating = get_business_review_rating(5)
assert review_rating == mock_business.review_rating
error: Argument 1 to "Business" has incompatible
type "float"; expected "str"
business = client.business.business_info(
business_id=business_id,
).result(timeout=TIMEOUT)
T = TypeVar('T')
class BusinessServiceClient:
business: business_resource
class business_resource:
def business_info(
self,
business_id: int,
) -> HttpFuture[Business]: ...
class HttpFuture(Generic[T]):
def result(self, timeout: Optional[float]=None) -> T:
...
github.com/sjaensch/type_annotations_talk
@s_jaensch


My name is franco. I am a computer enthusiast and software engineer from Zürich, Switzerland. Currently I am working with getunik ag, where we develop digital donation tools and services. I mostly work with the Symfony2 PHP Framework and with apache clerezza.
If you like to know more, you can
follow me on twitter
email me
subscribe to my RSS feed
visit me on github


Australia-Chile women’s friendly attracts record 20,029 fans
by The Associated PressSYDNEY (AP) — Sam Kerr scored both Australian goals in a 2-1 friendly win Saturday over Chile which Football Federation Australia said attracted a record crowd of 20,029 for a women’s soccer match in Australia.
The match, played at a new stadium in western Sydney, broke the previous mark of 16,829 for an Australia-Brazil game at Newcastle, north of Sydney, on Nov. 19, 2017.
Kerr scored in each half and has 40 goals in her past 40 games for Perth in the W-League, Chicago in the NWSL, and Australia.
She has scored 38 goals for Australia.
___
More AP soccer: https://apnews.com/apf-Soccer and https://twitter.com/AP_Sports
The Associated Press


{{applicantFirstName}}, your application to be {{rank}} at the {{location}} Workshop has been accepted.


Make a Difference, Change a Life
Each year, Franklin County relies on extraordinary individuals and groups to fulfill our mission. There are so many different ways to volunteer at Franklin County Family and Community Services such as knitting hats to mentoring a child.If you are interested in volunteering, please fill out the form below and one of our staff members will reach out to.
Volunteer
Food drives help the Franklin County Pantry serve the more than 600 households each and every month who come to us in need. Food drives can be sponsored by individuals, corporations, clubs, schools and associations.
Contact Eva Webb at<PHONE_NUMBER> ext. 2 for more information


I am a Full-Stack Web Developer who is very interested in learning new and challenging technologies that will build the Web of the future. I am currently versed in JavaScript, Angular, HTML/CSS, Node, relational databases (PostgreSQL), BootStrap, RESTful API's & GitHub. I have also worked with JQuery, React, Gulp & Sass.
I was born and raised in a suburb of Detroit, Michigan as a child. My father was involved in the automobile industry as I grew up and the resulting interest in cars turned into a passion for computing. Looking for a mid-life career change, I began looking into industries concerning computing and that intersection led me to become a web developer and now my passion has become my career!
I am fortunate enough to be surrounded by friends and family who support me and allow me to grow so I am passionate about them. I am a husband and father and though this may bring its own set of unique challenges, their support is paramount to my success. This support system allows me to pursue my professional passions and goals with vigor and a loyalty that cannot be overlooked!
SneakerBase
SneakerBase is an original interactive site that I created to manage and maintain my sneaker collection. It features a connection to Google Calendar to make notes on which shoes were worn by date. This project was challenging because it
represents a huge passion of mine and therefore it was imperative to get it right. There is no existing sneaker API to call for the data for all 235+ shoes in my collection. This required scouring the Internet to compile the data for
this project and then curating the gathered information into my database for each individual shoe.
To say the least, it was huge and daunting undertaking to collect all of the necessary information but the end result displays my passion in a very unique and exciting manner! The site is open to others to create and curate their
own sneaker collections to form a community of Sneakerheads just like myself to share and manage their collections as well. It is a work in progress so there is still much to accomplish but as the product of an idea that started with
a blank screen, I am very proud of what I have accomplished and of the final - but still unfinished - product!
Tech Used:
Angular | JavaScript | Bootstrap | JQuery | HTML/CSS | Node | Elephant SQL
Below is a walk-thru video of SneakerBase.org.
The video is best viewed full screen.
For a brief overview, simply watch the video to the 3-minute mark.
For a full overview of the website's capabilities, please watch the video in its entirety.
Below is a link to my Web Developer Certification as issued by DevMountain after completing their Immersive Full Stack Web Development Course and meeting the necessary requirements for badging.
There are multiple contact methods listed below, some direct, some indirect. Either way, please feel free to reach out at any time. Choose your method wisely.


You first ran this application on {{ my_stats.creation_time }}
This application has been launched locally {{ app.client_downloads }} times
You have launched this application on cloud {{ my_stats.run_count }} times
{% load cg_template_filters %} {% block panel-content %}
You first ran this application on {{ my_stats.creation_time }}
This application has been launched locally {{ app.client_downloads }} times
You have launched this application on cloud {{ my_stats.run_count }} times


This is agenda for the first Trivium Design Hackathon
Timetable
5pm:
Meet and go over agenda
6pm:
Website
7pm:
Logo voting
7:30pm:
Prelude to Java breakdown
8pm:
Food FOOD BeeR FOOD!!
9:15pm:
JaVa! JAVA JAvA!!!!
12am:
Cool down with Silicon Valley, IT Crowd, and other shows we like
2am:
JAVA!
6am:
Breakfast!!! and BOOZE!!!!
8am:
JAVA
12pm:
Lunch!
2pm:
Mission, Vision, Business Plan
4pm:
Overview
5pm:
Conclusion, wrap-up, and plans for the future
6pm:
Clean up. :-(


Event Logger
Set Thresholds
Horizontal
Vertical
swipe events on this page will log out below, appending to the bottom as they arrive.


{% extends '_base.html' %} {% block content %}
Are you sure you want to delete {{ item.name }} in category {{ item.category.name }}?


Try out our Premium Member services: Virtual Legal Assistant, Query Alert Service and an ad-free experience. Free for one month and pay only if you like it.
In the High Court of Judicature at Madras Dated: 10.03.2015 Coram: The Honourable Mr. SANJAY KISHAN KAUL, Chief Justice and The Honourable Mr. Justice M.M. SUNDRESH Writ Petition No. 27218 of 2007 Ms. Vidya Raja .. Petitioner vs. 1. M/s. Central Institute of Brackish- water Aquaculture rep. by its Director No.75, Santhome High Road R.A. Puram, Chennai 600 028. 2. The Chairman Pollution Control Board Pollution Control Board Buildings Guindy, Chennai 600032. 3. The Collector Kancheepuram District Kancheepuram. .. Respondents --- PRAYER: Writ Petition filed under Article 226 of the Constitution of India praying to issue a Writ of Mandamus to direct the Tamilnadu Pollution Control Board, the 2nd respondent herein, to exercise its powers under Section 33-A of the Water (Prevention and Control of Pollution) Act, 1974 and issue orders in accordance with law, directing the Central Institute of Brackishwater Aquaculture, the 1st respondent herein, to close down the Muthukadu Experimental Station and all its activities in the Muthukadu back waters. --- For Petitioner : Ms. C. Uma For Respondents : Mr. S.T.S. Murthi Govt. Pleader for R3 Mr. S.R. Sundaram for R1 Mrs. Rita Chandrasekaran for R2 Mr. T. Mohan (Advocate Commissioner). --- O R D E R
(Made by The Hon'ble The Chief Justice) The petitioner seeks action against the first respondent under Section 33-A of the Water (Prevention and Control of Pollution) Act, 1974, on account of the Brackishwater Aquaculture Project and to close down the Muthukadu Experimental Station.
2. Learned counsel appearing for the second respondent initially sought to state that as per the information received by her, the first respondent had ceased to carry out the activities and had put up a training college. However, the learned counsel for the first respondent states that the Experimental Station is still being run.
3. In view of the aforesaid, we direct the second respondent to examine the project of the first respondent to verify whether the first respondent is in breach of any provisions of the said Act or any other law and take action in accordance with law.
4. The needful be done within a maximum period of three months from today.
5. The writ petition accordingly stands disposed of. No costs.
Index : yes/no [S.K.K., CJ] [M.M.S., J.] Internet: yes/no 10th March, 2015. ATR Copies to; 1. The Chairman Pollution Control Board Pollution Control Board Buildings Guindy, Chennai 600032. 2. The Collector Kancheepuram District Kancheepuram. THE HON'BLE THE CHIEF JUSTICE and M. M. SUNDRESH,J. ATR W.P. No. 27218 of 2007 10.03.2015


void sybase_deadlock_retry_count ( int $retry_count )
Using sybase_deadlock_retry_count(), the number of retries can be defined in cases of deadlocks. By default, every deadlock is retried an infinite number of times or until the process is killed by Sybase, the executing script is killed (for instance, by set_time_limit()) or the query succeeds.
No value is returned.