The following article
appeared in the newspaper, The Sentinel, on Thursday, May 23, 1907.
History
of Lewisville, Ohio.
Lewisville is located in Summit township,
seven miles West of Woodsfield, on the O.R.&W. railway. It is near the head waters of Wills creek,
Sunfish creek and Rich Fork. The
situation of the town is high and healthy, being 666 feet above the Ohio River
and 1250 feet above the sea level.
About 1/2 mile from Lewisville, on the George Feiock farm, is a hill
which is the second highest point in the state of Ohio, the highest being at
Bellefontaine. From this hill can be
seen the towns of Stafford, Lewisville, Graysville and Summerfield. Nine church spires can be counted on a clear
day and the outlines of the Blue Ridge mountains in West Virginia are
visible. When atmospheric conditions
are favorable the course of the Ohio river can be traced from Baresville to
Marietta. From the elevation the
township deserves its name, summit, being the highest township in the county.
It is somewhat a matter of speculation as
to why the town was located where it is.
Probably, because near a spring on Dr. Weber's farm was a mustering
point for the militia. The town was
laid out in 1837 by Barak Fisher and John Burton, the surveying being done by Michael
Atkinson. The town proper contains
forty-two lots besides a number of out lots which have been added to it
since. When surveyed a large part of
the town was yet in woods and the timber on the lots furnished fuel for the
residents. At this time wolves howled
through the surrounding forests. A saw
mill was built about 1837 by Ephraim Rucker and the first building in what is
now Lewisville was a small frame house owned by Barak Fisher and built on the
present site of Dr. Weber's residence.
Fisher seems to have been a strong character and an enterprising citizen
as the early history of the town bears several marks of his individuality. Most of the early building were log huts.
The first merchant in the town was a man by
the name of Reed who also kept hotel and dealt largely in tobacco the raising
of which was the early industry of the neighborhood.
As to the naming of the town one tradition
is that it was named from the famous hunter Lewis Wetzel who no doubt traversed
that neighborhood time and again.
Another version of it is that it was named after a son of Barak Fisher
who died in infancy, and whose grave is on the Dr. Weber farm 1/4 mile south of
town and formerly owned by Barak Fisher.
The grave is marked by a double head stone under a hickory tree well
preserved and for that date artistically carved. The stone is double as it marks the grave of twin children, Lewis
B. Fisher and Sarah J. Fisher, children of Barak and Jane Fisher and who died
June 26th, 1837, aged 13 months.
It will pay you to visit the spot and verify the above.
In view of the prominence of the man Fisher
and his misfortune happening just when the town was laid out and named, it
seems very probably and natural that he should have desired that the town be
named from his son and that his neighbors would respect his wish.
The town has enjoyed a steady growth and
prosperity. The population in 1880 was
120. At present it is about 300. In the early history of the town tobacco
raising was the chief industry reaching its height about 1865 when the crop for
that year was worth in the neighborhood of $50,000. This industry is still carried on to some extent but has given
way largely to general farming. As a
shipping point for country produce Lewisville is second to no town of it same
size on the O. R. & W. railroad if second to any. Considerable freight is received as it is a distributing point
for several other neighboring towns.
That the town enjoys a good patronage is
evidenced by the number of business men who are successfully engaged
there. There are three general stores,
three hardware stores, one grocery, two hotels, two barbershops, one millinery
store and one meat market. They are all
conducted by people who are up-to-date in their business methods and enjoy the
confidence of an increasing patronage.
Should you try to buy a home or a business
location in the town you will find that the present occupants are pretty well
satisfied with their home and business as real estate is as high and some say
higher than any other town in the county.
New buildings are being erected each year and we can truthfully say that
no town of the same size in the county has as many large and modern residences
as Lewisville.
The town supports two churches, one Methodist
Protestant and one Evangelical church, both having a membership of earnest men
and women whose influence has done much to mold public sentiment of the town in
the last few years.
One school building of two rooms
constitutes the town's institution of
learning. A new and larger one is
contemplated as the school has an enrollment of about 100 pupils. The teachers this year were Profs. C.W.
Young and C.D. Devoe. It might be
interesting to know that the first school in the township was taught near Lewisville
by Philip Cline in 1825. It was a
subscription school of thirty pupils at $1.50 each for three months, and was
paid mostly in corn at 18c per bushel.
That teacher's wages are raising slowly is evidenced by the fact that in
1881 the average wages for male teachers was $36 per month.
Several influences have combined to aid in
the progress of the town among which are the railroad and oil
developments. Before the advent of the
railroad farm products were hauled by wagon to Clarington in the summer time
and Barnesville in the winter. The oil
industry has aided more in an indirect than direct way by putting more money in
the immediate neighborhood. However,
the town may yet be the center of extensive oil developments. It has been proven by experiment that the
farms adjoining town have the very best grade of clay for tile, brick and
pottery. Should a broad gage railroad
be built the town may have a future as a manufacturing city.
The town was incorporated in 1890 and
manages its own affairs. The present
mayor is B.F. Bott. A commodious town
hall has been built in which to hold public meetings as well as court and
council proceedings &c.
Very few of the older residents remain and
among the present population probably no two men have spent more of their lives
in the town than Messrs. Edward Milligan and Henry J. Bender to whom we are
indebted for some of the most important parts of our information. May the future prosperity of the town and
its people far eclipse its past growth and advancement. F.L.W.
***********************************
The following is a
copy of the page from The Sentinel from which the above history was retyped.


home / programming / csharp / csharp11_dotnet_mark_price
C# notes
The "new" .NET Core consists of:
- CLR (Common Language Runtime) became CoreCLR
- BCL (Base Class Library) became CoreFX
.NET MAUI, a cross-platform platform for mobile and desktop apps was released in May 2022.
The C# Compiler (Roslyn)
C# source code is converted to IL (Intermediate Language), stored in a DLL or EXE file. It is then executed by the CoreCLR Virtual Machine.
Xamarin was bought by Microsoft. It is a platform for mobile apps.
Info about Local SDKs and runtimes
Run the following to get info about your dev environment:
dotnet --list-sdks dotnet --list-runtimes dotnet --info


Place the lamb shoulder onto a roasting tray. Pierce it all over about 20-30 times using a sharp knife, making incisions in the skin about 0.5cm/¼in deep. Insert the garlic slices and rosemary sprigs into the incisions.
Transfer the lamb to the oven and roast for 10 minutes, or until beginning to brown.
Reduce the oven temperature to 140C/275/Gas 1.
Pour the lamb stock and red wine over the lamb.
Continue to roast the lamb for two hours, or until the meat is very tender and the cooking liquid has thickened (check the meat and baste it with the cooking liquid every 20 minutes during cooking). Add more stock to the roasting tray if the liquid dries out.
Meanwhile, for the smoked aubergines, heat a frying pan over a high heat until smoking, then reduce the heat to its lowest setting.
Add the aubergines to the hot pan and cook for 20-25 minutes, turning every 4-5 minutes, until the skins are charred and the insides are tender. Remove from the pan and set aside to cool.
When the aubergines have cooled, cut each in half and scoop out all of the flesh (discard the skin).
Blend the smoked aubergine flesh, Greek-style yoghurt, lemon juice and garlic in a food processor to a smooth paste. Cover and chill in the fridge until needed.
When the lamb has cooked, set aside to rest for up to 20 minutes. Skim the fat from the thickened cooking juices left in the bottom of the roasting tray. Set aside.
Meanwhile, for the salad, heat a griddle pan over a medium to high heat. Drizzle over the one tablespoon of olive oil.
Cook the peppers for 4-5 minutes, turning once, or until golden-brown griddle marks appear on each side, then remove from the pan and set aside.
Add the onion rings to the pan the peppers were cooked in and cook for 3-4 minutes, turning once, or until golden-brown griddle marks appear on each side. Remove from the pan and set aside. Keep warm.
Add the courgette slices to the pan the onion was cooked in and cook for 3-4 minutes, turning once, or until golden-brown griddle marks appear on each side. Remove from the pan and set aside. Keep warm.
Add the mushroom slices to the pan the courgette slices were cooked in and cook for 3-4 minutes, turning once, or until golden-brown griddle marks appear on each side. Remove from the pan and set aside. Keep warm.
Add the griddled vegetables to a large serving bowl. Add the beans, cherry tomatoes, basil leaves, rocket leaves and feta cheese and mix well to combine.
Drizzle over the olive oil, to taste, and the balsamic vinegar. Season, to taste, with salt and freshly ground black pepper.
Just before serving, add the boiling water to the meat juices in the roasting tray and stir to combine to make a gravy.
To serve, tear the meat from the lamb shoulder using a fork and divide it equally among four serving plates. Pour over the gravy. Spoon the smoked aubergine and grilled vegetable and white bean salad alongside.


Netflower is a tool for visual exploration of flows in dynamic networks, such as money flows between organizations or migration flows between countries. It is a highly interactive web application particularly developed for investigative data journalism.
The tool was developed in the reserach project VALiD.
This tool requires a specific format for the tables in order to visualize them appropriately. Also only .CSV files are accepted. If the required format isn't met, it will result in errors or no displayed data. The format of the table headings defines all further views but needs to be in a specific order.
(1) Prepare your data file as a .csv file with the structure shown in the table.
(2) Load your data here and click 'Load & Show'.
(3) Here you can download some sample files.
(1) The main visualization is a sankey diagram. You read the sankey diagram from left to right. In this example you see the number of Asylum seekers which make an application. The left side show the origin countries and on the right are the destination countries.
(2) The small bar charts left and right show the amount of asylum applications over time from the original country and destination country point of view.
On the bottom of the site, you find two buttons 'Show Less' and 'Show More'. Here you can load more nodes or show less nodes. When you hover over the nodes (rectangles) in the visualization you get the information of how many asylum applications were made from the selected country (node). You also see that maybe not all destination and origin countries are visible by the hatching rectangle. Here you can use the buttons below to load more origin and destination countries.
Detailed view: By clicking on one connection line in the sankey diagram, you get a detail view showing the amount of asylum applications between the two nodes (origin countries and destination countries).
The screen picture shows the visual encoding. There is this example table of asylum data. The lines from the table to the sankey diagram show the encoding from the data to the visual element - in this case a sankey diagram.
You can filter, sort and order the data, which influences the visualization view.
1) You can filter the data in time and connection.
2) You can sort the data by source, target and flow and order it, ascending and
descending.
3) Exporting the data from the current view. You get a .csv file with the data of
the current visualization, including all sorting and
filtering operations.
4) You can limit the number of asylum applications by using the slider on both
sides.
5) Search for a particular country in the origin and also in the destination
countries using the seach box.
You can use tags to organize and group nodes on the source or target side. You can add tags
in
the .csv file you will upload, or you can
add tags directly in the visualization view.
1) Add tags in the .csv in the 'SourceTag' or 'TargetTag' row. By using the pipe sign '|'
you
can add more than one tag to a particular node.
2) You can add tags by clicking the tags-sign next to the nodes in the sankey diagram.
3) You can filter by tags by clicking the small button below the search either on the left
and
right side.
4) To see the flows between given tags you can switch the view in the header, as it is
desribed
in the video.
5) When you export the data, the tags, you have assigned in the visualization view, are
also
exported.
You can use a notebook, which opens when clicking the handler on the left side of the screen. You can add some notes and also export it as a .txt. file. This file can be loaded in the notebook sidebar, when starting for example a new session analysing data with netflower.
Please notice, that if you clean your browser forcefully or shut down your device, the data gets lost. However, if you referesh the page or go back to it if you closed the browser normally it will still be there!


