List of Figures
Top-Level View (Use Case Diagram)
Human Actor Relatioship (Use Case Diagram)
Collaboration Diagram:Getting Result from Sequential Modular Analysis (Sequence Diagram)
Sequence Diagram:Getting Result from Sequential Modular Analysis (Sequence Diagram)
Collaboration Diagram:Collaboration Diagram:Getting Result from Tearing Analysis (Sequence Diagram)
Sequence Diagram:Getting Result from Tearing Analysis (Sequence Diagram)
Collaboration Diagram:Getting Result from Partitioning Analysis (Sequence Diagram)
Sequence Diagram:Getting Result from Partitioning Analysis (Sequence Diagram)
Collaboration Diagram:Getting Result from Sequencing Analysis (Sequence Diagram)
Sequence Diagram:Getting Result from Sequencing Analysis (Sequence Diagram)
Collaboration Diagram:Initializing (Sequence Diagram)
Sequence Diagram:Initializing (Sequence Diagram)
Collaboration Diagram:Performing (SMAnalysis) (Sequence Diagram)
Collaboration Diagram:Performing (Tearing) (Sequence Diagram)
Sequence Diagram: Performing (Tearing) (Sequence Diagram)
Sequence Diagram:Performing (SMAnalysis) (Sequence Diagram)
0 Interface and Packages Interactions (Use Case Diagram)
1 Using SMST (Use Case Diagram)
2 Performing Administration Tasks (Use Case Diagram)
3 Initializing (Use Case Diagram)
3.1 Building a Process Graph (Use Case Diagram)
3.2 Building a Numeric Analysis (Use Case Diagram)
3.3 Displaying Process Graph (Use Case Diagram)


There two main parts that we have to test for our application:
Web Application:
In here, we will test its compatibility and the performance. As we mentioned in the design section, we have two web applications which are hosted in AzureVM and local. We will test if all the functionalities from them can be used in different web browser. In terms of performance, we will use FireFox to test how fast the image recognition can process based on different types of input(image, video and live-streaming).
Image Recognition:
In the design session, we can see that only the Item Recognition is an API, and others are SDK. The Item Recognition is using Google Vision API, therefore, there is no need to test its accuracy.
For Face and Posture Recognition, we will apply unit and integration testing to them. In unite and integration testing, we will describe how we create the models, select the best model and test the model selected.
Finally, we will list out the compatibility of each recognition for each input type.
The unittest class is used when developing the webapp, our project is about using the back-end to analyse the video Therefore for most cases, the unit testing is hard to be done by code under the theory of TDD. The reason is that, the video output have to be run and checked by human to see the exactly the AI information outline on the video is correct which is not static at all, it changes every time by different cases
Therefore when we were doing the development, most TDD is done by hand other than code. These unit testing is just used to test the whole program can catch up the exception, or can run the video successfully. For most functions tested in the unit test is now been disabled for real application, the reason is that it is not worth to keep unit tests which cannot cover most cases, everything still need check by hand. The unit test by code including user login, logout, run the video reading.
The following paragraph will discuss how we implement the unit test by hand to build the app and how the integration test we took to see the overall performance of the system
We are using the integration test to seee the overall performance, especially the accuracy of the web app. We found that the accuracy is always low. As said, we stopped by the point to have the dangerous information notification system since we find the accuracy is low.
As we mentioned, using this SDK requires you to have a model. So far, We trained 25 models with different datasets and classifiers. There are three different categories of samples we gathered for generating datasets, one is purely using the image samples from opensource photo library which is showing sitting, standing and laying, the second category is using the photos we took by using camera and the other is having the first two categories together. We found that it is not necessary that the more samples we have, the more accurate AI can be. It really depends on how classifiers calculate the data and the accuracy of the photo samples. However, the sample size has to be greater than 15 in order to process the classification to generate a model.
After we got all the models, we use 3 different types of human actions image "sitting" "standing" "laying", and you can see from the right, each type has quantity of three. The testing images are the mixed of opensource photos and the photos we took from camera for testing models. 'y' means successfully recognise the posture, 'n' means failure. 'st' means 'standing', 'si' means 'sitting' and 'la' means 'laying'. The models name labelled at the top are all trained by MLPclassifier. As a result, we found that 'training4' model is the most accurate.
After we selected the model, we used Graident Boosted Tree and Adaboost classifier to generate the models with the same datasets trained for 'training4'. Finally, we compare the accuracy among the three classifiers. As a result, the model generated from MLP classifier has the best overall performance.
Although none of the models recognise the standing image, we used another few standing images, the model we selected partly recognised them correctly.
We choose a ten-second video to test for the item and face recognition. There are two people including in the video with one person has a small knives held by hand. We found the face has been nicely detected three time per second accurately within the range of 3 meters and the deadly (small knives) never been recognised when it is 5 meters away from the camera. It shows that how the AI CCTV far away from the real-world application at the moment.
The accuracy and test cases will be discussed further in the following paragraph
Here we are testing the compatibility of the webapp hosted in AzureVM with different web-browser:
| Image Upload | Webcam Snapshot | Video | |
|---|---|---|---|
| Google Chrome | Yes | No | Yes |
| Safari | Yes | No | Yes |
| FireFox | Yes | Yes | Yes |
| Edge | Yes | Yes | Yes |
| Internet Explorer | Yes | No | Yes |
The first row are the functionalities of the webapp. As you can see from the table, only the FireFox and Edge are able to perform all the functionalities. The reason why the webcam does not work in the others is because the webcam JS library we used require the website to be HTTPS, therefore, the webcam cannot ask for the permission to access the computer webcam usb.
| jpg | mp4 | live streaming | |
|---|---|---|---|
| Posture Recognition | Yes | Yes | Yes |
| Face Recognition | No | Yes | Yes |
| Item Recognition | Yes | Yes | Yes |
Here we are testing the compatibility of the backend with different input. From the table, we can see that only the Face Recognition is not compatible with image input.
Here we are testing the efficiency of the whole image recognition when it deals with different type and size of inputs from the web application. We are using a timer to measure the processing time and take the average of the three measurement for each field.
| 480p | 720p | 1080p | |
|---|---|---|---|
| jpg | 5.75sec | 6.44sec | 8.36sec |
| mp4 (3sec) | 0min 43.6sec | 1min 54.64sec | 4min 01.67sec |
Here is the performance table of processing the image and the 3 second of the video. The images have the same content but with different resolution, and the same as the video. The reason why we are using 3 secs of video is because the image recognition takes a long time to process, and the problem mostly came from the Posture Recognition. The Posture Recognition analyse each frame from the video, hence, the more resolution you have in the video, the slower you will get from the overall performance.
The following is the specification of the AzureVM:
| Posture | Face & Item | |
|---|---|---|
| Live Streaming | <=0.2FPS | 10FPS |
This table shows the overall performance of the real-time posture recognition and face/item recognition. The posture recognition requires large computational processing ability, it would takes 5 seconds at least to read one frame when doing the live-stream and/video. It would be hard to detect the faces since the face recognition requires a smooth and fluent video/live input. When the machine is running the posture recognition, face recognition found hard to recognise the face since too less frames (0.2 frame per second or said 0.2fps ) are fed to the face recognition.
The following is the specification of the computer running the live streaming image recognition:
We were demonstrating weekly the development of our Recognition API to our TA using the front-end developed for the demo purposes. The presentation was also done to the client during our end of the week meeting. This helped us track down the suggestions for improvement made from our TA and complete them accordingly.
Our testers were our TA along with the client and some of our coursemates and people on street in order to have a wide variety of opinions for our project. Talking with our classmates was really important to take ideas on their approach to the development of our project. Any ideas suggested were taking into consideration with respect to time limit and complexity.
Our TA mentioned that we should add a loading animation while our Recognition API is analysing the input since large file take more time to process. Adding this animation would help the user realize that the API is still processing the input and made our UI look more professional.
When we were testing with the street people. Most are excited about that AI CCTV. We uploading their faces pictures by taking a short video and train the data very quickly. They has been recognised immediately after that 3 minutes short preparing
However, most people are not happy with the posture recognition, the first thing is that it looks a bit useless at the moment since it can only detect sitting, standing and lying down. The other feed back given by the testers is that the the posture program is working too slow, it tooks few seconds to process one frame.
The tester said they are worry about the sensitivity about the item recognition, since it can only detect the top 5 most significant items within the frame. It means that small deadly like pistols or small knives may be ignored by the recognition system.
A really good feedback is that people are shocked by the face recognition, it only takes 3 minuets to take video and analysis faces, then it can work with more than 50% accuracy to detect the people in the frames.


This is a survey about Tallgrass Burger Restaurant. Please take the survey and help us to improve us.


property BorderStyle: TBorderStyle;
type TBorderStyle = (bsNone, bsSingle); // declared in Forms.pas
When BorderStyle is bsSingle, control is painted with a recessed border.
[See also]:


pbmreduce(1) pbmreduce(1) NAME pbmreduce - read a portable bitmap and reduce it N times SYNOPSIS pbmreduce [-floyd|-fs|-threshold ] [-value val] N [pbmfile] DESCRIPTION Reads a portable bitmap as input. Reduces it by a factor of N, and pro‐ duces a portable bitmap as output. pbmreduce duplicates a lot of the functionality of pgmtopbm; you could do something like pnmscale | pgmtopbm, but pbmreduce is a lot faster. pbmreduce can be used to "re-halftone" an image. Let's say you have a scanner that only produces black&white, not grayscale, and it does a ter‐ rible job of halftoning (most b&w scanners fit this description). One way to fix the halftoning is to scan at the highest possible resolution, say 300 dpi, and then reduce by a factor of three or so using pbmreduce. You can even correct the brightness of an image, by using the -value flag. OPTIONS By default, the halftoning after the reduction is done via boustrophedo‐ nic Floyd-Steinberg error diffusion; however, the -threshold flag can be used to specify simple thresholding. This gives better results when reducing line drawings. The -value flag alters the thresholding value for all quantizations. It should be a real number between 0 and 1. Above 0.5 means darker images; below 0.5 means lighter. All flags can be abbreviated to their shortest unique prefix. SEE ALSO pnmenlarge(1), pnmscale(1), pgmtopbm(1), pbm(5) AUTHOR Copyright (C) 1988 by Jef Poskanzer. 02 August 1989 pbmreduce(1)