@parindent 0mm @parskip 2mm
This program, bzip2
,
and associated library libbzip2
, are
Copyright (C) 1996-1998 Julian R Seward. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
Julian Seward, Guildford, Surrey, UK.
<EMAIL_ADDRESS>http://www.muraroa.demon.co.uk
bzip2
/libbzip2
version 0.9.0 of 23 August 1998.
PATENTS: To the best of my knowledge, bzip2
does not use any patented
algorithms. However, I do not have the resources available to carry out
a full patent search. Therefore I cannot give any guarantee of the
above statement.
bzip2
compresses files using the Burrows-Wheeler
block-sorting text compression algorithm, and Huffman coding.
Compression is generally considerably better than that
achieved by more conventional LZ77/LZ78-based compressors,
and approaches the performance of the PPM family of statistical compressors.
bzip2
is built on top of libbzip2
, a flexible library
for handling compressed data in the bzip2
format. This manual
describes both how to use the program and
how to work with the library interface. Most of the
manual is devoted to this library, not the program,
which is good news if your interest is only in the program.
Chapter 2 describes how to use bzip2
; this is the only part
you need to read if you just want to know how to operate the program.
Chapter 3 describes the programming interfaces in detail, and
Chapter 4 records some miscellaneous notes which I thought
ought to be recorded somewhere.
Go to the first, previous, next, last section, table of contents.


Boole's Inequality provides an upper bound on the chance of a union. Let $A_1, A_2, \ldots , A_n$ be events. Then Boole's Inequality says that $$ P(\bigcup_{i=1}^n A_i) \le \sum_{i=1}^n P(A_i) $$
That is, the chance that at least one of the events occurs can be no larger than the sum of the chances.
That the inequality is true for $n=2$ is visible in the figure below and can easily be proved using the inclusion-exclusion formula for $n=2$.
show_intersection()
For general $n$ the inequality can be proved by induction and is left for you as an exercise.
Because $P(\cup_{i=1}^n A_i) \ge P(A_k)$ for each $k$, we have a lower bound too:
$$ P(\bigcup_{i=1}^n A_i) \ge \max\{P(A_i): 1 \le i \le n \} $$So $$ \max\{P(A_i): 1 \le i \le n \} ~ \le ~ P(\bigcup_{i=1}^n A_i) ~ \le ~ \sum_{i=1}^n P(A_i) $$
For example, if the weather forecast says that the chance of rain on Saturday is 40% and the chance of rain on Sunday is 10%, then the chance that it rains at some point during those two days is at least 40% and at most 50%.
To find the chance exactly, you would need the chance that it rains on both days, which you don't have. Assuming independence doesn't seem like a good idea in this setting. So you cannot compute an exact answer, and must be satisfied with bounds.
Though bounds aren't exact answers or even approximations, they can be very useful. Here is an example of a common use of Boole's Inequality in data science. It has Bonferroni's name attached to it, because Boole and Bonferroni both have related bounds on probabilities of unions.
Suppose you are estimating five parameters based on a random sample, and that for each parameter you have a method that produces a good estimate with any pre-specified chance. For example, if the estimate has to be good with chance 99%, you have a way of doing that.
Now suppose you want your estimates to be such that all five are good with chance 95%. What should you do?
It is not enough to make each estimate good with chance 95%. If you do that, the chance that they are all good will be less than 95%, because the event "all are good" is a subset of each event "Estimate $i$ is good."
Boole's Inequality can help you figure out what to do.
Let $A_i$ be the event that Estimate $i$ is good. You want $P(A_1A_2A_3A_4A_5) = 0.95$. But now you are stuck, because all you can control are $P(A_1)$, $P(A_2)$, $P(A_3)$, $P(A_4)$, and $P(A_5)$ individually. You can make each of them as large as you want, but you don't know how they relate to the chance of the intersection, because the five estimates are dependent. They are all based on the same sample.
You can get yourself out of this problem by looking at the complement of the event "all five are good". The complement is "at least one is bad", which is the union of the events "Estimate $i$ is bad". Your condition is
\begin{align*} 0.05 &= P(\text{at least one estimate is bad}) \\ &= P(A_1^c \cup A_2^c \cup A_3^c \cup A_4^c \cup A_5^c ) \\ &\le P(A_1^c) + P(A_2^c) + P(A_3^c) + P(A_4^c) + P(A_5^c) ~~~ \text{by Boole's Inequality} \end{align*}Each term in the sum is the chance that the corresponding estimate is bad. You want those chances to be small. But you also want them to be large enough so that their sum is at least 0.05, because of the calculation above.
One way is to make each of them equal to $0.05/5 = 0.01$, that is 1%. In other words, you have to construct each estimate so that it is good with chance 99% (for example, by constructing a 99% confidence interval). This is called the Bonferroni Method of simultaneous inference.
The Bonferroni method shows that if you construct each of five estimates so that it is good with chance 99%, then the chance that all five estimates are good will be at least 95%.
You can replace 95% by any other threshold and carry out the calculation again to see how good the individual estimates have to be so that they are simultaneously good with a chance that exceeds the threshold.


Bear and corncobs
Just realize that lifelong learning is not only about the habit of curious for new things, but also need a good way to memerize knowledge and skills. Not smooth like a brand new car any more, my brain keep dumping something, which make me frustrated when I tried to do something that I had down long time ago, I have to do it like from fresh. What a clumsy bear I am.
Notes are helpful. I have been using Evernote, youdao note and onenote. They are all good to work like draft material repositories. When I read something and just want to keep them, in case I will need to remind sometime. The problem is that I can't share what I have practiced, emm, I have not been a developer since the start of my career. Let me see if I will have anything valuable to share.
As always, before I start using any new tools, like APP or software, especially for those I could use long time. Side by side comparison helps me to make decision. Hosting my blog, I had considered the following options.
CSDN, cnblog, segementfault, etc.
These are polular websites hosting technical blogs. They are all very handy, but I have zero control over the views of my blog, I don't like those Ads. Even they are strong in business, I still want my orignal texts stay safly in my personal cloud.
Building my own blog using wordpress
Hosting wordpress is on another extreme side.  I can learn a lot about website, about http servers, database, renting VPC, renting domain names, etc, which are not currently relevant to my daily work. So these knowledge doesn't improve my career. I would leave them in low prioriy in my "to learn" list.
Github pages, finally attracted me.
Basically, I still want the posts to be in simple format that can easier read even if from offline. Writing in markdown format which almost the same as text, satisfies my thought. I don't have to worry about transform too much when I may move my blog. Static web pages are good for simple personaly web, no Ads, tidy and focus. People are so smart using scripts to compile markdown into HTML. It is not necessary to spend time working on formats and decorite my web. There are a few scripts can be used. Here just put down some very basic ideas from my search and compare.
- Hexo This is writen by Note.js. It is known as good performance compiling files and easy to install. There are a lot of beautiful themes which attracts people.
- jekyll It is writen by Ruby. Performance is not good, said in some of the posts online, but it is still very polular. People don't always emphasis performance as the top 1 priority, I guess.
- Pelican Writen by Python, which I knows better than Ruby or Node.js. This is the reason why I pick this one. There could be one day I need to modified something for my own needs.
There are more static website generators, check them out from this link https://www.staticgen.com
Building up from scratch
Build Python enviroment
It must be verbose if I introduce Python. Here in this step, just make sure you have your own Python and vertual enviroment. I am using ANACONDA.
Get Pelican and quickly build your project, which is home of your local website.
conda activate pelican
Here 'pelican' is the name of my vertual enviroment.
Easly get module pelican.
pip install pelican
Alternatively, it can also be installed from source.
git clone https://github.com/getpelican/pelican
cd path-to-Pelican-source
python setup.py install
'Markdown' is strongly proposed. I don't see any use case that people host blog in github but not using Markdown as the orignal text of postes.
pip install Markdown
Then, choose a folder where you want all your project files to be stored. You can put it in you $HOME
path or any sync-up folder using any cloud APP. For me, I just simply use a path in my icloud. Here below let me use $MyBlog
as an alias of my own path.
cd $MyBlog
Initialize the project.
pelican-quickstart
It generates some folers and configuration files. We are using them later.
$MyBlog/
├── content
│ └── (pages)
├── output
├── Makefile
├── pelicanconf.py # Main settings file
└── publishconf.py # Settings to use when ready to publish
Here I list my project folder as an example.
ls $MyBlog
-rw-r--r-- 1 scabbard staff 3116 Jun 20 17:17 Makefile
drwxr-xr-x 4 scabbard staff 128 Jun 20 17:41 __pycache__
drwxr-xr-x 4 scabbard staff 128 Jun 22 23:10 content
drwxr-xr-x 4 scabbard staff 128 Jun 20 17:42 output
-rw-r--r-- 1 scabbard staff 893 Jun 20 17:41 pelicanconf.py
-rw-r--r-- 1 scabbard staff 597 Jun 15 16:36 publishconf.py
-rw-r--r-- 1 scabbard staff 2109 Jun 15 16:36 tasks.py
sign up for a new account from github, and activate github page
No difficulty I can imagine when signing up a new accout. Just make sure you have account there.
If you care about the FQDN/domain name, here is my understanding. With github, you username will be used as the prefix of the FQDN, like USERNAME.github.io. I would remind that to pick a good name that you like if you don't want to spend extra effort to apply for a fancy FQDN from provider, such as https://www.name.com or https://www.godaddy.com .
There is another way to define your FQDN if your USERNAME is not what you want to use, organization. Just create a new orgnization, and use ORGANIZATION.github.io as your FQDN.
By either way above, github page need to be activated. You need to create a new reposiborty, named as name USERNAME.github.io or ORGANIZATION.github.io. It is a must, refer to Github Page. For new git user, I would propose to check "Initialize this repository with a README" when you creat your repository, otherwise you will see error next when your run git clone to build your locate repository.
After Signing up, change path to $HOMEofBLOG/output
and then clone your own remote repository.
git clone https://github.com/bears-corncrib/bears-corncrib.github.io.git
It init an local repository in output
and have a full copy of your remote repository.
It can also be done step by step as following, but I would not propose you to do so unless you knows git some form already. Ignor the folowing steps and jump to next chapter.
-
Make a folder name whatever you like in
output
and change into it, mine is$MyBLOG/output/bears-corncrib.github.io
git init
You can check config fire in .git
folder
cat config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
-
Adding remote repository
git remote add origin https://github.com/bears-corncrib/bears-corncrib.github.io.git
Check what has been changed in config.
cat config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = https://github.com/bears-corncrib/bears-corncrib.github.io.git
fetch = +refs/heads/*:refs/remotes/origin/*
You can use git remote -v
to check current remote repository.
git remote -v
origin https://github.com/bears-corncrib/bears-corncrib.github.io.git (fetch)
origin https://github.com/bears-corncrib/bears-corncrib.github.io.git (push)
git pull origin master
-
download from remote repository.
git pull https://github.com/bears-corncrib/bears-corncrib.github.io.git
Adding another repository, optional, if you are in a country or area that has limited bandwitch to github
For my case, I picked Gitee. Make sure you can read Chinese to use this website.
Sign up for an account in Gitee, and similarly start your gitee page.
It is different from github. In gitee, you don't have to name your repository like name USERNAME.github.io or ORGANIZATION.github.io to activate page. Just name your repository withou gitee.io
, then your page will be accessible from YOURREPOSITORY.gitee.io. Mine is bears-corncrib.gitee.io.
Adding another remote repository. In your local repository folder cd $HOMEofBLOG/output/YOURLOCALREPOSITORY
git remote set-url origin --add https://gitee.com/bears-corncrib/bears-corncrib.git
Check what has been changed in config.
cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = https://github.com/bears-corncrib/bears-corncrib.github.io.git
fetch = +refs/heads/*:refs/remotes/origin/*
url = https://gitee.com/bears-corncrib/bears-corncrib.git
You can use git remote -v
to check current remote repository.
git remote -v
origin https://github.com/bears-corncrib/bears-corncrib.github.io.git (fetch)
origin https://github.com/bears-corncrib/bears-corncrib.github.io.git (push)
origin https://gitee.com/bears-corncrib/bears-corncrib.git (push)
Now you have both local project path and remote repositories.
Confiure your Pelican, make output folder to local repository of git
Edit Makefile
to let pelican knows that which folder to output.
 In your obsolute path, just add an escpate sign \ for all the spaces. Mine is blow as an example.
#BASEDIR=$(CURDIR)
BASEDIR=~/Library/Mobile\ Documents/com~apple~CloudDocs/MyBlog/pelicanBlog
INPUTDIR=$(BASEDIR)/content
OUTPUTDIR=$(BASEDIR)/output/bears-corncrib.github.io #Here point to your local repository.
CONFFILE=$(BASEDIR)/pelicanconf.py
PUBLISHCONF=$(BASEDIR)/publishconf.py
If you are not so good with Pelican's default theme, just download themes into a subfolder. My is $MyBlog/pelican-themes
, and then give the path in pelicanconf.py. THEME = 'pelican-themes/THEMEofYOURS'
There are some other parameters in pelicanconf.py, you can easily define and try.
Compose your first post
In content
, make a new markdown file, extension .md. Put the following meta data in the file on the top.
Title: My super title
Date: 2010-12-03 10:20
Modified: 2010-12-05 19:30
Category: Python
Tags: pelican, publishing
Slug: my-super-post
Authors: Alexis Metaireau, Conan Doyle
Summary: Short version for index and feeds
This is the content of my super blog post.
To understand how you should use the meta data, here is the example from this page.
Title: Birth of my Blog, Pelican based
Date: 2019-06-15 20:00
Modified: 2019-07-05
Category: bear's corncobs
Tags: github, gitee, Pelican, Blog, Python
Slug: Birth of my Blog
Authors: Tao
Summary: Here in this post, it records how I understand the steps building up my blog in a static web pages, and host it in both github and gitee.
Compile your first blog
Once you have finish composing your poste in .md files.
Go to the home of you Pelican project folder, like cd $HOMEofBLOG
Compile your post from markdown into html.
make html
You can review your page locally.
make devserver
Then, browse you blog from <IP_ADDRESS>:8000 or localhost:8000
Warnning: Don't use make publish or make github, they clear out your .git
folder from local reposibory. They are used to publish your page in another branch, gh-pages, and need another module "ghp-import", which I don't use.
publish to both of your remote repositories.
I am not using Pelican to publish blog pages to remote repositoriy, but directly using git. I would propose you to understand some of the basic use of git for this part.
Change working direcytory to cd $HOMEofBLOG/output/YOURLOCALREPOSITORY
, like mine cd $MyBlog/output/bears-corncrib.github.io
git add . #This will make sure all your new files will be added to track by stage of local respository
git commit -m "Your comments" #This will submit your stage to local repository
git push -u origin master #Push local repository to reomote repositories, both github and gitee, which defined above.
Note. Gitee.com doesn't automatically refresh you blog the same as github. You need to login your gitee account and refresh gitee page "Services->Gitee pages->Update"
Then you will be able to see your page in browser. Mine are https://bears-corncrib.github.io
and https://bears-corncrib.gitee.io
The late, Lazy like me
Every time, when you have any new posts or udpate. There are a few command to repeat. Here is my way to make them faster. Just save these lines in a bash file in your Blog project folder, mine is "updateBlog.sh"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
Run it in your project folder bash ./updateBlog.sh "Here is your comments for git commit"


Plan where you’ll start and stop hiking each day, but also target an earlier campsite or trailhead in case the going gets tough. When it comes to challenging paths, you may not get as far as you normally do. Also wise: Start out with low-mile days, then build up from there.


Source code for sigvisa.signals.mask_util
import numpy as np
import numpy.ma as ma
[docs]def grow_mask(mask, n):
N = len(mask)
return [mask[max(0, i - n):min(N, i + n + 1)].any() for i in range(N)]
[docs]def mask_blocks(mask):
"""
Return a list of masked blocks (contiguous portions of the signal in which the mask is True).
Throws an IndexError if the mask is False.
"""
blocks = []
block_start = 0
try:
in_block = mask[0]
except:
return []
for i in range(len(mask)):
if in_block and not mask[i]: # end of a block
blocks.append((block_start, i))
in_block = False
if not in_block and mask[i]: # start of a block
in_block = True
block_start = i
if in_block: # special case for blocks reaching the end of the mask
blocks.append((block_start, i + 1))
return blocks
[docs]def mirror_missing(m):
"""
Fills in missing values by mirroring the values to either side.
"""
data = m.filled(m.mean())
mask = m.mask
try:
blocks = mask_blocks(mask)
except IndexError:
return ma.masked_array(data, mask)
for i, block in enumerate(blocks):
start = block[0]
end = block[1]
n = end - start
# we can copy forward into each block an amount of signal
# equal to the time since the end of the previous block.
forward_copy = start if i == 0 else (start - blocks[i - 1][1])
# we can copy backwards into each block an amount of signal
# equal to the time until the start of the next block.
backward_copy = (len(data)) - end if i == (len(blocks) - 1) else (blocks[i + 1][0] - end)
max_copy = max(forward_copy, backward_copy)
if forward_copy >= n / 2:
if backward_copy >= n / 2.0:
forward_copy = int(np.floor(n / 2.0))
backward_copy = int(np.ceil(n / 2.0))
max_copy = backward_copy
else:
forward_copy = min(forward_copy, n - backward_copy)
elif backward_copy >= n / 2:
backward_copy = min(backward_copy, n - forward_copy)
for k in range(max_copy):
if k < forward_copy:
data[start + k] = data[start - k - 1]
if k < backward_copy:
data[end - k - 1] = data[end + k]
return ma.masked_array(data, mask)


|
We created the BitNami Project to help spread the adoption of freely
available, high quality Open Source web applications. BitNami aims to make
it easier than ever to discover, download and install Open Source software such
as document and content management systems, wikis and blogging software.
You can learn more about BitNami at http://bitnami.org
The BitNami LAPP Stack is an easy to install
software platform that greatly simplifies the deployment of Open Source web
stacks. It includes ready-to-run versions of
Apache, PostgreSQL and PHP. BitNami LAPP Stack is
distributed for free under the Apache 2.0 license.
You can learn more about BitNami LAPP Stack at http://www.bitnami.org
You can access the built-in management tool phpPgAdmin here. For security reasons it is password protected (user is 'administrator')
and only accessible when using <IP_ADDRESS> as the hostname.
|


January 12, 2019 by Admin
Registration for Miss Universe Anambra 2019 would commence on the 10th of February, 2019. Potential contestants can apply to enter the competition online via the Organisation's official website only as forms won't be made available either physically or on any other platform. REGISTRATION Registration for Miss Universe Anambra 2019 has commenced. Follow steps below to register:
1. Click the "Register" button. 2. Fill in the online form correctly. 3. Click the "Submit" button. 4. Check SMS or mail for contestant ID. 5. Present it at the casting venue for validation. *Note: Steps 4 and 5 are for successfully shortlisted contestants only.
January 11, 2019 by Admin
#ROADTOMISSUNIVERSEANAMBRA2019 is the official social media hash for the Miss Universe Anambra 2019 pageant competition. To keep up with us, follow our social media accounts on Facebook and Instagram where we are most active @missuniverseanambra.


When you should to book flights and hotels to get the biggest savings
It turns out the day of the week you book a holiday matters - as does how far in advance you should sign up to get the biggest savings. And now one travel firm has worked out the exact timings so you don't have to
by James Andrews, http://www.facebook.com/jameswritesmoney/You can knock more than 50% off the price of your flights by booking on the right day, with hotel bills dropping by as much as 69%, a new study has found.
In fact, even the day of the week you book on can have an impact on how much you pay for a holiday, research from KAYAK.co.uk has found.
The travel comparison wanted to know the exact time people were seeing the cheapest prices , so dug into its data, analysing million of quotes for people looking to go on holiday.
And the results weren't what a lot of people would expect.
Sophie Gough from KAYAK said: “There are so many myths when it comes to the best time to book your holiday, that it can be difficult for travellers to feel confident about when to book to get the best deal.
"That’s why we dig deep into our data each year to compile an extensive price analysis and find the best time for the most popular flight and hotel destinations among Brits."
The firm found that the best time for Brits to book depended on the destination - with prices dropping on different days for people flying to Europe vs North America, for example.
People planning flights to Europe saw the best deals 63 days before departure with - saving up to 56%.
Flying out on a Tuesday also saved money, with prices 23% lower compared to flying out on on a Sunday.
When it comes to hotels, the cheapest rooms are found 118 days in advance - when prices are up to 49% lower. The most expensive time to book a hotel, unsurprisingly, is the day of arrival.
When heading further afield the magic number of days to book in advance is 51 - with long-haul flights 42% cheaper than on the day of departure.
Tuesday is the cheapest day to fly again, saving you 13% compared to flying on a Saturday.
Hotel booking discounts were remarkably similar holidays closer to home, though, with the biggest savings found 115 days ahead of arrival.


Helpful for laying out rectangles.
|
|
|
|
|
left(self)
Return the x-coordinate of the left edge. |
source code
|
|
|
|
right(self)
Return the x-coordinate of the right edge. |
source code
|
|
|
|
top(self)
Return the y-coordinate of the top edge. |
source code
|
|
|
|
bottom(self)
Return the y-coordinate of the bottom edge. |
source code
|
|
|
|
center_x(self)
Return the x-coordinate of the boxes center. |
source code
|
|
|
|
center_y(self)
Return the y-coordinate of the left edge. |
source code
|
|
|
|
size(self)
Return the size of the box as array((width,height)). |
source code
|
|
|
|
width(self)
Return the width of the box (length along x-axis) |
source code
|
|
|
|
height(self)
Return the width of the box (length along y-axis) |
source code
|
|
|
|
center(self)
Return the coordinates of the boxes center as an array |
source code
|
|
|
|
radial(self,
angle)
Length of a ray extending from the center of the box at the specified
polar angle (in radians) to the edge of the box |
source code
|
|
|
|
move(self,
location)
Move box so that its top left corner is located at the specified
location. |
source code
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
above(self,
other_box,
margin=0)
Move box so that its bottom edge has same y-coord of the top edge of
other_box. |
source code
|
|
|
|
below(self,
other_box,
margin=0)
Move box so that its top edge has same y-coord of the bottom edge of
other_box. |
source code
|
|
|
|
left_of(self,
other_box,
margin=0)
Move box so that its right edge has same x-coord of the left edge of
other_box. |
source code
|
|
|
|
right_of(self,
other_box,
margin=0)
Move box so that its left edge has same x-coord of the right edge of
other_box. |
source code
|
|
|
|
|
|
|
|
|
|
center_on(self,
other_box)
Move box so that its center is the same as other_box's center. |
source code
|
|
|
|
same_as(self,
other_box,
edge,
margin=0)
Set the specified edge of this box to be aligned with the same edge
of other_box. |
source code
|
|
|
|
radial_offset_from(self,
other_box,
angle,
margin=0)
Move this box so that its center is aligned along a radial ray out of
other_box's center at the specified angle (in radians), and its edge
touches the appropriate edge of other_box. |
source code
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inflate(self,
percent)
Expand the box in all directions by the specified percentage. |
source code
|
|
|
|
|


BlazingCache is a fast Cache for distributed Java applications.What is BlazingCache?
BlazingCache leverages Apache Zookeeper for services discovery and coordination. A replicated coordinator service is used as central point of communication to ensure the consistency of cache entries between the members.
BlazingCache will protect you from reading stale data from cache and guarantee that if a member of the group invalidates an entry or a more recent version of a value is put into the cache the operation will be propagated to all the other peers in the system.
BlazingCache is very small and designed to be a very fast cache from the get go. It implements a small set of features and doesn't require multicast or complex manual configurations. Since version 1.4.0 BlazingCache implements JSR107 JCache API.
10/04/2017 - Release notes
BlazingCache 1.12.0 introduces Netty 4.1.X, Native-Epol on Linux, OpenSSL and JCache single server embedded mode
08/11/2016 - Release notes
BlazingCache 1.11.0 introduces SASL/Kerberos authentication
23/09/2016 - Release notes
BlazingCache 1.10.0 introduces CacheClient.load() feature
14/06/2016 - Release notes
BlazingCache 1.9.0 introduces JCache JSR107 support for StoreByReference optional feature
13/05/2016 - Release notes
BlazingCache 1.8.0 is a GA release
19/04/2016 - Release notes
BlazingCache 1.7.0 introduces fetchObject, getObject and putObject methods
23/03/2016 - Release notes
BlazingCache 1.6.0 introduces fetch/put/invalidate serialization
01/03/2016 - Release notes
BlazingCache 1.5.0 introduces detailed performance counters
26/01/2016 - Release notes
BlazingCache 1.4.0 introduces distributed locks
21/01/2016 - Release notes
BlazingCache 1.3.0 introduces JSR107 API, first public release


Rakshit Gusain
Hi !. Im Rakshit Programmer and Web Developer. Im currently persuing my B.Tech. from Manav Rachna Internation Institute of Research and Studies(MRIIRS) xyz......
Contact Me


| write_input_swat2012_other | R Documentation |
Write out default SWAT 2012 meteorology input file
write_input_swat2012_other(file, data, station_names, type, col_time_name = "time_posix")
file |
string: directory + file name of output file |
data |
data.frame: contains a column with time stamp and >=1 columns with data; time column needs to be of type POSIXct |
station_names |
character-array: contains names of the stations to write out; have to be equal to column names of data |
type |
character: file type ('wnd', 'slr', 'hmd'); only used in the header row |
col_time_name |
character, optional: name of the time stamp column, default = 'time_posix' |
# see example in README explanation of the following command: - make time column: format(data[[time_name]],"%Y%m%d") - format the individual values of the data column: formatC(as.matrix(data[station_names]), format='f', width=8, digits=3, flag='0') We need 'as.matrix' because my_data is a data frame. formatC cannot be applied to a 2d data frame. - append all formatted data values in one row: apply(formatC(...), 1, paste0, collapse = '')


Hello! I'm Mustafa
I graduated from new Cairo academy as an electrical power engineer with a general grade excellence and I have an experience in web development since 2015.
Download My CvElectrical Power Engineer & Web Developer
I graduated from new Cairo academy as an electrical power engineer with a general grade excellence and I have an experience in web development since 2015.
Download My CvBachelor's Degree
Bachelor degree in Electrical engineering
Grade: Excellence (95.5%)
Project: Electric Distribution in a compound city
Project grade: excellence.
Bachelor's Degree
Bachelor degree in Electrical engineering
Grade: Excellence (95.5%)
Project: Electric Distribution in a compound city
Project grade: excellence.
Internship
learned all things related to Electrical Distribution System in a hospital.
Internship
learned lighting design for indoor and outdoor using Dialux.
Electrical Design Engineer
Design Low and Medium Voltage System.
Course
Taking a Distribution course and PLC course.
Course
Taking an English conversation course.
Technical Office Engineer
Lighting Design For Indoor And Outdoor Applications.
Technical Office Engineer
Lighting Design For Indoor And Outdoor Applications.
Electrical Design Engineer
Design Low and Medium Voltage System.
Internship
learned lighting design for indoor and outdoor using Dialux.
Internship
learned all things related to Electrical Distribution System in a hospital.
Course
Taking a Distribution course and PLC course.
Course
Taking an English conversation course.
Electrical Power Engineer & Web Developer
Electrical Power Engineer & Web Developer


Huawei nova 6 5G dazzles with a new brand logo - Gizchina.com
by Efe UdinHuawei nova 6 5G dazzles with a new brand logo
4.3 (86.15%) 13 votes
Chinese manufacturing giant, Huawei, is getting set to release its first 5G smartphone in the nova series. According to the latest renders of this phone. the Huawei nova 6 5G version will have a red colour option. Not only that, it appears that this smartphone will come with a new “nova” brand logo at the glass rear. The usual “Huawei” logo is placed on the right side of the camera.
The Huawei nova 6 uses a full-screen display with a dual punch-hole camera in front. On the rear, it has triple vertical cameras while the fingerprint sensor is on the side. As of now, the nova 6 has passed through TENAA and it will be available in 4G and 5G versions. The 5G version will use the Kirin 990 5G chip.
The Kirin 990 5G adopts the industry’s most advanced 7nm+ EUV process. It integrates the 5G Modem into the SoC for the first time. It is also the world’s first mobile terminal chip with more than 10.3 billion transistors. This chip uses Cortex A76 architecture. In terms of chip specifications, the Kirin 990 5G chip adopts the CortexA76 architecture, which uses a combination of 2+2+4 cores. The clock speed of the large CPU core reaches 2.86GHz; the clock speed of the medium CPU core is 2.36GHz; and the frequency of the small CPU core is 1.95GHz. The GPU is Mali-G76MP16. For now, there are speculations that the Huawei nova 6 may arrive in December.


Features
Hardware Details
- Based on JeeNodeV5 design - many thanks to Jean-Claude Wippler for sharing his great work
- Compatible with most JeeNode shields
- Designed to run on 3.3V and be powered by 2x AA batteries
- Designed to fit in this case
- Uses 3.5mm jack plug connections
- Can be powered using 5V via the mini-USB connector
- Requires FTDI cable for programming
Energy Monitoring
- 3 x CT monitoring channels - based on OpenEnergyMonitor design using seedstudio 100A max CT's SCT-013-000
- 1 x AC 9v input - (optional) for real power measurements see AC non-invasive for more details
- 1x pulse counting input for interfacing directly or optically (using TSL257 Light to Voltage sensor) with pulse output utility meters. Do not fit 10K resistor R8 if using TSL257 optical sensor to detect pulses.
or - pulse input can be used with TSL261R IR for reading output from IrDA meter outputs: http://openenergymonitor.blogspot.co.uk/2012/08/reading-watt-hour-data-from-elster.html
Note: CT sensors give a much better reading of instantaneous power than pulse counting, we recommend using CTs whenever possible. When monitoring power using the pulse counting method, the sample rate is limited to the pulse rate. At low power values, the pulse rate can be extremely slow.
Temperature
- Supports multiple DS18B20 digital temperature sensors on a one-wire bus. Potentially up to 16; limited by wireless data packet size.
Wireless
- Uses Hope Alpha RF / RFM12B Transceiver. Frequencies available include: ISM band 433Mhz (All countries), 868Mhz (Europe only), or 915 MHz (US and Australia only). The OpenEnergyMonitor kit includes the option of a 433Mhz or 868Mhz module.
- Up to 30 emonTxs can communicate with one emonBase station
- Potential for 250 different network groups set up in a single location
Power
The emonTx is designed to be powered by 2 x AA batteries or by 5v USB/FTDI. When powering the unit with 5V through the USB or FTDI header the on-board voltage regulator will reduce the voltage to 3.3V. The battery connection header is not regulated, therefore the max voltage at the battery header should should not exceed 3.3 Volts. If higher voltage is connected, the RFM12 is at risk of damage. The RFM12 can be operated at 5V, but that exceeds the recommended maximum.
emonTx was designed to consume as little power as possible. (Low power optimisation details are here) Much of the power optimisation can be done via software, e.g. putting the Atmega and RF12 to sleep when practical to do so. The following measurements were taken with two CT channels connected, but the software was reading from only one channel:
0.1mA @ 3.13V = 0.31mW when Atmega and RF12 in sleep mode
6.7mA @ 3.13V = 21mW when ATmega is awake and RF12 is in sleep mode
7.14mA @ 3.13V = 22.35mW when ATmega and RF12 are awake but not transmitting
14mA (approx) @ 3.13V = 43.8mW when RF12 is transmitting - max power
Physical dimensions
Case: 102.8 mm x 61 mm
PCB: 63.3 mm x 56 mm


Lorem Ipsum is simply dummy text of the printing and
the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy
Lorem Ipsum is simply dummy text of the printing and
the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy
Lorem Ipsum is simply dummy text of the printing and
the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy
Lorem Ipsum is simply dummy text of the printing and
the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy


Billing Export Report for
{{project}}
Don't want to receive this email? Unsubscribe
here
{% if triggered_alerts %}
Warning: These Alerts have Triggered!
{% for alert in triggered_alerts %}
{{ alert.name }}
{% endfor %}
{% endif %}
Current Billing Data:
Sku
Amount
{% for column in current_data.columns %}
{{column}}
{{"$%.2f"|format(current_data.rows[0][loop.index])}}
{% endfor %}
- The Billing Export Reporter


Who said it: Trump or Kanye?
...Finding your next #TrumpYe quote!
Trump
Score:
0
Skip
Kanye
Placeholder
Next


×
HOME
QUESTION BANK
TRAFFIC SIGNAL
EXAM
MOBILE APP
☰ Menu
Welcome a test
There are 15 Questions.
You Have 48 Second for each Questions
You must have Answer 11 Questions correctly to get Qualified for LLR.
Types of Questain are Rules and Regulation of traffic and Traffic Signage's in the test.
start


DOH confirms Philippines' 8th case of polio in Basilan
A 9-year-old girl from Basilan is the latest known case of polio in the country. Out of the 8 cases, 7 are from Mindanao.
by Michelle AbadSubscribe
Email Address
Newsletters
- Glenda Gloria's Take this Tuesday
- Huddle by Miriam Grace Go
- The Newsbreak Agenda by Chay Hofileña
- Sometimes, all you need is video by Lilibeth Frondoso


Interface: tos.chips.rf230.RF230Config
interface RF230Config
This interface needs to be implemented by the MAC to control the behaviour
of the RF230LayerC component.


|
OpenM++ runtime library (libopenm)
|
ini-file reader: load all entries in memory and provide search methods. More...
Public Member Functions | |
| IniFileReader (const char *i_filePath, const char *i_codePageName=nullptr) | |
| load all ini-file entries in memory and convert into UTF-8. More... | |
| bool | isLoaded (void) const noexcept |
| return true if ini-file loaded correctly or false on error | |
| bool | isExist (const char *i_section, const char *i_key) const noexcept |
| return true if section and key exist in ini-file. | |
| bool | isExist (const char *i_sectionKey) const noexcept |
| return true if section.key exist in ini-file. | |
| const string | strValue (const char *i_section, const char *i_key, const string &i_default="") const noexcept |
| return string value by section and key or deafult value if not found. | |
| const string | strValue (const char *i_sectionKey, const string &i_default="") const noexcept |
| return string value by section.key or deafult value if not found. | |
| const IniEntryVec & | rowsCRef (void) const |
| return const reference to ini-file entries. | |
| const NoCaseSet | sectionSet (void) const noexcept |
| return names of ini-file sections as case-neutral set of strings. | |
| const NoCaseMap | getSection (const char *i_section) const noexcept |
| return section by name as case-neutral map of (key,value). | |
Static Public Member Functions | |
| static void | loadMessages (const char *i_iniMsgPath, const string &i_language="") noexcept |
| read language specific messages from path/to/theExe.message.ini and pass it to the log | |
ini-file reader: load all entries in memory and provide search methods.
| IniFileReader::IniFileReader | ( | const char * | i_filePath, |
| const char * | i_codePageName = nullptr |
||
| ) |
load all ini-file entries in memory and convert into UTF-8.
| [in] | i_filePath | path to ini-file. |
| [in] | i_codePageName | (optional) name of encoding or Windows code page, ie: English_US.1252 |
| [in] | i_filePath | path to ini-file. |
| [in] | i_codePageName | (optional) name of encoding or Windows code page, ie: English_US.1252 |
Ini file example:
[section] ; section is required, global entries are not allowed
rem = ; comment only and empty value ; next line is empty value without comment non = val = no comments dsn = "DSN='server'; UID='user'; PWD='secret';" ; comment: database connection string lst = "the # quick" brown 'fox # jumps ; over' # use "quote" and 'apostrophe' to escape characters and keep spaces unb = "unbalanced quote ; this is not a comment: it is a value started from " quote
trim = Aname,Bname, \ ; comment: multi-line value joined with spaces trimmed Cname,DName ; comment: result is: Aname,Bname,Cname,DName
abcd = Aname,Bname, \ ; multi-line value ended with empty line Cname,DName \ ; result is: ; Aname,Bname,Cname,DName
; multi-line value started with " quote or ' apostrophe ; right spaces before \ is not trimmed, result is: ; Multi line text with spaces ; keep = "Multi line \ text with spaces"
; multi-line value started with " quote or ' apostrophe ; result is the same as above: ; Multi line text with spaces ; same = "\ Multi line \ text with spaces\ "


Our goals for this project are to:
1. Analyze local barbershop trends based on demographics and yelp reviews.
2. Utilize survey and yelp data to create actionable insights for local businesses.
✔ Data Wrangling with Python|Pandas
✔ Web Scraping with Beautiful Soup & Google
✔ Machine Learning in Rstudio & Sklearn
✔ Visualizations in Matplotlib & GGPlot
✔ Interactive Dashboard in Power BI
✔ Web Development in html, css & js
✔ Presentation in reveal.js, ipynb-md & R-md
# YELP SEARCH BY BUSINESS & ZIPCODE
def search_yelp(search, zipcode):
# SCRAPE FUNCTION FOR BUSINESS METADATA
def scrape_yelp(url):
# FUNCTION TO CREATE A PANDAS DF
def create_table():
# FUNCTION TO SCRAPE REVIEWS
def get_review_content(url2):
Full Script on TTP Insights
Blog Post Google Forms Survey
Whites and Asians spend roughly the same amount, but the former goes for less frequent haircuts. About a 20 day difference.
Hispanic/Latino spend the most and go the most often, every 2.5 weeks.
Will the customer buy product after the haircut?
# Logistic Regression in Python
from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression(class_weight='balanced')
Source Code Logistic Regression
What factors determine a customer’s price point and what can businesses do with this information?
In order to determine what factors drive price point, TTP commissioned a customer survey. Results of this survey were fed into a predictive model.
Using predictive modeling it was determined that there are 3 primary factors that determine price point:
1. Importance of price
2. Importance of atmosphere
3. Method of finding the salon
Base Case: Projected Price Point $40.36
This is what we would guess before we know anything about a person.
| Price Importance | Factor |
|---|---|
| Low | 274% |
| Medium | 168% |
| High | 100% |
| Atmosphere Importance | Factor |
|---|---|
| Low | 46% |
| High | 100% |
| How did you find? | Factor |
|---|---|
| Walk in | 76% |
| Yelp | 81% |
| Referral | 100% |
Using the data to make more informed business decisions
High End Boutiques:
# Referrals are more important than Yelp
# Atmosphere is key
# Price is of no concern
Supercuts:
# FOCUS on Yelp
# Atmosphere does not matter
# Price is KEY


A subclass of the junit class TestCase that adds revision checks to test classes.
TestCase
An interface for software revisions
An convenience class that implements all non-basic methods of the Revisioninterface.
Revision
An class for CVS revisions.


This is a web application made with the help of Flask, a microframework for Python based on Werkzeug, Jinja 2, and good intentions. On the backend, a machine learning model is classifying the wine sample entered as good or bad. The machine learning model was trained on the Wine Quality Dataset from the UCI Machine Learning Repository.
Using the range slider below, enter the values for each feature and hit the submit button. The features will then be forwarded to the machine learning model to evaluation. For more projects like these, just click on the Github button.
GitHub PortfolioVerdict by the model:
{% if y_pred == 1 %}| # | Feature | Value Inserted |
|---|---|---|
| 1 | Fixed Acidity | {{ fa }} |
| 2 | Volatile Acidity | {{ va }} |
| 3 | Citric Acid | {{ ca }} |
| 4 | Residuak Sugar | {{ rs }} |
| 5 | Chlorides | {{ ch }} |
| 6 | Free Sulfur dioxide | {{ fs }} |
| 7 | Total Sulfur dioxide | {{ ts }} |
| 8 | Density | {{ ds }} |
| 9 | pH | {{ pH }} |
| 10 | Sulphates | {{ sp }} |
| 11 | Alcohol | {{ al }} |


This walkthrough will run through setting up AdminUI manually in Azure.
The IdentityExpress Admin UI consists of two sites: the UI, and the backend API. These then integrate with an IdentityServer installation for authentication and authorization.
AdminUI Deployment
AdminUI is deployed as 2 separate Azure Web Applications - one for the UI website and one for the API website.
It is envisaged that they will be configured to communicate with your existing (external) identity server.
Prerequisites
Before beginning the installation, please ensure that you have an IdentityServer4
installation and either a MySql
, PostgreSQL
or SqlServer
database set up.
Walkthrough
If you already have a working IdentityServer installation up and running then this walkthrough is for you.
This walkthrough will take you through the entire Azure configuration process, resulting in a working environment for IdentityExpress AdminUI, with the UI and backend API running on the same machine and targeting an existing IdentityServer. This will also include migrating your user store to the AdminUI Identity Schema.
Configure a Database
AdminUI currently only supports MySql
, PostgreSQL
and SqlServer
. These can run in any azure or non-azure service.
Any used databases must accept remote connections, also ensure that your firewall allows connections on any used ports.
Create Azure Website
Initially you will want to create 2 Azure Web Apps (note this process can also be done with Azure VM's, though you will need to follow the AdminUI IIS Installation guide.
One website will be for the UI and the other for the backend API.
AdminAPI Configuration
Once you have a Website Setup for the API, you will need to add some variables to the site in order to get it to run. The variables to be aware of for the API are:
DbProvider
This sets the database type you are using. Supported types and their values areSqlServer
,MySql
, orPostreSql
IdentityConnectionString
The connection string for your Identity database (users)IdentityServerConnectionString
The connection string for your IdentityServer database (clients, resources & grants)AuthorityUrl
Url of the IdentityServer installationUiUrl
Url of the AdminUI frontend (the idxui container)RequireHttpsMetadata
Set totrue
orfalse
if you want to ensure IdentityServer discovery endpoint uses TLS. Must be true for production.RunIdentityMigrations
Set totrue
orfalse
if you require AdminUI to run Entity Framework migrations for ASP.NET Identity DbContext's. This is recommended.RunIdentityServerMigrations
Set totrue
orfalse
if you require AdminUI to run Entity Framework migrations for IdentityServer DbContext's. This is useful if you have a new instance of IdentityServer currently without databases.IdentityDatabaseToMigrateConnectionString
(optional) The connection string of your existing ASP.NET Core Identity Entity Framework database that will be migrated to the database used in IdentityConnectionString (this must not be equal toIdentityConnectionString
).AuditRecordsConnectionString
The connection string for AdminUI audits, if missing will default to theIdentityServerConnectionString
AuditRecordsCulture
Language used for generation of audit records, if missing or invalid will default to English (en-GB), supported cultures and their values are:de
Germanzh-TW
Chinese (Traditional)zh-CN
Chinese (Simplified)es
Spanishfr
FrenchAuditReadActions
Set totrue
orfalse
, if missing will default totrue
, iffalse
no audit records will be generated for read actions e.g when a user views resources though AdminUI
In Azure, these variables will need to be added manually to the App Settings header in the Application Settings blade.
For a full list of configuration settings, see Configuring AdminUI.
AdminUI Configuration
Once you have a App Service Setup for the UI, you will need to add some variables to the site in order to get it to run. The variables to be aware of for the UI are:
AuthorityUrl
Url of the IdentityServer installation.UiUrl
Url of the AdminUI frontend (this Web APP).ApiUrl
Url of the API setup in the previous step.
In Azure, these variables will need to be added manually to the App Settings header in the Application Settings blade.
For the UI there is an extra configuration step needed after the App Settings.
Once you have configured these variables you will need to navigate to the folder that was placed in the WebApp wwwroot/assets folder and edit the env.js file in this folder. The variables in this will need to match the variables above:
var ENV = {
AuthorityUrl: 'Identity Server Url Here',
UiUrl: 'Url of this website',
ApiUrl: 'Url Setup in the previous step'
};
Deploying to Azure Web App
For each website you will need to FTP the folders supplied to the correct Azure folder. To achieve this you will need an FTP Client such as Filezilla. Once you have an FTP Client setup, you will need to go in to the Deployment Credentials blade of your app underneath the deployment header and setup the FTP credentials. Next go into the Properties blade underneath the Settings Header. From this blade you can grab your FTP HOST NAME.
Using your FTP Client, connect to this website, from here navigate to Site -> wwwroot. You will want to place the contents of the relevant folder in this wwwroot folder. Do this for both the API and the UI.
Note: Any EF migrations should run on Website startup, if not you can hit the URL for the API to ensure they have ran.
Migrations
Whether you are installing AdminUI for the first time or upgrading to the latest version of AdminUI, you will need to run some form of migrations to ensure your databases are inline with AdminUI
If you extract the zip on your local machine, You can run the following command to migrate your database
dotnet IdentityExpress.Manager.Api.dll -migrate all -connectionstring "Server=tcp:example.database.windows.net;Database=ExampleDatabase;User ID=Username;Password=Password;Trusted_Connection=False;Encrypt=True;" -dbprovider SqlServer
If you want more options when setting up your databases, then there are more fine tune migrations you can do, for more info see our full migration docs here
Troubleshooting
If you're having issues, we recommend you first Enable Logging for the API Site.


Learn the in's and out's of what happens behind the scenes when developing online systems.
All the talks and workshops that will be covered in this Code Camp.
Learn from Afrihost's very own developer team. Each speaker will be covering different topics in the big process.


While AngularJS Material has not yet entered Long Term Support (LTS) mode like AngularJS has, the Angular Components team's resources are focused on Angular Material and the Angular Component Dev Kit (CDK).
For applications with long-term development and support plans, consideration should be made for migration to the latest version of Angular, Angular Material, and the CDK.
The official ngUpgrade guide covers general practices around AngularJS to Angular
migration. This document provides additional guidance specific to AngularJS Material (v1.1.9+
).
The ngUpgrade Preparation Guide covers a number of important steps for preparing your application for the migration. In addition to this preparation work, you should use the content of this document in order to make migration plans based on how features and components have changed between AngularJS Material and Angular Material.
Some of the features of AngularJS Material have been made more generic and moved into the Angular CDK.
These include:
| AngularJS Material | CDK |
|---|---|
$mdPanel |
Overlay |
md-virtual-repeat |
*cdkVirtualFor |
md-virtual-repeat-container |
cdk-virtual-scroll-viewport |
$mdLiveAnnouncer |
LiveAnnouncer |
$mdUtil 's bidi() function |
Directionality service and Dir directive |
md-input 's md-no-autogrow and max-rows |
CdkTextareaAutosize |
| layout system | Covered in separate section of this guide |
AngularJS Material performs most theming at run-time. While this allows developers to configure themes dynamically in JavaScript, it also incurs substantial performance cost to generate CSS during application load.
Angular Material performs theming at compile-time with Sass. While this approach requires more up-front set-up, it completely removes all JavaScript execution cost associated with theming. The use of Sass also moves the theming system to a more well-supported and broadly-understood toolchain.
AngularJS Material supports defining custom palettes or extending existing palettes.
In Angular Material, custom palette creation, including definition of hues and contrast colors, can be accomplished by copying one of the provided palettes, modifying it, and then using it in your custom theme creation.
AngularJS Material uses a provider, $mdThemingProvider
, to define the theme configuration
used to generate styles during application loading. This provider also includes a default theme for
cases when no custom palettes are provided.
Angular Material has no default theme; a theme CSS file must always be included. You can either use one of the pre-built theme files, or define a custom theme with Sass mixins, including the output in your application just like any other CSS asset.
AngularJS Material uses a service, $mdTheming
, to define themes and generate CSS styles at
run-time.
Defining and generating theme CSS at run-time is not supported by Angular Material. However,
loading additional theme CSS into your application (or modifying an existing theme's link
node
to swap theme CSS files) at run-time is supported.
Your application can choose to generate additional themes at compile-time or build an API to dynamically generate theme CSS on-demand. In either case, it is possible to lazy load the theme CSS at run-time.
AngularJS Material has a custom directive, md-theme
, to apply a theme to a specific
component and its children.
Rather than providing a special directive API, Angular Material's Sass-based theming system relies on standard Sass mixins and vanilla CSS selectors. For example, you can customize an individual button (or set of buttons) by defining a class and applying it to a parent element:
Just like any other CSS, these classes can be applied to any element in your application and can be added/removed/toggled to swap colors at run-time.
See the full documentation for details on themes, including examples of multiple themes.
AngularJS Material's md-theme
and md-theme-watch
directives support data binding
like md-theme="{{ dynamicTheme }}" md-theme-watch
.
With Angular Material, you can make use of Angular's ngClass API to dynamically apply classes
associated with specific theming configurations like [ngClass]="dynamicThemeClass"
. You can also
use normal Angular class bindings to toggle classes like
[class.my-dark-theme]="isDarkMode"
.
AngularJS Material's md-colors
directive and $mdColors
service support looking up
and dynamically applying theme-palette-hue-opacity
color combinations as CSS properties to
your application's custom components.
Angular Material uses the mat-color
Sass function to lookup theme colors and
Sass mixins with CSS selectors (see alternate-button
example of a class above) to
style application or library components.
AngularJS Material's Hue classes (md-hue-1
, md-hue-2
, md-hue-3
) are used to modify a
component's hues.
These classes are not supported out of the box with Angular Material, but you can use the
mat-color
Sass function to lookup the desired Hues and assign them to all of the appropriate
CSS selectors and CSS properties, for a specific component, in a theme mixin.
AngularJS Material's theme system supports modifying the browser header and system status bar colors.
Angular's Meta service can be used to dynamically modify <meta>
tags that affect browser
header and status bar colors. The AngularJS Material docs for this feature have links to
learn more about the specific <meta>
tags.
Once the team begins phasing out support for IE11, the theming system will be revisited with CSS Variables (also known as CSS Custom Properties) in mind.
The AngularJS Material layout system includes includes attributes and classes like layout
,
flex
, show
, hide
, etc.
Since AngularJS Material's inception, browser support for CSS Flexbox has broadly improved and CSS Grid has become widely available. Application developers should carefully consider the the costs of additional JavaScript run-time dependencies versus native alternatives when choosing an approach to layout.
Many of the AngularJS Material layout APIs map to straightforward, vanilla CSS using Flexbox and media queries. We recommend checking out the following documentation and tutorials:
This comprehensive layout system was moved into its own project (beta).
The package contains the following:
fxLayout
, fxFlex
, fxHide
, fxShow
,
and more.fxLayout.lt-md
, fxFlex.gt-sm
,
fxHide.gt-xs
, [ngClass.sm]
, [ngStyle.xs]
, and more.MediaQuery
activation changesThis library adds a nontrivial payload cost as reported by source-map-explorer
in
v7.0.0-beta.24
~46 KB
~60 KB
~23 KB
, Flex: ~17 KB
, Grid: ~14 KB
, Extended: ~6 KB
The CDK's layout capabilities offer a lightweight alternative (or complement) to larger,
full-blown layout systems. This capability adds 3.06 KB
as reported by source-map-explorer
with Angular CDK v7.3.7
.
The CDK's Layout capability offers:
MediaMatcher
service that provides access to the low level, native MediaQueryList
Breakpoints
that match the Material Design responsive layout grid breakpointsBreakpointObserver
service that offers APIs for responding to changes in viewport size based
on predefined breakpoints.AngularJS Material typography classes align with the Angular Material typography classes.
Angular Material also adds the following typography features:
Angular Material introduces a number of new components and features that do not exist in AngularJS Material. Angular Material also makes greater use of semantic HTML and native elements to improve accessibility.
Most components use the same name between the two libraries, changing the md-
prefix to mat-
.
For example, <md-card>
becomes <mat-card>
. Some element directives changed to attribute
directives, for instance <md-subheader>
changed to matSubheader
.
| Directive | Old (md- ) |
New (mat- ) |
Special Notes |
|---|---|---|---|
| autocomplete | Docs | Docs | |
| autofocus | Docs | Docs | cdkFocusInitial |
| button | Docs | Docs | |
| calendar | Docs | - | The datepicker has a mat-calendar component, but it cannot be used in stand-alone mode. |
| card | Docs | Docs | |
| checkbox | Docs | Docs | |
| chip | Docs | Docs | |
| chip-remove | Docs | Docs | matChipRemove |
| chips | Docs | Docs | |
| colors | Docs | - | mat-color mixin supports static theme color lookups. |
| contact-chips | Docs | - | Not implemented |
| content | Docs | Docs | cdkScrollable |
| datepicker | Docs | Docs | |
| divider | Docs | Docs | |
| fab-speed-dial | Docs | - | Not implemented |
| fab-toolbar | Docs | - | Not implemented |
| grid-list | Docs | Docs | |
| highlight-text | Docs | - | Not implemented |
| icon | Docs | Docs | |
| ink-ripple | Docs | Docs | matRipple |
| input | Docs | Docs | matInput |
| input-container | Docs | Docs | mat-form-field |
| list | Docs | Docs | |
| menu | Docs | Docs | |
| menu-bar | Docs | - | Not implemented |
| nav-bar | Docs | Docs | mat-tab-nav-bar |
| nav-item | Docs | Docs | mat-tab-link |
| optgroup | Docs | Docs | |
| option | Docs | Docs | |
| progress-linear | Docs | Docs | mat-progress-bar |
| progress-circular | Docs | Docs | mat-progress-spinner |
| radio-button | Docs | Docs | |
| radio-group | Docs | Docs | |
| select | Docs | Docs | |
| select-on-focus | Docs | - | Not implemented |
| sidenav | Docs | Docs | |
| sidenav-focus | Docs | - | autofocus only supports focusing the first focusable element. |
| switch | Docs | Docs | mat-slide-toggle |
| slider | Docs | Docs | |
| slider-container | Docs | - | See Migration Notes below |
| subheader | Docs | Docs | matSubheader |
| swipe | Docs | - | See HammerJS setup and Hammer.Swipe |
| tabs | Docs | Docs | |
| textarea | Docs | Docs | |
| toolbar | Docs | Docs | |
| tooltip | Docs | Docs | |
| truncate | Docs | - | Not implemented |
| virtual-repeat | Docs | Docs | cdk-virtual-scroll-viewport and *cdkVirtualFor |
| whiteframe | Docs | Guide | Based on classes and mixins |
md-slider-container
helped style and position a span
and input
along with the md-slider
.
You can add elements or components next to your mat-slider
, then position and style them as
desired.| Service | Old | New | Special Notes |
|---|---|---|---|
| $mdAriaProvider | Docs | - | See Migration Notes below |
| $mdBottomSheet | Docs | Docs | MatBottomSheet |
| $mdColors | Docs | - | mat-color mixin supports static theme color lookups. |
| $mdCompiler | Docs | - | See Migration Notes below |
| $mdCompilerProvider | Docs | - | See Migration Notes below |
| $mdDateLocaleProvider | Docs | Docs | MomentDateAdapter |
| $mdDialog | Docs | Docs | MatDialog |
| $mdGestureProvider | Docs | - | See Migration Notes below |
| $mdIcon | Docs | Docs | svgIcon |
| $mdIconProvider | Docs | Docs | MatIconRegistry |
| $mdInkRipple | Docs | Docs | |
| $mdInkRippleProvider | Docs | Docs | MAT_RIPPLE_GLOBAL_OPTIONS |
| $mdInteraction | Docs | - | Not implemented |
| $mdLiveAnnouncer | Docs | Docs | CDK LiveAnnouncer |
| $mdMedia | Docs | Docs | CDK BreakpointObserver.isMatched() or Flex Layout's MediaObserver service |
| $mdPanel | Docs | Docs | CDK Overlay |
| $mdPanelProvider | Docs | - | Not implemented |
| $mdProgressCircularProvider | Docs | - | Not implemented |
| $mdSidenav | Docs | - | See Migration Notes below |
| $mdSticky | Docs | - | See Migration Notes below |
| $mdTheming | Docs | - | Sass mixins support custom component theming. |
| $mdThemingProvider | Docs | - | Sass mixins support static, custom theme creation. Use Angular's Meta service for browser coloring features. |
| $mdToast | Docs | Docs | MatSnackBar |
$mdCompiler
and the related $mdCompilerProvider
are AngularJS-specific solutions.
Similar tools and APIs are not needed when working with Angular.$mdSidenav
is a convenience to allow calling $mdSidenav('right').toggle()
or
$mdSidenav('left').close()
from components, without the need to have an actual reference to each
md-sidenav
instance. If you need functionality like this with Angular Material, you can use
Angular's @ViewChild Decorator to get a reference to the
MatDrawer
or MatSidenav
instance. Then you can store that reference in a service for use from
multiple components.$mdSticky
uses the browser's native position: sticky
when supported and only supplies a workaround for browsers like IE11 that do not support native
sticky positioning. For Angular Material, you should use the native position: sticky
and
provide your own solution for IE11.These are new components found in Angular Material and the Angular CDK that do not exist in AngularJS Material.
The mat-
and cdk-
prefixes have been omitted to make this table more readable.
| Directive | New | Special Notes |
|---|---|---|
| badge | Docs | |
| button-toggle | Docs | |
| drag-drop | Docs | CDK |
| expansion-panel | Docs | |
| paginator | Docs | |
| sort-header | Docs | |
| stepper | Docs | Unstyled CDK and Material versions available. |
| table | Docs | Unstyled CDK and Material versions available. |
| tree | Docs | Unstyled CDK and Material versions available. |


Josiah Seaman
Front-end Ninja
Featured Work
Appify
Link to project
Appify
Link to project
Appify
Link to project
Appify
Link to project
×
Additional Content Modal
There's lots of great text here.


Tabs Overview
The w2tabs object allows you to create tabs. Tabs can be static or dynamic. Dynamic tabs can be created and/or removed at the runtime. You can
also create closable tabs.
Example
Below is a simple example how to use tabs. It shows the minimum HTML and JavaScript you need to render the tab bar. It is assumed
in the example that you link jquery.js, w2ui.js and w2ui.css files.


Creation of imprecise classification trees. They rely on probability estimation within each node by means of either the imprecise Dirichlet model or the nonparametric predictive inference approach. The splitting variable is selected by the strategy presented in Fink and Crossman (2013) <http://www.sipta.org/isipta13/index.php?id=paper&paper=014.html>, but also the original imprecise information gain of Abellan and Moral (2003) <doi:10.1002/int.10143> is covered.
| Version: | 0.5.1 |
| Imports: | Rcpp (≥ 0.12.5) |
| LinkingTo: | Rcpp |
| Suggests: | testthat |
| Published: | 2018-08-17 |
| Author: | Paul Fink [aut, cre] |
| Maintainer: | Paul Fink <paul.fink at stat.uni-muenchen.de> |
| License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| NeedsCompilation: | yes |
| SystemRequirements: | C++11 |
| Materials: | ChangeLog |
| CRAN checks: | imptree results |
| Reference manual: | imptree.pdf |
| Package source: | imptree_0.5.1.tar.gz |
| Windows binaries: | r-devel: imptree_0.5.1.zip, r-release: imptree_0.5.1.zip, r-oldrel: imptree_0.5.1.zip |
| OS X binaries: | r-release: imptree_0.5.1.tgz, r-oldrel: imptree_0.5.1.tgz |
Please use the canonical form https://CRAN.R-project.org/package=imptree to link to this page.


The Top 5 Social Media Stories Of This Week
by Geoff DesreumauxWelcome to this week’s top social media stories: TikTok has over 1.5 billion downloads, Wikipedia co-founder launches a social network and Facebook introduced Whale, the Meme maker.
How is your TikTok game? It is probably the right time to download the app and start using it. After weeks of topping the app charts, TikTok has now confirmed it has over 1.5 billion downloads!
You may also want to check WT:Social, a new social network from the co-founder of Wikipedia. And while you are at it, why not look at Whale, the new Meme maker by Facebook.
Here you go, weekend sorted. Enjoy.
Want more? Here are the top 5 most talked about stories this week:
- TikTok Now Has Over 1.5 Billion Downloads
- The New Microsoft Office App Combines Word, Excel, And PowerPoint
- Wikipedia Co-Founder Launches WT:Social, A New Social Network
- Facebook Quietly Launches Whale, An App That Lets You Create Memes
- Google Maps Is Testing A New Social Networking Feature
Tune in next Sunday for a new edition of our weekly social media recap.


Reframe.js
Reframe.js is a javascript plugin that makes unresponsive elements responsive.
Install
npm install reframe.js --save-dev
Or
bower install reframe.js --save-dev
Setup
-
Add
dist/reframe.js
. - Add reframe
css/scss
to your css. - reframe the element you'd like to re-frame.
reframe('selector');
Examples
Basic
reframe('selector');
Or Multiples
reframe('selector'); // same function as before (so simple)
But not this one
reframe('selector:not([not this selector])');
How?
Reframe.js removes a specified element's height & width attributes & then wraps that element in responsive div that is a perfect ratio of the original element's size. This plugin is meant for embedded content like iframes
or videos
.
Why?
Reframe.js is inspired by FitVids & does what FitVids does but without the need for jQuery
. This makes the plugin highly valuable when including it in a module that has to be very small & with minimal dependencies. Here's a basic codepen example.
This plugin is small - ~1.3kb
unminified & is meant to do 1 thing - wrap elements that aren't responsive & make them responsive. 💪
Options
If you'd like to not use the classname 'js-reframe', just use your own.
reframe('selector', 'classname');
jQuery
You can use Reframe.js with jQuery as well.
$('selector').reframe();
&, if you'd like to use a custom classname
$('selector').reframe('classname');
Made by Dollar Shave Club Engineering.


MY NAME IS JOE (director: Ken Loach; writer: Paul Laverty; cinematographer: Barry Ackroyd; cast: Peter Mullan (Joe Kavanagh), David McKay (Liam), David Hayman (McGowan), Annemarie Kennedy (Sabine), Louise Goodall (Sarah ), Gary Lewis (Shanks), Lorraine McIntosh (Maggie), UK-1998)
The power in this romantic drama, depicting the harsh lives of Glasgow's poor, lies with the natural performances of its two stars, Peter Mullan as the reformed alcoholic Joe Kavanagh, currently unemployed, and his love interest, Sarah (Louise Goodall), as the good-hearted community health worker.
The story is a very familiar one, its theme of someone who is inflicted with troubles of his own but who gains strength by helping out those who are even less fortunate than himself, is the kind of film Hollywood has made ever since it started making films. Films such as this have been popular ones, identifying with the down-trodden as they try to make a go of it against insurmountable odds. The hero, predictably, finds redemption in his generosity to others, forgoing his own concerns to find an inner solace from all his past errors. The only thing different about this one, is the intensity of the social realism depicted.
One of the young men Joe coaches in soccer, Liam (McKay), runs into trouble with a local drug lord, McGowan (Hayman), and Joe helps him out in an unorthodox way. He is told by the crime boss that Liam either pays up the money he owes him from their drug dealings, or he puts his junkie wife Sabine (Kennedy) on the street working for them, or he has both his legs broken. The fourth choice is that Joe should run a few drug deals for the mob and in this way have Liam's debt paid off. That's the deal Joe reluctantly takes, to the detriment of his relationship with Sarah.
The emptiness and despair in all their lives is seen from the ex-alcoholic Joe's point of view, as he is struggling to get a firm grip on himself; it is also seen in the hapless soccer players he coaches, looking for some respect and a way to hang in the game without being completely put down. And the despair is seen, especially so, in the lives of Liam and his junkie wife, who try to raise their young son and battle the demons inside them, but are only able to relate to those who are super kind to them.
The problem with this earnest, very realistic drama, that is certainly well-meaning and done in a most edifying manner, is that I saw the same type of film many times before. Humphrey Bogart made a career of playing the part Joe does. There are just no great suprises, here. What works well, though, are the little touches, that add some grace to the characterizations, allowing us to see the wheels inside these characters churning with their joy and pain. When Joe begins seeing Sarah, his natural timidity overshadows all his blustery talk and profanity. In love with her, he has lost all sense of futility and feels rejuvenated, but the danger is that he has not found the power inside himself to accept who he is; he has become too dependent on her love to sustain him. And when he loses her, he naturally comes apart. That he is a good guy, we readily see in the regular conversations he has with his best friend Shanks (Lewis). She uses her co-worker Maggie (McIntosh) in the same role.
The really nice touch seen in the film, that shows pretty much the direction the story was trying to go, took place when Joe was trying to tell somethings to Sarah about himself that are true and important to him: one, about his wild days, stealing a truckload of cd's and selling them to his pub mates; that is, all but the classical ones. Nobody would buy them. So he keeps them and falls in love with that kind of music. The other, is how he decided to admit he was an alcoholic and joined the A.A.. This came after beating his girlfriend while in a drunken stupor because she laughed at him.
Loach has created a sobering study of the disenfranchised, a film that is worth taking note of, that probes into serious matters, and is honest enough to know that there are no simple answers to the problems it raises. In many ways it is a better film that his 1996 Carla's Song, which this film is derived from. The film is entertaining, a comment that might not be praise to Loach's ears. But his film doesn't rise to anything greater than that, it is just not that emotionally affecting for us to believe that we have seen great cinema. His characters are in a situation that is not that memorable and their problems are largely self-inflicted, which should make us cautious in accepting their version of what is happening as gospel, even if, there is no doubt that the area they live in is a drug infested commununity, where unemployment is rampant, and the odds weigh heavily against survival.
It was a good idea having subtitles for the film, because the heavy Scottish accents are very difficult to understand.
REVIEWED ON 7/23/99 GRADE C+
Dennis Schwartz: " Ozus' World Movie Reviews"
http://www.sover.net/~ozus
<EMAIL_ADDRESS>© ALL RIGHTS RESERVED DENNIS SCHWARTZ
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


OpenVidu Call is a ready to use, professional looking, videoconferencing application.
With all the features you expect: multiparty videoconferences, smart layouts, virtual background, recording, integrated chat, screen sharing...
It is implemented with an open source license, so you can adapt it to your needs. You have full control over the UI (brand, colors, icons...), you can decide which user is able to join each session, you can add recording, etc...
OpenVidu call is designed to be installed on premises in your own servers or in any cloud provider. It is available by default when you install OpenVidu platform.
OpenVidu Call provides a basic authentication system that allows users to join a session with a click.
Moreover, it generate a random session name to offer a unique URL for each session. This way, users can share the URL with their friends and colleagues to join the session.
Of course, you can also implement your own authentication system, so that only authorized users can join a session. or disabling the login authentication. See more here.
OpenVidu Call provides different options and configurations for users before joining a session.
This includes testing and selecting audio and video devices, setting up a virtual background, choosing a nickname and changing the language.
Besides, these options are remembered by default by the client's device. If they refresh the page or join a different session, their previous configuration will be automatically applied.
OpenVidu Call seamlessly integrates the Virtual Background feature.
Our background effects allow your users to participate in video conferences with a private or funny touch.
Now you don't have to worry about recordings, OpenVidu Call includes recordings as one of its basic features.
The session creator will be able to record the sessions and delete them in a very intuitive way inside of the Activities Panel.
Moreover, the others participants also will be able to play and download the video recordings once the recording is finished.
OpenVidu Call integrates live captions, which allows users to read the speech of the other participants in real time.
Enabling can not be easier, just click on the Enable Captions button, select the language you want to use and the captions will be displayed in the bottom of the screen.
With OpenVidu Call you can share your screen and your webcam at the same time. And several users can do it simultaneously!
Thanks to our intelligent layout, your screen share video will take the lead and will be shown at a larger size than the rest, never being cropped so no information is lost.
Moreover, you can seamlessly switch your shared screen on the fly with the click of a button.
OpenVidu Call also includes a nice chat already integrated in the intelligent layout.
The chat provides you an alternative way to silently exchange messages with all your videoconference partners. Everything works as you expect: messages are properly displayed with the author's name, links are automatically formatted to allow clicking on them, users will be subtly notified when new messages arrive, mobile view is specifically adapted for ease of use...
A great and advanced chat out-of-the-box!
With OpenVidu Call you can handle the recording management in a very intuitive dashboard.
Not only you will be able to login and logout from the Admin Dashboard but you will also be able to preview the recordings, download them or delete those you don't need anymore. Just with a couple of clicks.
With OpenVidu Call you can join into a multi-party videoconference, displayed in a nice, intelligent layout. You will be able to zoom in, zoom out and fullscreen any video you want.
Toggling the participants panel (bottom right corner) you can check at a glance all the participants connected to the session.


 It works like any twitch stream. The only difference is that you play a game, and the streamer **s you, live, in real time.
Had the opportunity to work as production coordinator on this project. My main task was to port the original game developed by Fernando Sarmiento, into Unity. Worked on UI, art design, animations, game flow, 3D implementation and marketing materials.
Festivals & Appearances
TWITCHCON EXPO STAGE 2017 (announced) - EVA PLAY 2017 (announced) - SXSW 2015, 2016 & 2017 - SXSW Gaming Awards 2016 TWITCH+REDDIT Presentation 2017 - EVA 2015 - AMAZE 2015 - Tokyo game Show - Sense of Wonder Night, 2015 Les Nite Blanches, Paris, 2015 - SMAZING, Mexico DF, 2016.
Awards
Best Experimental Game, Tokyo Game Show 2015 - Best Presentation, Tokyo Game Show 2015
Learn more and download at: toughcoded.littlenando.com


Total Blocks Minted
Blocks This Epoch
Adapools Rank
256K
Pledge
What is your mission?
DIVY aims to participate and secure the Cardano network by running a stake pool on cloud infrastructure. The low fees ensure longevity and sustainability of the pool.
Our goal is to provide a reliable Cardano staking service with high desirability for you as a delegator.
High Pledge
Financially committed to our pool to attract delegation & ensure high performance.
Transparency
We share our block schedule with PoolTool.io to showcase our pool's performance.
Live Monitoring
We use Grafana to monitor our nodes. We have alerts setup and the ability to quickly respond to any situation.
Fast Block Propagation
Our nodes run on commercial data centers with 99.9% availability. We maintain a backup block producer and multiple relays to ensure a robust configuration.
Honesty
We are an honest participant of the network, we vow to never ever cheat or exploit the protocol.
Where do I get the latest updates?
Updates are posted on Twitter at @Jay_N_T and in the Discovery Telegram Group. You can also contact me directly on telegram at t.me/BP_Jay


---
layout: post
title: ! 'I hope i don''t end up being this like guy on my team: http://tinyurl.com/r4xduz'
published: true
date: 2009-07-01
categories: []
posterous_url: http://verdammelt.posterous.com/i-hope-i-dont-end-up-being-this-like-guy-on-m
posterous_slug: i-hope-i-dont-end-up-being-this-like-guy-on-m
---
I hope i don't end up being this like guy on my team:
http://tinyurl.com/r4xduz