An movie a Days ,
Keeps the Bored away
Lets go!
Theater
Class
Learn how to do acting
in here proficiently
Gaming
Take a break with an awesome gaming experience
Directoring
Class
Learn how to directing
your own Movie
We will accompany you along your journey becoming a professional actor and director.
Get started


--- layout: post title: 'Impostor Syndrome: Slaying the Beast' subtitle: 'Part III: Fight Scene' date: 2019-12-20 categories: blog background: /imgs/20191220-impostor-syndrome/bitmoji-godzilla.png ---
Welcome to Part III of a three-part series on Impostor Syndrome: Slaying the Beast. In this section, we will go over ways to fight off Impostor Syndrome. Here are the sections for the full series:
This series is adapted from a talk I gave in 2019 at Music City Tech, Cream City Code, and TechBash. You can find the slides from that talk here, and you can watch the talk I gave at TechBash here.
If you have not yet read parts I and II of this series, you can check those out here: Part I, Part II.
I imagine that you are reading this because you have experienced some amount of Impostor Syndrome in your life. So, now what? It's time for our fight scene!
Let's talk about how to slay the beast of Impostor Syndrome. We're going to cover various tools you can use, so hopefully you'll have a few powerful weapons in your arsenal to reach for whenever you need them.
When tracking your accomplishments, focus on what you did, not just the outcome. For example, we don't want to simply say, "I got the job." Our Impostor Syndrome can easily turn that into, "I somehow tricked them into giving me the job," or, "I must have just been lucky." Instead, I would log something like this:
Don't forget to review these once in a while. I started logging my accomplishments a while ago, and at some point realized that I was never taking the time to look back at them. It might be helpful to set up a weekly reminder or develop some other system to regularly review the awesome things you've done.
There are other great benefits to logging your accomplishments. They can be a helpful guide when it comes time to advocate for a promotion or a raise. It's also very handy when you need to update your resume or portfolio. You might find a few points that you completely forgot about, but decide you actually want to highlight on your resume.
Now let's talk about tracking external praise. Take note of every compliment or positive feedback you receive. Be sure to include the source of the feedback. Consider also jotting down how you felt about the compliment. Did you believe it? Did it make you uncomfortable to hear? It may be easier to simply identify your behavior: How did you respond to the compliment? Did you accept it? Did you contradict it?
Once in a while, review this log and see what trends you notice. Perhaps there are certain areas about which you consistently receive positive feedback. Also look for trends in your responses. As you track the experience of getting this kind of feedback, you can start to be intentional about how you respond to it, disrupting your instinct to contradict or disregard positive feedback.
It can be a helpful exercise to list out your skills, the assets you bring to your current role (or to the role you're going for next). Sometimes it helps to think about your past experiences as a guide here. How were you able to be successful in your previous roles, or in school?
Maybe you're good at studying new concepts. Or you've worked in customer service and you've developed excellent communication skills.  Or you've done work with creative problem-solving. Or maybe your previous work has helped you to master the art of persuasion. These kinds of transferrable skills make you an invaluable asset to any team.
Then, be sure to stress these skills in your interviews. And try to hold them in your mind as you go about your day-to-day.  This applies even if you're brand new to the industry, or to your role. Being new is an asset.  You can ask questions no one else has because, "Well, that's just how we've always done things."
Okay, so what is a Hype Squad? A Hype Squad is a group of people who are in your corner, helping to support you. They listen when you need to vent. They build you up when you need confidence in yourself, and they push you when you need encouragement. If you don't yet have this group of friends, try to network at meetups, conferences, and other events. I bet there's someone at one of those events who would love to grab coffee or lunch with you and start learning about how awesome you are…so they can remind you about it later.
Obviously, it will be your job to help out the other members of your squad. But let's go beyond that for a moment.
There is great value in becoming a mentor to others. When you talk to someone who is somewhere along the path you've already traveled, you'll learn that you know a lot more than you realized. You will also start to see how valuable your experiences are to someone else, and how far you've actually come on your journey. And remember that for all of us, it's important to continue to normalize Impostor Syndrome. For someone who may be struggling with their own Impostor Syndrome, you can help by reminding them that they aren't alone.
Speaking of mentors, I'd like to take a moment to tell you about a man named Jeff Smith. He's the head of ProdOps at my company, and he's one of those people who seem to be the go-to person for literally everything. Though, he seems to trust his team and give them autonomy as well. He's an awesome, engaging speaker, and he's currently writing a book. Not only do I look up to him, but as one of the only other black people in our tech department, he has been there for me when I need to talk about something awful in the news, like the state-sanctioned murder of a black man by police. He has reminded me that it's okay to call in black once in a while if I need to.
I think of Jeff as someone who's made it. So, the day I heard him casually refer to his own Impostor Syndrome, I was floored. If he deals with Impostor Syndrome, then maybe I'm not as unimpressive as I think I am.
This is one of the best tweets I've read this year:
Embrace imposter syndrome.
— i'm a skELIton (@EliLizzieLizbet) March 17, 2019
Revel in the fact you have fooled everyone.

You are the Imposter Child for Deception and Clever Ruses.
I'm sure you've heard the old adage to fake it 'til you make it. Well, for those of us with Impostor Syndrome, there may not be a clear concept of what "making it" looks like. So, let's keep being really good at faking it! It's important to understand that no one really knows what they're doing. Don't let the people with an unearned sense of confidence fool you into thinking they know more than you do. They just know how to look good…and so do you!
So, what's next? It's time for our call to action! What are you going to do differently, starting tomorrow?
If you've decided to start logging your accomplishments, external praise, or skills, go ahead and create that document. Maybe it's and Excel sheet, or a Google Doc. Just figure out where you're going to keep track and make it happen.
Reach out to someone you think should be in your Hype Squad. Ask to grab coffee or drinks and catch up.
Remind yourself of how good you are at coming across as a badass. There's a reason people think you're great. Try to remind yourself of that every day.
Remind yourself of your unique skills. What do you have that no one else on your team does?
 It's possible that they see something that you don't…try to see it.
And finally, practice the act of confidence. They say that just by smiling or laughing, you can make yourself start to feel happy. So why not start acting confident? Speak up in your next meeting. Raise your hand for that challenging task you want (and say no to the administrative task you're not interested in). Walk into your next interview or daily standup like you own the room. And if you're worried this won't come naturally, I find it's best to take it at a bit of a strut.
Thanks for reading! For the rest of the series, check out the two previous posts:
Special thanks to all the people who made and released these awesome resources for free:


YouTube Auto-Proceed to Video has been updated to version 1.6.
Firefox support has been added.
This extension is - and always will be - free. Developing open source software takes time and effort - if you'd like to support my work, please consider donating. It means more than you might think! Thank you very much.


---
sort_order: 166
tei_id: rdx_b5j2m.p.idp145501008
annotation_count: 0
images:
small-thumbnail: http://readux.library.emory.edu/books/emory:b5j2m/pages/emory:p7917/mini-thumbnail/
json: http://readux.library.emory.edu/books/emory:b5j2m/pages/emory:p7917/info/
full: http://readux.library.emory.edu/books/emory:b5j2m/pages/emory:p7917/fs/
page: http://readux.library.emory.edu/books/emory:b5j2m/pages/emory:p7917/single-page/
thumbnail: http://readux.library.emory.edu/books/emory:b5j2m/pages/emory:p7917/thumbnail/
title: Page 166
number: 166
---
{% raw %}162 MRS. H. BEECHER STOWE's " UNCLE TOM."{% endraw %}
{% raw %}your work," she would reply with a laugh, " Yes,{% endraw %}
{% raw %}yes ; when I get ready ;" or, "Go, do it yourself.'''{% endraw %}
{% raw %}Sometimes she would scream out, " I won't; that's.{% endraw %}
{% raw %}a lie—catch me if you can; " and then she would{% endraw %}
{% raw %}take to her heels and run away. She was so queer{% endraw %}
{% raw %}and funny in her ways, that she was constantly{% endraw %}
{% raw %}doing all kinds of odd things, but escaped the{% endraw %}
{% raw %}whipping that other slaves, who did not behave half{% endraw %}
{% raw %}so badly, had received daily, because her mistress.{% endraw %}
{% raw %}thought she was an idiot.{% endraw %}
{% raw %}There was a gentleman, Mr. St. Clair Young, who{% endraw %}
{% raw %}lived in the neighbourhood of my old home. He{% endraw %}
{% raw %}was as kind-hearted as Mrs. Stowe's St. Clair. Soon{% endraw %}
{% raw %}after I left the district, I learned that he became a{% endraw %}
{% raw %}converted man, gave his slaves their freedom, sold{% endraw %}
{% raw %}his land, moved into Indiana, and preached as a{% endraw %}
{% raw %}Methodist minister. ;{% endraw %}
{% raw %}It is a fact, that as soon as the conscience of a{% endraw %}
{% raw %}slaveholder was aroused, he was obliged to give up{% endraw %}
{% raw %}his slaves or his religious convictions ; for these{% endraw %}
{% raw %}were so antagonistic they could not agree. Mr.  The{% endraw %}
{% raw %}children of slaveholders were often kind-hearted,{% endraw %}
{% raw %}good-tempered, and were genial companions during{% endraw %}
{% raw %}their childhood, before they were old enough to ex¬{% endraw %}
{% raw %}ercise authority. Then, under the influence of their{% endraw %}
{% raw %}circumstances, slavery would often turn the mildest{% endraw %}
{% raw %}disposition into a cross one, the same as thunder will{% endraw %}
{% raw %}turn sweet milk.{% endraw %}
{% raw %}Bryce Litton, who broke my arms and maimed me{% endraw %}
{% raw %}for life, would stand very well for Mrs. Stowe'*{% endraw %}


The most general question I get with StructureMap is "how do I get started?" I'd recommend that you first get comfortable with some concepts and the basic patterns of Dependency Injection and Inversion of Control. Assuming that you're already familiar with those concepts, or you'd really rather skip the pedantry and jump right into concrete code, the first thing to do is go download StructureMap and jump into usage (then come back to the patterns and pedantry).
Your interaction with StructureMap is going to mostly consist of two activities:
In our system we use a service called "IValidator" to exercise validation rules on our domain model objects (I talked about the approach here). By default, we want any consumer of the IValidator interface to use the concrete class named Validator. Since we use StructureMap for resolving dependencies and services, we need to first tell StructureMap to use Validator anytime somebody asks for an IValidator. You configure StructureMap by initializing the container with this code below:
public static class ContainerBootstrapper
{
public static void BootstrapStructureMap()
{
// Initialize the static ObjectFactory container
ObjectFactory.Initialize(x =>
{
x.ForRequestedType<IValidator>().TheDefaultIsConcreteType<Validator>();
});
}
}
Now that that code is called somewhere in the application initialization, we can get an IValidator object from StructureMap like in this sample code by calling ObjectFactory.GetInstance<IValidator>():
public class ClassThatGetsAnIValidator
{
public void SaveObject(object objectToSave)
{
// Go get the proper IValidator from StructureMap
IValidator validator = ObjectFactory.GetInstance<IValidator>();
var notification = validator.Validate(objectToSave);
if (notification.IsValid())
{
// save the object
}
}
}
That's it, your first usage of StructureMap. No messy Xml configuration, no attributes scattered through your code, just a couple lines of bootstrapping code. Of course, if that's all StructureMap did, it wouldn't be worth your time to download it. Let's look at a bit more advanced example.
I actually like to use StructureMap as a generic configuration tool (which was actually its original purpose). Let's say you're moving to the data access code. You come up with some sort of Repository pattern class like this:
public interface IRepository
{
void Save(object target);
}
public class Repository : IRepository
{
public Repository(string connectionString)
{
// set up the persistence infrastructure using the connectionString
// from the constructor argument
}
public void Save(object target)
{
// save the object
}
}
The Repository class needs to be supplied with the "connectionString" in its constructor. No problem, just set up the value of the constructor argument in the bootstrapping:
ObjectFactory.Initialize(x =>
{
x.ForRequestedType<IRepository>().Use<Repository>()
.WithCtorArg("connectionString").EqualTo("a connection string");
// Or, since it's smelly to embed a connection string directly into code,
// we could pull the connection string from the AppSettings
x.ForRequestedType<IRepository>().Use<Repository>()
.WithCtorArg("connectionString").EqualToAppSetting("CONNECTION-STRING");
});
With the bootstrapping out of the way, when we ask StructureMap for an IRepository in this code:
var repository = ObjectFactory.GetInstance<IRepository>();
StructureMap will look up the "CONNECTION-STRING" value in the AppSettings portion of the App.config file, and use that string value to invoke the constructor function of the Repository class, then hand back that new Repository object. Woo hoo. We can build an object that doesn't depend on anything, and we can build an object that needs some strings in its constructor function. How about objects that need other non-primitive objects?
In the code samples above, I used StructureMap as a Service Locator in the ClassThatGetsAnIValidator.SaveObject() method. Typically, you'll try to minimize the number of service locator usages in your system to a bare minimum (I found 8 in my current system, but I think I'll find a way to prune half of those later). Most of the value of an IoC tool is in automatically doing Dependency Injection. I'm working with the new MVC framework at the moment, so it's a handy sample. Let's say that we have a Controller class for a typical CRUD screen. That Controller class will generally need to interact with both validation services and the data access functionality of the Repository. Here's a representative Controller class:
public class SomeScreenController : IController
{
private readonly IRepository _repository;
private readonly IValidator _validator;
// SomeScreenController depends on both IRepository and IValidator
public SomeScreenController(IRepository repository, IValidator validator)
{
_repository = repository;
_validator = validator;
}
}
So let's get StructureMap set up for this SomeScreenController class:
ObjectFactory.Initialize(x =>
{
// Set up the IValidator
x.ForRequestedType<IValidator>().TheDefaultIsConcreteType<Validator>();
// Set up the IRepository
x.ForRequestedType<IRepository>().Use<Repository>()
.WithCtorArg("connectionString").EqualToAppSetting("CONNECTION-STRING");
});
You'll notice that we didn't make any explicit configuration for the SomeScreenController class, but yet we could now call:
var controller = ObjectFactory.GetInstance<SomeScreenController>();
and StructureMap will happily create a new instance of the SomeScreenController class by invoking its constructor and passing in a new Validator object and a new Repository object created with the connection string from the App.config file. We didn't need to tell StructureMap how to construct SomeScreenController because:
This feature is known as "auto wiring," and all the mainstream IoC containers support this feature to some extent or another.
StructureMap, and any other IoC tool for that matter, is configuration intensive – which means that their will be problems in that configuration. We're all moving to more convention based type registration – which means that more stuff is happening off stage and out of your sight, making debugging the configuration even trickier. Not to worry (too much), StructureMap has some diagnostic abilities to help you solve configuration problems. The quickest tool is to ask a Container object or ObjectFactory (which is just a static wrapper around a Container) "what do you have?" with the Container.WhatDoIHave() method like this below:
var container = new Container(x =>
{
x.ForRequestedType<IValidator>().TheDefaultIsConcreteType<Validator>();
x.ForRequestedType<IRepository>().Use<Repository>()
.WithCtorArg("connectionString").EqualToAppSetting("CONNECTION-STRING");
});
Debug.WriteLine(container.WhatDoIHave());
Which would spit out this text into your output window:
=========================================================================================================== Configuration Sources: 0) Registry: StructureMap.ConfigurationExpression,StructureMap =============================================================================================================================================================================================================================================================================================================================== PluginType Name Description ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ShadeTree.Validation.IValidator, ShadeTree, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null ShadeTree.Validation.Validator, ShadeTree, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null ShadeTree.Validation.Validator, ShadeTree, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null Built by: StructureMap.Pipeline.BuildPolicy ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- StructureMapSample.IRepository, DovetailCRM.IntegrationTesting, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null 27fdf13e-8adc-4f8f-9f53-cf7b35ada80c Smart Instance for StructureMapSample.Repository Built by: StructureMap.Pipeline.BuildPolicy ===============================================================================================================================================================================================================================================================================================================================
which is admittedly, not the prettiest looking thing in the world.
You can also "assert" that the configuration for a Container or ObjectFactory is complete by calling the Container.AssertConfigurationIsValid() method like this sample below:
var container = new Container(x =>
{
x.ForRequestedType<IValidator>().TheDefaultIsConcreteType<Validator>();
x.ForRequestedType<IRepository>().Use<Repository>()
.WithCtorArg("connectionString").EqualToAppSetting("CONNECTION-STRING");
});
container.AssertConfigurationIsValid();
This method will analyze every thing in the Container configuration and:
The previous sample is a valid configuration, but let's look at an invalid configuration. Let's omit the configuration of the "connectionString" constructor argument for the Repository class and try AssertConfigurationIsValid():
[Test]
public void lets_see_if_the_container_is_valid()
{
var container = new Container(x =>
{
x.ForRequestedType<IRepository>().Use<Repository>();
//.WithCtorArg("connectionString").EqualToAppSetting("CONNECTION-STRING");
});
container.AssertConfigurationIsValid();
}
When I run the unit test above, this is part of the output:
Build Error on Instance '73b7f21b-bbfd-462c-854d-5b2a2f98ba50' (Smart Instance for StructureMapSample.Repository) for PluginType StructureMapSample.IRepository, DovetailCRM.IntegrationTesting, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null StructureMap.StructureMapException: StructureMap Exception Code: 205 Missing requested Instance property "connectionString" for InstanceKey "73b7f21b-bbfd-462c-854d-5b2a2f98ba50"
which again, isn't the prettiest thing in the world, but it does tell me that the "connectionString" argument is missing for the Repository class. After seeing this output, I think that this output and error wording will get improved in an upcoming release.


--- layout: default title: 'Designs' ---
Our health is made up of thousands of seemingly unrelated pieces of information. Our genetics, our income, our blood pressure.
Projects like the Precision Medicine Initiative partners with institutions like Veterans Affairs, Partners Healthcare and a dozen other health provider organizations to enroll and collect all such health data on individuals in order to understand health holistically.
The aim of projects like the Standard Health Record from MITRE, FHIR from HL7, and CIMI, are to develop ways of organizing health information to manage our data and care in a useful way. Services can then compete on top of the open and well engineered architecture using the known rule set. Companies and citizens alike can drive towards more beautiful products, better access, and better care.
This is where design comes in. Visualizing the representation of health data in a way that is understandable, touchable, and usable for humans.
Design principles, values, and ideas around how our health should be delivered is what will drive that representation. We want to ensure that these ideas are designed in a way that ensures that future precision medicine services are built to be accurate, usable, and human centric.
Define the computable Precision Prism data elements for the core clinical and patient views.
Designs of the clinician and patient views using the precision medicine data elements.
Seed an open source design catalogue of precision medicine use cases, interaction principles and visualization techniques.
Assemble a panel of healthcare key constituents to vet and become apostles for the precision health view.
Firmly establish 20 global citizens to represent a diverse user group and establish 150 advisors to provide critical feedback and support for Precision Prism.
EHR vendor or hospital system adopts the precision health view.
Become the visual standard for precision medicine for the NIH and beyond.


PCRE-CONFIG
Section: User Commands (1)Index Return to Main Contents
NAME
pcre-config - program to return PCRE configurationSYNOPSIS
pcre-config [--prefix] [--exec-prefix] [--version] [--libs]
[--libs-posix] [--cflags] [--cflags-posix]
DESCRIPTION
pcre-config returns the configuration of the installed PCRE libraries and the options required to compile a program to use them.
OPTIONS
- --prefix
- Writes the directory prefix used in the PCRE installation for architecture independent files (/usr on many systems, /usr/local on some systems) to the standard output.
- --exec-prefix
- Writes the directory prefix used in the PCRE installation for architecture dependent files (normally the same as --prefix) to the standard output.
- --version
- Writes the version number of the installed PCRE libraries to the standard output.
- --libs
- Writes to the standard output the command line options required to link with PCRE (-lpcre on many systems).
- --libs-posix
- Writes to the standard output the command line options required to link with the PCRE posix emulation library (-lpcreposix -lpcre on many systems).
- --cflags
- Writes to the standard output the command line options required to compile files that use PCRE (this may include some -I options, but is blank on many systems).
- --cflags-posix
- Writes to the standard output the command line options required to compile files that use the PCRE posix emulation library (this may include some -I options, but is blank on many systems).
SEE ALSO
pcre(3)
AUTHOR
This manual page was originally written by Mark Baker for the Debian GNU/Linux system. It has been slightly revised as a generic PCRE man page.
REVISION
Last updated: 18 April 2007
Index
This document was created by man2html, using the manual pages.
Time: 05:29:07 GMT, December 24, 2015


Three dead and more than 150 homes destroyed as Australian wildfires rage
At least three people are dead, several remain missing and dozens have been injured as wildfires continue to raze Australia’s drought-stricken east coast.
Officials also said more than 150 homes have been destroyed.
Around 1,500 firefighters were battling more than 70 fires across Australia’s most populous state, New South Wales, with the most intense in the north-east where flames were fanned by strong winds, Rural Fire Service Commissioner Shane Fitzsimmons said.
Firefighters found the body of a man on Saturday in a burned car near Glen Innes, about 570 kilometres north of Sydney, he added.
A woman who was found on Friday unconscious and with serious burns near Glen Innes had died in hospital.
Her daughter-in-law Chrystal Harwood identified the victim as 69-year-old grandmother Vivian Chaplain, who was alone in her house in the small community of Wytaliba when it was engulfed in flames.
A third body was found on Saturday afternoon in a burned building at Johns River, north of Taree, a police statement said. That victim died in a fire hundreds of miles from Glen Innes.
Another seven people have been reported missing in the vicinity of the same fire.
Prime Minister Scott Morrison warned Australia to expect more bad news from the fire zones.
He told reporters in Sydney: “The devastating and horrific fires that we have seen particularly in New South Wales but also in Queensland have been absolutely chilling.”
The annual Australian fire season which peaks during the Southern Hemisphere summer has started early after an unusually warm and dry winter.
More than 30 people including firefighters received medical treatment for burns and one patient had a cardiac arrest.
At least 150 homes had been destroyed since Friday, and damage assessment teams had yet to reach some devastated areas. Residents could not yet return because of the dangers of fire, smoke and loose asbestos in the rubble, the Rural Fire Service said.
Hundreds of people were evacuated from their homes along a 310-mile swathe of the eastern seaboard from the Queensland state border south to Forster.
Forster is a town 190 miles north of Sydney, Australia’s largest city. Many spent the night in evacuation centres while some slept in cars.
In Queensland, around 50 wildfires were raging on Saturday. At least one house was lost, a firefighter suffered a broken leg and 6,000 residents were evacuated from three communities in the state’s southeast.
The Insurance Council of Australia declared the wildfire crisis a “catastrophe”, meaning insurance claims will be given priority.
In the New South Wales town of Taree, more than 300 people evacuated overnight to a social club, including Club Taree’s chief executive Morgan Stewart.
“It was pretty scary,” Mr Stewart said. “We’re hearing lots of stories of lost houses, lost property, goods and effects, animals, land. It’s going to be horrific, I think.”
READ MORE
Hong Kong politicians facing arrest amid ongoing protests.
This story was updateded at 9am.


Nearly 1,000 tourists stranded in New Zealand town following landslides
Authorities say road access to Franz Josef is not likely to be restored until Friday
Nearly 1,000 tourists are stranded in a small New Zealand town after stormy weekend weather triggered landslides and flooding along its main road.
Authorities said road access to Franz Josef is not likely to be restored until Friday.
Some of the tourists were choosing to leave by helicopter or small plane while others were waiting until the road reopened.
Westland mayor Bruce Smith said many of the 970 tourists in Franz Josef were taking the news in their stride but some were frustrated their travel plans had been disrupted.
Mr Smith said there were about 20 planes and helicopters flying in and out of the town to help people leave.
He said some tourists wanted to stay with their vehicles while others were trying to get confirmation their travel insurance would cover the extra costs of flying out.
“They all have the option of taking fixed wing planes or helicopters,” Mr Smith said.
“It’s just a question of who writes the cheque. I understand that.”
The mayor said there would have been many more people stuck if the slips had occurred a few weeks later.
He said the summer tourist season peaks in February, when the town gets about 6,000 tourists travelling through each day.
Dan Burt, a spokesman for aviation tourist operator Inflite, said it had flown about 60 tourists from the town on Monday on two planes and two helicopters it had diverted to the area.
He said it was charging them its normal rate of about 600 New Zealand dollars (€355) for the trip out.
Mr Burt said many tour operators and rental car companies had been good about allowing people to leave their cars behind.
“They’ve said, ‘Look, you get out of there and we’ll worry about the vehicle later’,” he said.
“We’re trying to make sure people have a really good experience when they fly with us.
Tourists typically visit the area to view the Franz Josef Glacier.
Stormy weather across New Zealand over the weekend caused disruption and road closures in many parts of the country, and at least one person has died after a volcano erupted on White Island.–PA


For this challenge you will be adding up all the numbers from 1 to a certain argument.
For the test cases, the parameter num will be any number from 1 to 1000.


1 After returning to Egypt, and avenging himself on his brother, Sesostris found work for the multitude which he brought with him from the countries which he had subdued.
2 It was these who dragged the great and long blocks of stone which were brought in this king's reign to the temple of Hephaestus; and it was they who were compelled to dig all the canals which are now in Egypt, and involuntarily made what had been a land of horses and carts empty of these.
3 For from this time Egypt, although a level land, could use no horses or carts, because there were so many canals going every which way. The reason why the king thus intersected the country was this:
4 those Egyptians whose towns were not on the Nile, but inland from it, lacked water whenever the flood left their land, and drank only brackish water from wells.


class: center, middle, inverse, title-slide # Lecture 18 ## Simulation and Debugging Strategies ### Tyler Ransom ### ECON 5253, University of Oklahoma --- # Plan for the day - Talk about simulation as a potentially useful tool in a data scientist's belt - Discuss how simulation can be helpful for debugging purposes --- # What is simulation? Simulation can mean a lot of different things, depending on the discipline 1. As it relates to our previous discussions, .hi[simulation has a close relationship with optimization]. That is, some objective functions are better solved by simulation than by gradient descent or other optimization algorithms. (Note: we won't cover any of these in this class) 2. .hi[Simulation can be a useful tool for debugging]. Suppose you have a statistical model, and you're not quite sure what the answer should be. You can generate fake data (in which you know all of the parameters of interest) and can use that fake data to make sure that you haven't made any mistakes. This is the context we will be discussing today. --- # The Monte Carlo method "Monte Carlo methods (or Monte Carlo experiments) are a broad class of computational algorithms that rely on repeated random sampling to obtain numerical results." -- [Wikipedia](https://en.wikipedia.org/wiki/Monte_Carlo_method) .hi[Why is it called "Monte Carlo"?] * *Monte Carlo* is a phrase coined by John von Neumann while working on the Manhattan Project. * (Monte Carlo is the name of the casino in Monaco where the uncle of von Neumann's co-worker, Stanisław Ulam, would borrow money to gamble) * It was a code name for Ulam and von Neumann's early use of what we now call the Monte Carlo method --- # Example What are the odds of being dealt a flush in 5-card poker? There are two avenues to computing this: 1. Use combinatorics (i.e. combinations and permuations ... "n Choose r") to analytically solve for the probability 2. Shuffle the deck and deal the cards 100,000 times and count the number of times a flush happens (2) is known as the "Monte Carlo method" --- # Another Example - In sports: "If the Cavs and Warriors had played that game 10 times, the Warriors would have won 9 of them" - This type of discussion implictly appeals to the Monte Carlo method (though 10 is almost never a reasonable sample size!) - Nowadays with computing getting cheaper and cheaper, it's often easier to solve problems via simulation than going through the analytical derivation --- # The Data Scientist's Lab Monte Carlo (or, equivalently, Simulation) can be thought of as "the data scientist's lab" because it's a way to discover new methods and test the properties of existing methods How to do this? Let's go through a simple example --- # Simulate the classical linear model What's the "Hello world" of optimization? The classical linear model! In math (matrix notation), this is `\begin{align*} y = X\beta + \varepsilon \end{align*}` In R code, this is ```r y <- X%*%beta + epsilon ``` --- # Steps to the simulation Here's what we need to do the simulation: 0. Random number seed (to be able to replicate random draws) 1. Sample size (`N`) 2. Number of covariates (`K`) 3. Covariate matrix (`X`), which is N by K 4. Parameter vector (`beta`) which matches the size of `X` 5. Distribution of `\(\varepsilon\)`, e.g. `\(N(0,\sigma^2)\)` --- # Coding steps Steps to create the data: ```r set.seed(100) N <- 100000 K <- 10 sigma <- 0.5 X <- matrix(rnorm(N*K,mean=0,sd=sigma),N,K) X[,1] <- 1 # first column of X should be all ones eps <- rnorm(N,mean=0,sd=0.5) betaTrue <- as.vector(runif(K)) Y <- X%*%betaTrue + eps ``` Now we have some fake data that follows our .hi[data generating process] --- # Evaluating the simulation We can now evaluate our simulation by, e.g. running ```r estimates <- lm(Y~X -1) print(summary(estimates)) ``` and we should get something very close to `betaTrue` as our estimates The estimates won't be exactly equal to `betaTrue` unless we have `N <- infinity` This is because of randomness in our `\(\varepsilon\)` (i.e. sampling variation) --- # Debugging What is debugging? It is the process by which you get "broken" code to work You "take the bugs out" of your code Obviously it's better to not write code that has bugs But this is impossible! Even the best coders in the world have to debug (Just like pro baseball players rarely get a hit more than 40% of the time) --- # Types of errors There are two broad [classes of errors](https://textexpander.com/blog/the-7-most-common-types-of-errors-in-programming-and-how-to-avoid-them/) for R users 1. .hi[Syntax errors] - you've made a typo - e.g. misplaced parenthesis, misplaced comma, not enough inputs to function 2. .hi[Logic errors] - your code is syntactically correct, but you've programmed the computer to do the wrong thing - e.g. conformability errors, trying to use OLS with a factor `\(y\)` variable, etc. --- # Common debugging strategies Suppose you get an error message. What do you do? Here's what I do. 1. Read the error message carefully! 2. Classify the message as a syntax error or a logic error 3. If syntax, look up what went wrong (e.g. documentation or Google) 4. If logic, try to figure out what went wrong --- # "Got here" - A tried-and-true helpful strategy is to print "got here" periodically - This can help you figure out where exactly the error might be - A related strategy is to stop the program and look at what the program is seeing - I will often type `asdgwej` or similar to make the program stop, and then examine the environment --- # Modern debuggers - For debugging within functions, modern IDEs like RStudio often provide a debugger interface - Allows the user to set a "break point" (without throwing an error like `sadgwioeg` would) - User can then look at the environment within the function - Interactive debugging can sometimes be faster than "got here" - But "got here" often works quite well - [Full instructions](https://support.rstudio.com/hc/en-us/articles/205612627-Debugging-with-RStudio) for how to use RStudio's debugger


Nosferatu (1922) * * * * (out of four) Starring Max Shreck, Gustav von Wangenhein, Greta Schroeder, Alexander Granack and John Gottowt Directed by F.M. Maunau Unrated, but the equivalent of a PG for intense themes Theatrical aspect ratio of 1.33:1 Released in 1922 Running 63 minutes
Hollywood has really done the whole Dracula thing to death (no pun intended - honest). It's a shame, too, because the good Count was probably the most frightening out the old B-movie monsters.  Are people really going to get that scared over a big green guy named Frankenstein that moves at a speed of five miles per hour? Hell no. And not only was the idea of a vampire frightening as hell, but it also carried with it a kind of sensual feeling as well, not commonly associated with horror films.
And not only has the idea been done too many times, but with the possible exception of From Dusk 'Till Dawn, has not been done very well lately, either. This is precisely why it was so much fun for me watching the original Nosferatu. I got to go back to the times when making movies (even horror movies) was considered an art form, and not just done to make cash like nowadays. And that is exactly what this film is; art. I've been a horror fan since I was eight years old, and to this day I have not seen any horror film cover the intellectual ground that this film covers.
Let me backtrack a minute. When I say "intellectual ground", I don't mean that Nosferatu tackles philosophical questions or anything like that, I just mean that in order for the film to work the way it was intended to, a little bit of thinking is involved.  Those movies could have been made by a fifth grader with a good makeup kit; movies like this require the viewer to actually pay attention and ponder what is happening on the screen. You see, this movie has barely any violence in it and even less blood or gore. This is a thinking man's slasher flick.
The "Nosferatu" of the title is Orlock (Max Shreck), a strange, hermit-like count that, as the film opens, is looking for a new home to buy. He employs the help of Hutter (Gustav von Wangenhein), a real estate salesman (or something to that effect) who has a nice home and even a fiancee named Ellen (Greta Schroeder). Upon orders from his boss, Hutter treks to the Transylvanian Mountains to visit Orlock's castle and speak to him about his new home (which just happens to be right next door to Hutter's). The next morning, he wakes up to find teeth marks on his neck...not really a good sign.
He then discovers through some reading that the count is a "Nosferatu", or vampire, one of the undead that feeds off the blood of living humans. But by the time he pieces this together, he is too late; Orlock has already embarked to Hutter's hometown via boat. Will Hutter reach his destination in time to save his fiancee from the deadly clutches of Count Orlock?
The character of Orlock is, of course, Dracula. The only only reason his name was changed was because this was an unauthorized account of Bram Strocker's novel. Just thought that was an interesting little side note...
Probably the only way you will get to see this fine film is by purchasing a copy of Arrow Entertainment's digitally restored cut, now available in stores. However, this version is quite different than Maunau's original masterpiece. The movie is now sporting a new soundtrack by band Type O-Negative and color tinting, much like the 1984 version of Lang's Metropolis. Now, I really appreciate what Arrow Entertainment is trying to do here, bringing a classic like this to the attention of a wider audience that might have otherwise just skipped this one. But alas, I like watching movies the way they were originally intended to be seen. But that's just my bag; you may like the newer, more "modern" version better. Either way, I suggest investing your money in a copy. If you like what they have done with it, pop it in the VCR and enjoy. If you're like me, just do what I'll do during future viewings; turn the color all the way down on your television, hit mute, turn on some Bach or Mozart or whatever, dim the lights and prepare to view what is truly one of the greatest films ever made.
Copyright 1998 Jason Wallis
Jason Wallis<EMAIL_ADDRESS>http://www.geocities.com/Hollywood/Boulevard/7475
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


Just want to take some notes about how to analysis the classificaiton results.
TP / FP / FN / TN:
The confusion matrix looks like:
There is another confusion matrix that exchange the posisiton of FN and FP. I don’t know which one is better.
| Parameter | Value |
|---|---|
| sensititvity (recall, true positive rate) | TP / (TP + FN) |
| false negative rate | FN / (TP + FN) = 1 - recall |
| specificity (true negative rate) | TN / (FP + TN) |
| fall-out (false positive rate) | FP / (FP + TN) = 1 - spec |
| positive predication value (precision) | TP / (TP + FP) |
| false discovery rate | FP / (FP + TP) = 1 - ppv |
| negative prediction value | TN / (TN + FN) |
| false omission rate | FN / (FN + TN) |
| accuracy | (TP + TN) / ALL |
| f1 score | 2 * TP / (2 * TP + FP + FN) = 2 * precision * recall / (precision + recall) |
All the above info can be found in this wiki page
Use x = FPR and y = TPR, we can draw a point in a space from (0, 0) to (1, 1). The best position for a classifier is at top left point (0, 1), which means zero FPR and zero FNR. And the result of a random classifier will be at the line from (0, 0) to (1, 1), which is the line of no-discrimination.
Yisha Wu 16 October 2014


App Developer - Web Designer - Graphic Artist
Get a Personal Website at < ₹ 6 per day
Get your Business / Personal Website / APP for as low as ₹ 10 per day.
Get a quote for business website, mobile APP or software.
Call us to get a quote, or to build a demo website for your needs.


Object Streams Tutorial
XStream provides alternative implementations of java.io.ObjectInputStream
and
java.io.ObjectOutputStream
,
allowing streams of objects to be serialized or deserialized from XML.
This is useful when processing large sets of objects, as only one needs to be in memory at a time.
Obviously you should use also a stream-based XML parser reading the XML. A DOM-based XML parser will process the complete XML and build the object model before XStream is able to to handle the first element.
Using the Object Streams
The interface to the object streaming capabilities of XStream is through the standard
java.io.ObjectOutputStream
and java.io.ObjectInputStream
objects.
Example
To serialize a stream of objects to XML:
ObjectOutputStream out = xstream.createObjectOutputStream(someWriter); out.writeObject(new Person("Joe", "Walnes")); out.writeObject(new Person("Someone", "Else")); out.writeObject("hello"); out.writeInt(12345); out.close();
The resulting XML:
<object-stream> <com.blah.Person> <firstname>Joe</firstname> <lastname>Walnes</lastname> </com.blah.Person> <com.blah.Person> <firstname>Someone</firstname> <lastname>Else</lastname> </com.blah.Person> <string>hello</string> <int>123</int> </object-stream>
To deserialze the stream of objects from the XML:
ObjectInputStream in = xstream.createObjectInputStream(someReader); Person a = (Person)in.readObject(); Person b = (Person)in.readObject(); String c = (String)in.readObject(); int d = in.readInt();
Considerations
Root node
Because an XML document can only have a single root node, all the serialized elements must be wrapped in an
additional root node. This root node defaults to <object-stream>
, as shown in the example above.
This can be changed by using the overloaded method:
xstream.createObjectOutputStream(Writer writer, String rootNodeName);
Close the ObjectOutputStream
Remember to call ObjectOutputStream.close()
, otherwise the stream will contain incomplete XML.
Detecting the end of the ObjectInputStream
When there are no more objects left to read in the stream, ObjectInputStream.readObject()
(or primitive
equivalent) will throw java.io.EOFException
.
References
Normally XStream will not know about references between the different objects that are written individually in the ObjectStream. Nevertheless there is an example in the acceptance tests (MultipleObjectsInOneStreamTest) where such a functionality is realized with the help of a custom MarshallingStrategy. Note, that this implementation is not for general use, since it will ignore some parameters at second invocation, but they do not matter in the demonstrated use case. Additionally those references prevent the objects from being garbage collected, which is a bit counter-productive for the use case of ObjectStreams as described above. So you have to know what you do!


This is my account of three seperate trips, each using 100 seeds of the sacred Aztec hallucinogen, Ololiuqui.
Taking the 100 at once has yeilded true trips lasting 6-10 hours. Sometimes similar to Ecstacy, or some mild LSD. All of my experiences have been for the journey and personal insight, as the natives also use these plants in such a way. The Aztec tradition is very old, and may offer alot of wisdom to those who treat nature (and themselves) with respect.
I prefer the Ololiuqui due to the much lower amount of 'bad chemicals' as compared to the morning glorys or baby woodrose. Although the strongest seed-induced trip I have experienced was with Madagascar Woodrose at 8 seeds, Ololiuqui seems to do just the right thing, but this may vary intensely depending on mindset. Experienced psychedelic users should have nothing to worry about. I will recount the three trips now for the explorers, skeptics, or worried enthusiasts.
TRIP ONE:
My 100 seeds arrive in the mail, and I take them at around 12 midnight, being the night owl I am. Many websites list the traditional way of preparing the seeds as either grinding or chewing the seeds up, and then leaving them in a small amount of water for several hours. I would'nt recommend chewing because your saliva may breakdown some essential chemicals. Doing some research, I found that the shamans would leave them in an alcohol solution, and not water. On my first try, however, I was not as informed as I am now, and I both chewed them and left them in water for about 1 hour.
The seeds taste like nothing I've tasted before, a mixture of something magical, ancient, and downright nasty. I liken the taste to perfume and spinnach. It packs a bite. Mixing them with alcohol instead of water lessens the bitter taste, and may help to extract more alkaloids from the plant material. The onset of effects is within an hour to an hour/half.
It feels like I've slipped into an off-world where everything feels like I'm in wonderland. I notice;
-A slight change in vision
-Colors are clearer
-Objects are more pronounced
-The air itself feels like i'm on another world.
A strange thing happens with Rivea that I haven't noticed with anything else, I tend to 'become' the image I am looking at. I can focus on something like a car, a dog, a woman, and then I am that car, dog, or woman. It's hard to describe. These seeds seem to be very unpredictable, and this first trip lasted about 5-6 hours with the same effects heightening, and then eventually fading off like a dream.
TRIP TWO:
100 seeds again, about 6 months later. I take them in the morning this time with the house empty. This was my strongest Rivea trip yet. The onset was fast, and came in waves with each new wave pushing me further into the world of the plant.
I begin to get very very happy and excited. The 'wonderland effect' is there again, but very different this time. I feel as if I am one with the heart of the earth, or the whole of nature itself. I realize that everything I experience is a part of me, and I of it. It's all one thing, and this thing is God.
I see slight visual hallucinations in the form of subtle passing lines of light, and the blue carpet which looks like waves begins to ripple slightly. I experience a pleasurable body-high much like Ecstacy. It seems the seeds this time have decided to be a little more exciting. The experience lasts 8 hours.
TRIP THREE:
I am including this one to show just how unpredictable these 'round things' are. 100 seeds again, I had eaten something about 5 hours before. Onset is about 1 hour, and the seeds seem to be 'bored', and offer me very little in terms of effects. About 20% of the last trip. There is no explanation for this that I can find.
I about to try on my fourth trip, with 100 seeds once more. In retrospect, these seeds seem to have a mind of their own. Sometimes I will be blown away to another world, and sometimes I will seem to be stuck with flypaper to my own.
The essense of the Rivea Corymbosa trip is a mostly emotional one, with very little (if any) visuals. Don't let that discourage you. Sometimes the things you cannot see are the strongest, and each trip seemed to put me atop a deep ocean of experience. Very LSD like. Never underestimate natural acids.
With each experience, though, I have come away with a feeling or experience that I felt I needed to have. Treat these little guys with respect. The possibilties are endless, and you will truly commune with the spirits of nature.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Installing Puppet on Windows
This documentation applies to Puppet versions ≥ 2.7.6 and Puppet Enterprise ≥ 2.5. Earlier versions may behave differently.
Before Installing
Downloads
Download the Puppet installer for Windows here:
If you are using Puppet Enterprise, use the PE-specific installer; otherwise, use the standard installer.
Supported Platforms
Puppet runs on the following versions of Windows:
- Windows Server 2012 (also supported by Puppet Enterprise)
- Windows Server 2008 and 2008 R2 (also supported by Puppet Enterprise)
- Windows Server 2003 and 2003 R2 (also supported by Puppet Enterprise)
- Windows 7 and 8 (also supported by Puppet Enterprise)
- Windows Vista
The Puppet installer bundles all of Puppet’s prerequisites. There are no additional software requirements.
Puppet Master Requirements
Windows nodes cannot serve as puppet master servers.
- If your Windows nodes will be fetching configurations from a puppet master, you will need a *nix server to run as puppet master at your site.
- If your Windows nodes will be compiling and applying configurations locally with puppet apply, you should disable the puppet agent service on them after installing Puppet. See Running Puppet on Windows for details on how to stop the service.
Version note for PE users: Your puppet master should be running PE 2.5 or later. On PE 2.0, the
pe_mcollective
andpe_accounts
modules cause run failures on Windows nodes. If you wish to run Windows agents but have a PE 2.0 puppet master, you can do one of the following:
- Upgrade your master to PE 2.5 or later
- Remove those modules from the console’s default group
- Manually hack those modules to be inert on Windows.
Installing Puppet
To install Puppet, simply download and run the installer, which is a standard Windows .msi package and will run as a graphical wizard.
The installer must be run with elevated privileges. Installing Puppet does not require a system reboot.
The only information you need to specify during installation is the hostname of your puppet master server: (If you are using puppet apply for node configuration instead of a puppet master, you can just enter some dummy text here.)
Note that you can download and install Puppet Enterprise on up to ten nodes at no charge. No licence key is needed to run PE on up to ten nodes.
After Installation
Once the installer finishes:
- Puppet agent will be running as a Windows service, and will fetch and apply configurations every 30 minutes. You can now assign classes to the node on your puppet master or console server. Puppet agent can be started and stopped with the Service Control Manager or the
sc.exe
utility; see Running Puppet on Windows for more details. -
The Start menu will contain a Puppet folder, with shortcuts for running puppet agent manually, for running Facter, and for opening a command prompt for use with the Puppet tools. See Running Puppet on Windows for more details. The Start menu folder also contains documentation links.
Automated Installation
For automated deployments, Puppet can be installed unattended on the command line as follows:
msiexec /qn /i puppet.msi
You can also specify /l*v install.txt
to log the progress of the installation to a file.
The following public MSI properties can also be specified:
| MSI Property | Puppet Setting | Default Value |
|---|---|---|
INSTALLDIR |
n/a | Version-dependent, see below |
PUPPET_MASTER_SERVER |
server |
puppet |
PUPPET_CA_SERVER |
ca_server |
Value of PUPPET_MASTER_SERVER |
PUPPET_AGENT_CERTNAME |
certname |
Value of facter fdqn (must be lowercase) |
For example:
msiexec /qn /i puppet.msi PUPPET_MASTER_SERVER=puppet.acme.com
Upgrading
Puppet can be upgraded by installing a new version of the MSI package. No extra steps are required, and the installer will handle stopping and re-starting the puppet agent service.
When upgrading, the installer will not replace any settings in the main puppet.conf configuration file, but it can add previously unspecified settings if they are provided on the command line.
Uninstalling
Puppet can be uninstalled through Windows’ standard “Add or Remove Programs” interface, or from the command line.
To uninstall from the command line, you must have the original MSI file or know the ProductCode of the installed MSI:
msiexec /qn /x [puppet.msi|product-code]
Uninstalling will remove Puppet’s program directory, the puppet agent service, and all related registry keys. It will leave the data directory intact, including any SSL keys. To completely remove Puppet from the system, the data directory can be manually deleted.
Installation Details
What Gets Installed
In order to provide a self-contained installation, the Puppet installer includes all of Puppet’s dependencies, including Ruby, Gems, and Facter. (Puppet redistributes the 32-bit Ruby application from rubyinstaller.org).
These prerequisites are used only for Puppet and do not interfere with other local copies of Ruby.
Program Directory
Unless overridden during installation, Puppet and its dependencies are installed into the standard Program Files directory for 32-bit applications.
For Puppet Enterprise, the default installation path is:
| OS type | Default Install Path |
|---|---|
| 32-bit | C:\Program Files\Puppet Labs\Puppet Enterprise |
| 64-bit | C:\Program Files (x86)\Puppet Labs\Puppet Enterprise |
For open source Puppet, the default installation path is:
| OS type | Default Install Path |
|---|---|
| 32-bit | C:\Program Files\Puppet Labs\Puppet |
| 64-bit | C:\Program Files (x86)\Puppet Labs\Puppet |
The program files directory can be located using the PROGRAMFILES
environment variable on 32-bit versions of Windows or the PROGRAMFILES(X86)
variable on 64-bit versions.
Puppet’s program directory contains the following subdirectories:
| Directory | Description |
|---|---|
| bin | scripts for running Puppet and Facter |
| facter | Facter source |
| misc | resources |
| puppet | Puppet source |
| service | code to run puppet agent as a service |
| sys | Ruby and other tools |
Data Directory
Puppet stores its settings (puppet.conf
), manifests, and generated data (like logs and catalogs) in its data directory. Puppet’s data directory contains two subdirectories:
etc
(the$confdir
) contains configuration files, manifests, certificates, and other important filesvar
(the$vardir
) contains generated data and logs
When run with elevated privileges, the data directory is located in COMMON_APPDATA\PuppetLabs\puppet
; see below for more about the COMMON_APPDATA
folder. When run without elevated privileges, the data directory will be a .puppet
directory in the current user’s home folder. Puppet on Windows should usually be run with elevated privileges.
The COMMON_APPDATA
Folder
Windows’ COMMON_APPDATA
folder contains non-roaming application data for all users. Its location varies by Windows version:
| OS Version | Path | Default |
|---|---|---|
| 7, 2008 | %PROGRAMDATA% |
C:\ProgramData |
| 2003 | %ALLUSERSPROFILE%\Application Data |
C:\Documents and Settings\All Users\Application Data |
Since the CommonAppData directory is a system folder, it is hidden by default. See http://support.microsoft.com/kb/812003 for steps to show system and hidden files and folders.
More
For more details about using Puppet on Windows, see:


Daniel Bennett
I am a PhD student in Human Computer Interaction, at the University of Bristol. My PhD focuses on quantitative approaches to embodied interaction drawn from recent cognitive science.
My current research builds on recent work in 4E cognitive science, developing methods to infer high level features of user experience and behaviour from signatures in user movement. More broadly, I am interested in Complexity Science as an source of interaction-focused methodologies for HCI. I am also interested in eudaimonic approaches to understanding UX, such as Self Determination Theory.
My research connects the two strands of my academic background - philosophy and computer science, with my interest in cognitive science. I’m influenced by ideas from phenomenology, enactivism, and ecological psychology, but also interested in the possibilities of quantitative and computational approaches.
I believe a rigorous approach to cognitive embodiment, can help drive forward understanding of interaction. Rather than treating interaction as simply the execution of the user’s action plan, it can help us consider the influence of context, other users, and the feedback relationship between user and technology. The computational approaches to embodiment I am investigating go beyond description and may be implemented in code and incorporated into adaptive technologies.
Aside from this, I am a musician, and interested in tools for musical creativity. I have performed at venues around Europe, composed music for theatre and art installations, and I also develop and share software for music making. Before returning to academia, I worked as the ‘Information and Performance Systems Manager’ for a large NHS trust - doing a mixture of database management, project management, BI development & IT strategy.
I have pages on twitter, github, google scholar and I have a newsletter, and an email address


--- layout: page title: About header-img: "img/about-bg.png" ---
My name is Carolyn Yates. I am a practicing physical therapist in NYC and now, an aspiring techy!


Illinois Student Senate
The official voice of the student body
We are the student senate of the University of Illinois Urbana - Champaign.
Leadership
As the student senate, we represent our classmates, friends, alumni, and future students.
Community
Anyone can join us and student senate to help our community stay ahead.
Impact
No matter what you do, or how much time you have, you can help make an impact for everyone.
Announcements
ISS Report on the College of Medicine
The Illinois Student Senate commissioned an ad-hoc committee to explore and discuss the proposed College of Medicine and then advise student senators. The report outlines summaries, questions and recommendations as the proposal moves forward. You can read the final report here
It’s On Us at Illinois Continues
As the semester heats up, so will the It’s On Us campaign. We released a new public service announcements for our series and have already begun planning some new campaign strategies and events for the semester. Help us change the conversation around sexual assault on college campuses and stay up to date here. Read more about our campaign in The News-Gazette or watch on WCIA. Previous Coverage: WCIA, WICD, UI-7, and The Daily Illini.
Teaching Excellence Awards
There are some professors and teaching assistants that go above and beyond in the classroom and provide Illinois students with an exceptional education. The ISS searches for these instructors to recognize and thank them with a Teaching Excellence Award during a formal ceremony in the spring. Students may now nominate their instructors for the awards here or read more information here.
Applications for Senator Vacancies Remain Open
The Eleventh Assembly still has Student Senator vacancies. Students who are interested in becoming a Senator should check the voting units and vacancy list to see if they are eligible to apply for a vacancy. The Committee on Internal Affairs reviews all applications for a vacancy and then appoints them on a rolling basis. Look at Get Involved to apply now.


This SRFI is currently in final status. Here is an explanation of each status that a SRFI can hold. To provide input on this SRFI, please send email to<EMAIL_ADDRESS>. To subscribe to the list, follow these instructions. You can access previous messages via the mailing list archive.
Syntax parameters are to the expansion process of a Scheme program what parameters are to the evaluation process of a Scheme program. They allow hygienic implementation of syntactic forms that would otherwise introduce implicit identifiers unhygienically.
Syntax parameters are a mechanism for rebinding a macro definition within the dynamic extent of a macro expansion. This provides a convenient solution to one of the most common types of unhygienic macro: those that introduce a unhygienic binding each time the macro is used. Examples include a lambda form with a return keyword, class macros that introduce a special self binding, or a while loop form that provides an escape procedure as a binding for an auxiliary abort keyword.
With the syntax-rules macro system, it is not possible to introduce bindings unhygienically. With low-level macro systems like the sc-macro-transformer or the syntax-case macro system, one can break hygiene by constructing new identifiers in an existing syntactic closure. While use cases of introducing identifiers unhygienically like in SRFI 99 seem unproblematic, the use cases given above where bindings are based on identifiers that are completely independent of the arguments of the macro are often severely broken.
With syntax parameters, instead of introducing the binding unhygienically each time, one instead creates one binding for the keyword, which is then adjusted later when the keyword to supposed to have a different meaning. As no new bindings are introduced, hygiene is preserved. This is similar to the dynamic binding mechanisms available at run-time (in the form of parameters), except that the dynamic binding only occurs during macro expansion. The code after macro expansion remains lexically scoped.
The first example is certainly not an example of good functional
programming style but it easily demonstrates how syntax parameters
are used and why
call-with-current-continuation
is known as the
fundamental control-flow construct.
(import (scheme base) (scheme write) (srfi 139)) (define-syntax-parameter abort (syntax-rules () ((_ . _) (syntax-error "abort used outside of a loop")))) (define-syntax forever (syntax-rules () ((forever body1 body2 ...) (call-with-current-continuation (lambda (escape) (syntax-parameterize ((abort (syntax-rules () ((abort value (... ...)) (escape value (... ...)))))) (let loop () body1 body2 ... (loop)))))))) (define i 0) (forever (display i) (newline) (set! i (+ 1 i)) (when (= i 10) (abort)))
The following example is derived from an example given in the Guile reference manual.
(import (scheme base) (scheme write) (srfi 1) (srfi 139)) (define-syntax-parameter return (syntax-rules () ((_ . _) (syntax-error "return used outside of a lambda^")))) (define-syntax lambda^ (syntax-rules () ((lambda^ formals body1 body2 ...) (lambda formals (call-with-current-continuation (lambda (escape) (syntax-parameterize ((return (syntax-rules () ((return value (... ...)) (escape value (... ...)))))) body1 body2 ...))))))) (define product (lambda^ (list) (fold (lambda (n o) (if (zero? n) (return 0) (* n o))) 1 list))) ...
(define-syntax-parameter <keyword> <transformer spec>)
Binds <keyword> to the transformer obtained by evaluating <transformer spec>. The transformer provides the default expansion for the syntax parameter, and in the absence of syntax-parameterize, is functionally equivalent to define-syntax. (For example, you may want to have the transformer throw a syntax error indicating that the keyword is supposed to be used in conjunction with another macro as in the examples above).
(syntax-parameterize ((<keyword> <transformer spec>) ...) <body>)
Adjusts the <keyword>
s to use the transformer obtained
by evaluating the corresponding <transformer>
s in
the expansion of the <body>
. Each keyword must be bound to a
syntax parameter. syntax-parameterize
differs from
let-syntax
in that the binding is not shadowed, but
adjusted, and so uses of the keyword in the expansion
of <body>
use the new transformers. This is
somewhat similar to how parameterize adjusts the values of regular
parameters, rather than creating new bindings.
A sample implementation for an implementation of the R7RS is provided in form
of the Rapid Scheme
implementation, which implements this SRFI in the
(rapid syntax-parameters)
library. This implementation will follow
any future changes in this specification.
Syntax parameters are also being implemented, at least, by Guile and Racket.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


{% block head %} {% endblock %}
Implementation of Neural Style Transfer from the paper A Neural Algorithm of Artistic Style (Gatys et al.) in Tensorflow 2.0.


Suck It Up
Best Roborock Vacuums in 2019
by Rebecca SpearBest Roborock Vacuums Android Central 2019
Keeping your house clean isn't the easiest thing in the world. You have to find the time between running to work, taking care of family, and scheduling in that much-needed downtime. Something that can help keep your home clean is a reliable robot vacuum. I personally go with Roborock since the company creates quality products, like the Roborock S5, which come with several convenience features while still being incredibly good at cleaning my home. Here are the best Roborock vacuums on the market today.
Buy one Galaxy S10 or Note 10 and get one free at Verizon
- Best Overall: Roborock S5
- Best Budget: Roborock Xiaowa E20
- Best Value: Roborock Xiaowa E35
- Best Battery Life: Roborock S6
- Best for Hard Floor Homes: Roborock E25
- Best Splurge: Roborock S5 Max
Best Overall: Roborock S5
When it comes to balancing price with all of the best smart conveniences, you can't get any better than the Roborock S5.  It's ideal for use on anything from hard floors to medium-pile carpets. It even comes with a detachable mop and a water tank so it can mop your hard floors. Just note that it doesn't avoid carpets while in mop mode so you will need to keep an eye on it.
You can control it with the Roborock app, the Mi Home App, or Amazon Alexa. Since this particular vacuum maps your home, you can even set up virtual walls in the app to tell it what specific rooms to clean or which ones to avoid. This smart feature helps make sure your home is cleaned the way you want without you needing to follow the vacuum around all day. Additionally, this unit has sensors that prevent it from falling down stairs or bulldozing into obstacles. It has a smaller dustbin than I would prefer, but 0.5 liters is still respectable.
Roborock vacuums are known for having good battery life and the same goes for the S5. It can run for up to 150 minutes before needing a recharge, which is much longer than average. What's more, if it runs low on battery during cleaning, it returns to the dock to charge and then continues cleaning right where it left off. You don't have to worry about it missing sections of your home. While it definitely isn't the least expensive unit you can buy, it's not that expensive for the level of quality it offers. If you're looking for an well-priced robot vacuum with plenty of smart features and powerful cleaning abilities, this is the one to get.
Pros:
- House mapping
- Powerful suction
- Virtual barriers
- Smart Home Assistant compatibility
- Extra long battery life
- Schedule cleanings
Cons:
- Expensive
- Smaller dustbin
- Will try to mop carpets
Best Overall
Roborock S5
An amazing robot vacuum
Control the Roborock S5 via the app or smart home assistant. It provides several conveniences and is one of the best robot vacuums on the market.
Best Budget: Roborock Xiaowa E20
This is the least expensive Roborock currently on the market. It should be noted that this unit can only handle hard floors and low-pile carpets. However, if your home is made up entirely of this kind of flooring, it'll be a perfect match. Unlike other budget units out there, this one still works with an app, allowing you to schedule cleanings. It also vacuums in organized back and forth lines instead of running every which way. I love this because your rooms look tidy after any cleaning session rather than looking like a small robot went on a zigzagging rampage around your home.
The battery lasts for up to 100 minutes, which isn't the longest time we've seen, but it's respectable. What I love about this unit is that it has an impressive dustbin that can hold up to 6.4 liters of dirt and debris. The dustbin capacity paired with the recharge and resume feature makes it so you don't have to worry about this unit missing spots of your home. Unfortunately, this unit doesn't map your home and you can't set up virtual walls within the app. However, if you want, you can purchase magnetic tape and put it around the sections of your home you don't want this vacuum to access.
It even has a water tank and allows you to attach a mop to the underbelly for mopping your hard floors. You'll just have to keep an eye on it when it's in this mode because it can't tell the difference between hard floors and carpets.
Pros:
- Inexpensive
- Runs up to 100 minutes
- Schedule cleaning times
- Recharge and resume
- Thorough cleaning
- Large dustbin
Cons:
- Doesn't map rooms
- Can't set up no-go zones
Best Budget
Roborock Xiaowa E20
A more wallet-friendly option
It has powerful suction to tackle anything from hard floors to medium-pile carpets and is a great choice for anyone looking for an entry-level robot vacuum.
Best Value: Roborock Xiaowa E35
If you're looking for a powerful-yet-inexpensive robot vacuum, you'll be interested in the E35. This little machine is equipped to tackle anything from hard floors to medium-pile carpets. It has four different carpet cleaning modes — Quiet, Balanced, Turbo, and Max — to help you clean your home the way you want.
This little device has one of the most impressive run times we've seen on a robot vacuum. It can run for up to 150 minutes before needing a recharge. As with more expensive units, this one features a charge and resume feature. So once the battery gets low, it runs to the dock, recharges, and then resumes cleaning in the same spot it was before. It makes it so you don't have to worry about the unit missing sections of your home, unlike some others out there.
Unfortunately, this unit isn't advanced enough to map your home. It does, however, employ dual gyroscopes and motion tracking to thoroughly vacuum every inch of your floor in an organized fashion. In comparison, other inexpensive units bump around randomly and aren't guaranteed to clean all of your floors. You won't be able to tell the unit to go clean a specific room or to avoid a specific room, but you can set it down in a specific area and tell it to do a Spot cleaning. This makes it so it will map out a 1.2-meter diameter square and clean within it.
Pros:
- Inexpensive
- Runs up to 150 minutes
- Schedule cleaning times
- Recharge and resume
- Spot cleaning
Cons:
- Doesn't map rooms
- Can't set up no-go zones
Best Value
Roborock Xiaowa E35
An affordable robot vacuum
This vacuum stuffed with impressive features at a low cost. You can control it using an app, have it mop your home, and schedule cleanings.
Best Battery Life: Roborock S6
When it comes to performance and power, the Roborock S6 is the best model in the lineup. It can run for up to 180 minutes on one charge, which is more than double what most robot vacuums can do. That means that it will be able to run for long stretches to reach every section of your floor in a timely manner. It also features recharge and resume so if the battery does run low, it will take a moment to recharge before continuing to clean where it left off.
You can control it with Amazon Alexa, the Mi Home App, or the Roborock App. What I love about it is that I can set up no-go zones or tell it to clean a specific area of my home. For instance, I often have it clean the living room so it can pick up all of the fur that comes off my Corgi each day. It maps and remembers your home so it can make an efficient cleaning route. What's more, it always cleans in an organized back and forth motion, so your rooms look beautiful and tidy instead of having random vacuum lines stemming from every direction.
The 0.5 liter dustbin is smaller than I would like, but it is still plenty big enough for the average home. You'll just want to check it and potentially empty it out after each cleaning. One of the reasons why the dustbin is so small is because the unit also has a water tank. You can attach the included mop to the underside of the unit and have it mop your hard floors. You will need to keep an eye on it since the unit won't avoid your carpets while mopping. All in all, this is a powerful robot vacuum that I recommend for any home.
Pros:
- Runs up to 180 minutes
- Mop mode
- Controlled with home assistants
- Maps your home
- Supports virtual walls
- Schedule cleanings
Cons:
- Smaller dustbin
- Doesn't detect carpet in mop mode
Best Battery Life
Roborock S6
It'll keep going and going
The S6 has an incredibly long battery life compared to other robot vacuums. It's powerful, reliable, and has a host of smart convenience features.
Best for Hard Floor Homes: Roborock E25
This unit is a slight upgrade from the E20. It has the power to clean hard floors and low-pile carpets but isn't suited for anything thicker. As it's cleaning, it detects when it moves from hard flooring to carpets and then increases its suction for a deeper clean. What's more, it has an impressive run time of 100 minutes, so it will be able to cover more ground in one go. Even if the power runs low, this unit returns to its dock, charges back up, and then finishes cleaning exactly where it left off.
Since this unit isn't as smart as others, it doesn't feature mapping or allow you to create virtual barriers. However, as with all the other Roborocks, it features internal gyroscopes and motion sensors that work to make sure it cleans your home in an organized manner. That way you know that it won't miss any sections of your floor, unlike some other inexpensive units out there.
You can control it using the Mi Home App, the Roborock App, or Amazon Alexa. The apps allow you to schedule cleanings and start or stop a cleaning at any moment. Additionally, this unit has a 0.64-liter dustbin, which is larger than average, so you won't have to empty it as much as you would some others. Along with the dustbin, this unit also has a water tank and an attachable mop so you can really get your hard floors sparkling. Don't worry. The unit is safe to use on wood flooring since it only lightly moistens your floors instead of getting them sopping wet.
Pros:
- Inexpensive
- Runs up to 100 minutes
- Schedule cleaning times
- Controlled with app
- Good-sized dustbin
Cons:
- Doesn't map rooms
- No virtual walls
Best for Hard Floor Homes
Roborock E25
Great for hard floor homes
It might not be as smart as other Roborocks, but it can spot clean, has recharge and resume, and can even be used to mop your floors.
Best Splurge: Roborock S5 Max
This awesome robot vacuum released this December, just in time for Christmas. I've had the chance to test the Roborock S5 Max for the past several weeks.  From the Roborock app, I can schedule cleaning times, tell the unit which specific room to clean, or put up a no-go barrier telling it to leave a room alone. I have a Corgi and a gray tabby who are constantly shedding and this vacuum does an amazing job of clean up after them. It even runs for up to 150 minutes, which means it's able to clean more of my home in one go.
The suction is strong enough to clean up kitty litter and the dry pet food that my animals drop into the carpet. I really can't tell you how many dustbins full of fur I've thrown in the trash since I got this vacuum.  The dustbin is only 4.6 liters, so you might need to empty it after each cleaning session. It's also got a 2.9-liter water tank, which is good for mopping a 700 square-foot home three times before needing more water. It's also one of the only robot vacuums that allows you to set up no-mop zones to prevent the vacuum from spritzing water on your carpets.
The laser navigation system and internal sensors prevent the vacuum from falling down stairs or crashing into your belongings. You'll still want to pick up cables out of its path, but it's more advanced than many other units out there. I love that it comes with a small safety razor, much like a letter opener, that stores directly on the unit. This allows me to easily cut hair or string off of the brush. You can even remove the brush if you're having a hard time getting something off of it. It might be more expensive than some other options out there, but it offers several conveniences that you'll be glad to have without costing a fortune.
Pros:
- Runs up to 150 minutes
- Schedule cleaning times
- Maps your home
- Works with smart home assistants
- Can set up no-go and no-mop zones
Cons:
- Expensive
- Smaller dustbin
Best Splurge
Roborock S5 Max
A super convenient robomaid
The Roborock S5 Max maps your home and cleans your floors in an organized fashion. It has good battery life and lets you set up no-go zones from the app.
Rockin' robot
There are so many different robot vacuums on the market that it can be hard finding something that's worth buying. In our experience, we've found that some of the best robot vacuums are created by Roborock. Each and every Roborock vacuum, whether it be an entry-level unit or a high-end unit, can be controlled via the app. What's more, they all feature technology that makes them vacuum in an organized and efficient back and forth manner.
My personal recommendation is the Roborock S5. This amazing device is powerful enough to pick up AA batteries and you can set up no-go zones or specifically send it to a certain area in your home using the app for a controlled cleaning. It's priced well and is also a good fit for a home with pets since it's able to pick up plenty of fur while making the rounds.
Credits
Rebecca Spear loves keeping up-to-date with the latest and greatest electronics. She is a life-long gamer and a writer who has written hundreds of online articles over the past four years. On any given day you'll find her drawing with her Wacom tablet, playing video games, or reading a good book. Find her on Twitter @rrspear.
We may earn a commission for purchases using our links. Learn more.


Contact Us for Artwork Availability and Pricing
Your Email
We will send you the download link to the email address provided
It is OK to occasionally send me updates via this email
I have read and agree to the terms of the license
SEND
We would like to ask you to share the work on social media and donate
You don’t have to but you will definitely earn some good art karma points and our deep appreciation :)
January-February 2017
Tooth and Nail (Kentucky/Pennsylvania) #3
James R Southard
Download Content:
- 2000 X 2000 JPEG
- 5000 X 5000 JPEG
- FULL PRODUCTION REZ
- License File


{% extends "account/show.html" %} {% load i18n %} {% load form_helper %} {% load token_tags %} {% block title %}{% translate "Subscriptions" %}{% endblock %} {% block breadcrumbs %} {% url "account-subscriptions" as section_url %} {% translate "Subscriptions" as section_name %} {% include "account/includes/breadcrumbs.html" with section_name=section_name section_url=section_url %} {% endblock %} {% block tab_content %}
{% trans "You can generate private URLs to subscribe to your requests in other applications." %}


Let ABC be a triangle.
I say that in the triangle ABC the sum of any two sides is greater than the remaining one, that is, the sum of BA and AC is greater than BC, the sum of AB and BC is greater than AC, and the sum of BC and CA is greater than AB.
Draw BA through to the point D, and make DA equal to CA.
Join DC.
Since DA equals AC, therefore the angle ADC also equals the angle ACD. Therefore the angle BCD is greater than the angle ADC.
Since DCB is a triangle having the angle BCD greater than the angle BDC, and the side opposite the greater angle is greater, therefore DB is greater than BC.
But DA equals AC, therefore the sum of BA and AC is greater than BC.
Similarly we can prove that the sum of AB and BC is also greater than CA, and the sum of BC and CA is greater than AB.
Therefore in any triangle the sum of any two sides is greater than the remaining one.
| Suppose there are two points A and B on the same
side of a line CD. The problem is to find the shortest path
which goes first from the point A to some point P on
the line CD, then from P to the point B. We
will only consider paths that are made out of straight lines; call
such a path a bent line. But that still leaves us the
question of which point P to choose on the line CD to
minimize the sum of the distances AP plus PB.
The solution is that the shortest path will be the path AEB where angle of incidence, namely, angle AEC, equals the angle of reflection, namely, angle BED. First, we should show how to construct the bent line where the angle of incidence equals the angle of reflection. Draw a perpendicular BF from the point B to the line CD (I.12), and extend it to B' so that FB' = BF (I.Post.2, I.3). Draw AB' and let E be the point where AB' intersects CD. (There will be a point of intersection since A and B' are on opposite sides of CD.) Draw BE. |
Now, triangles BFE and B'FE are congruent since they have two sides and the included angle equal (I.4), the included angles being right angles. Therefore, angles BFE and BF'E are equal. The vertical angle AEC across from angle B'ED also equals these angles (I.15). Thus, the angle of incidence AEC equals the angle of reflection BED.
We still have to show that the distance AE + EB is less than any distance AP + EP for any point P other than E that lies on the line CD.  Then by proposition I.20, above, AP + EP is less than AB'. But AB' = AE + EB', and EB' = EB, therefore AP + EP is less than AE + EB.
Thus, the shortest bent line between two points on the same side of a line that meets that line is the one where the angle of incidence equals the angle of reflection.
Q.E.D.


--- layout: base title: Silverlight Animation Examples ---
Dicussed in Beginning a Silverlight Animation framework.
Dicussed in Silverlight Animation Part 2: Size.
Dicussed in Silverlight Animation Part 3: Opacity.
Dicussed in Silverlight Animation Part 4: Transforms.


Save and View an Employee Profile
Size of Organization:
Last Fiscal Year Revenue:
Number of Organization Staff
Number of Destops per Full-time Employee
Last Fiscal Year IT Capital Budget
Last Fiscal Year Revenue
Last Year IT Operating Budget
Number of IT Staff
Number of Help Desk Staff
Total IT Spend per Employee
Number of IT Full-time Staff
Year
Researchers Click Me To Get Json Data