I am inspired by the rich sensations of living and dying life. The crunching of pine needles beneath my feet. Decaying leaves under the muddy surface of a puddle. The lichen that is inseparable from its stone. I believe stories are held in the landscape.
2011-2014 University of Michigan Stamps School of Art and Design,
Ann Arbor MI, M.F.A Visual Arts.
2002-2006 Art Academy of Cincinnati, Cincinnati OH
B.F.A in Painting, Magna Cum Laude
2006 Akademie der Bildenden Künste, München Germany
2005 Parsons The New School of Design, New York
2017-Present Assistant Professor at Davidson College, Davidson NC
Taught Intermediate and Advanced Painting and Drawing
2016-2017 Visiting Assistant Professor at Davidson College, Davidson NC
Taught Intermediate and Advanced Painting and Drawing
2015-2016 Visiting Assistant Professor at Albion College, Albion MI
Taught all levels of Painting and Drawing
2015 Burren College of Art, Teaching Fellow, Ballyvaughan Ireland
Taught Intermediate and Independent study in Painting and Drawing
2012-2014 University of Michigan, Teaching Assistant, Ann Arbor MI
Taught Undergrad classes in Painting
2011-2014 University of Michigan, Graduate Student Instructor, Ann Arbor MI
Independent Studio and Art and the Environment
2019
Young Affiliates of the Mint Choice Award, Coined in the South, Mint Museum
2017
Best in Show 11th annual Alumni Exhibition, University of Michigan
2014
Best in Show 95th Toledo Area Artists Exhibition
(Juried by Art Critic Christopher Knight) Toledo Art Museum
Athena Art Society Award, Toledo Art Museum
Smucker/Wagstaff Project Scholarship, University of Michigan
2013
CEW Elsie Choy Lee Scholarship, University of Michigan
Juried Art Competition, University of Michigan
Smucker/Wagstaff Project Scholarship, University of Michigan
2012
Graduate International Experience, University of Michigan
2006
Wilder Traveling Scholarship, Art Academy of Cincinnati
Munich Painting Program, Art Academy of Cincinnati
The CJK Calendar Award, Art Academy of Cincinnati
2004
Art Academy of Cincinnati Excellence Second Year Scholarship
2003
Art Academy of Cincinnati Excellence First Year Scholarship
2002
Art Academy of Cincinnati Eugene F. Rowe Scholarship
(*indicates a solo show)
2020
*Charles Danforth Gallery, Terra Plume, University of Maine at Augusta. Augusta, ME
*Dalton Gallery, Earthly Cosmology, Arts Council of York County. Rock Hill, SC
*Jeanne Rauch Gallery, Tellurian, Gaston College. Dallas, NC
2019
Mint Museum, Coined in the South, Young Affiliates of the Mint. Charlotte NC
Greenhill Center for NC Arts, Constant/Change, Greensboro NC
2018
Northern Kentucky University, Root Culture, Highland Heights KY
University of Alabama at Birmingham, SECAC, Birmingham AL
*Central Piedmont Community College, Fruiting Bodies, Charlotte NC
*Northern Kentucky University, Neither here nor there, Highland Heights KY
2017
Greenhill Center for NC Arts, Observational Abstraction, Greensboro NC
Stamps Gallery, Ambiguities/Innuendoes? Go Fish, Ann Arbor MI
Davidson College, Faculty Show, Davidson NC
2016
*Burren College of Art, Erratics, Ballyvaughan Ireland
MOCAD, Evening of Art and Science, Detroit MI
UMMA, Evening of Art and Science, Ann Arbor MI
*Defiance College, Erratics, Defiance OH
2015
*Art Academy of Cincinnati, Unearth, Cincinnati OH
Cincinnati Art Underground, Delicate Fractures, Cincinnati OH
Klemm Gallery at Siena Heights University, Sprawl Too, Adrian MI
The Tangent Gallery, Things Feel Heavy, Detroit MI
Sweetwater Center for the Arts, Shaping New Worlds, Sewickley PA
2014
Toledo Art Museum, 95th Toledo Artists Exhibition, Toledo OH
Apexart, Trans-Farm, Detroit MI
333 Midland, Big Paintings at the Factory, Detroit MI
*Munro Gallery, Water logged, Albion MI
*Slusser Gallery, Wayside, Ann Arbor MI
Ann Arbor Art Center, Decompose/Recompose, Ann Arbor MI
*Enviro Art Gallery, Second Nature, Ann Arbor MI
Zhou B. Art Center, National Wet Paint Biennial, Chicago IL
2013
Matthaei Botanical Gardens, 50 Shades of Green, Ann Arbor MI
River Gallery, Biology and Art in Creative Minds, Ann Arbor MI
Work Gallery, Test Kitchen, Ann Arbor MI
Kuaba Gallery, Torn to Grace, Indianapolis IN
*NCRC Gallery, Landbetween, Ann Arbor MI
Naming Ceremony Gallery, Storybook Fragments, Los Angeles CA
University of Michigan, Juried Art, Ann Arbor MI
2012
Green Road Studios, Ten Degrees, Ann Arbor MI
2010
Creative Gallery, Maps, Cincinnati OH
Arts Space, Global Art Perspectives: 2010 Preview, China
Broadway Gallery, Global Art Perspectives: 2010 Annual, NY
2009
Broadway Gallery, Derived, Borrowed, and Stolen, New York NY
2007
Canal Chapter, Residency Project, New York NY
*KraftHous, Solo, Cincinnati OH
2006
Akademie der Bildenden Künste, Student Show, Munich Germany
Pearlman Gallery, If You’re a Dreamer Come in, Cincinnati OH
2005
Parsons The New School of Design, Come Close, New York NY


Picturesque
Explore
Blogs
Favorites
Meet the team
My Account
Profile
Logout
Favorites
Save here and visit later
See all your favorites below
Empty my Favorites
Meet the Team |
My Account


{% block article_body %}{% endblock %}
China
Scroll
| School | Programme | Category | Tuition fee (Rmb) | Enrolled students | International students (%) | Female students (%) | Starting salary (US$) | {% for row in dataChina %}
|---|---|---|---|---|---|---|---|
| {{ row.school }} | {{ row.programme }} | {{ row.category }} | {{ row.tuitionfeecny | dashify | commaify }} | {{ row.studentnumber | dashify }} | {{ row.internationalstudents | dashify }} | {{ row.femalestudents | dashify }} | {{ row.startingsalaryus | dashify | commaify }} |
Hong Kong
Scroll
| School | Programme | Category | Tuition fee (HK$) | Enrolled students | International students (%) | Female students (%) | Starting salary (US$) | {% for row in dataHk %}
|---|---|---|---|---|---|---|---|
| {{ row.school }} | {{ row.programme }} | {{ row.category }} | {{ row.tuitionfeehk | dashify | commaify }} | {{ row.studentnumber | dashify }} | {{ row.internationalstudents | dashify }} | {{ row.femalestudents | dashify }} | {{ row.startingsalaryus | dashify | commaify }} |
Taiwan
Scroll
| School | Programme | Category | Tuition fee (NT$) | Enrolled students | International students (%) | Female students (%) | Starting salary (US$) | {% for row in dataTaiwan %}
|---|---|---|---|---|---|---|---|
| {{ row.school }} | {{ row.programme }} | {{ row.category }} | {{ row.tuitionfeent | dashify | commaify }} | {{ row.studentnumber | dashify }} | {{ row.internationalstudents | dashify }} | {{ row.femalestudents | dashify }} | {{ row.startingsalaryus | dashify | commaify }} |
Footnotes
| Category | The type of qualification conferred by the programme. |
| Tuition fee | Fee for entire programme in local currency. |
| Enrolled students | Number of students enrolled in 2016. |
| International students | Proportion of international students enrolled in 2016. |
| Female students | Proportion of female students enrolled in 2016. |
| Starting salary | Average starting salary upon graduation for 2016 cohort (PPP-adjusted US$). |


I was recently helping a customer who had a somewhat complicated git workflow to production. All their Puppet code was in a locally accessible Gitlab server which was used by all the Automation dev’s to develop, test and push to.
However, their integration and production environments were located behind a jumphost which also required a custom VPN connection.
The problem was that this deployment relied on r10k and the Puppet master needed access to the Gitlab server to create the local environments in both integration and eventually production.
Enabling a streamlined process to move the Gitlab codebase from our dev area into the corralled VM behind the jumphost was needed.
This workflow involves several steps:
- Connect NA Client VPN to Jumphost
- SSH to Jumphost and enter auth credentials
- SSH into yum repo server behind jumphost
- Enter in yum repo auth credentials
- scp your data - many ways to skin that cat, all are somewhat complicated
Automate with persistant SSH sockets
I decided to write a SSH script which will do this, and I wanted to ensure we didn’t fall into ‘password’ hell and have to enter in a new password every time. I had heard you could do this by using the ‘ControlMaster’ SSH param in SSH_config, open a persistant socket, and reuse it as needed. If I could enable this over a jumphost was another question but I gave it a shot.
Create a persistant socket to jumphost with tunnel on localhost through the jumphost, pushing traffic from port 22 -> 5000
ssh -o 'ControlMaster auto' -o 'ControlPath ~/.ssh/jump.sock' -N -f -L 5000:[git_repo_ip]:22 root@[jumphost_ip]
Create a direct persistant socket to the integration or production Gitlab server on localhost tunnel
ssh -o 'ControlMaster auto' -o 'ControlPath ~/.ssh/git.sock' -N -f root@localhost -p 5000
CP arbitrary documents easily
scp -o ‘ControlPath ~/.ssh/yum.sock’ -P 5000 $filepath root@localhost:/tmp/
SSH (no password required once socket is created!)
ssh -S ~/.ssh/yum.sock root@localhost -p 5000
To destroy the sockets you need to do the yum repo first and jump second
ssh -S ~/.ssh/yum.sock -O exit root@localhost && ssh -S ~/.ssh/jump.sock -O exit<EMAIL_ADDRESS>A quick script
Now that I can create persistant sockets I wrote a script to SSH into the local git, run rake::restore
, scp the backup to my host, scp the backup from my host into the integration git over the jumphost connection, and run rake::restore.
Check to ensure I’m connected to the correct VPN Gateway
1 2 3 4 5 6 7 8 9 10 11 12
test -e ~/.ssh || { echo "Create an ssh dir"; exit 1; } VPNENV=
echo $(naclient status | awk 'NR==4' | cut -d: -f2)
VPNREMOTE="data_center" LOCALGIT="<IP_ADDRESS>" INTGIT="<IP_ADDRESS>" JUMPHOST="<IP_ADDRESS>" if [ "$VPNENV" == "$VPNREMOTE" ] then echo "Connected to $VPNENV"Build the sockets
1 2 3 4 5 6 7
echo "Connecting to local git:" ssh -o 'ControlMaster auto' -o 'ControlPath ~/.ssh/LOCALGIT.sock' -N -f root@$LOCALGIT echo "Connecting to jumphost:" ssh -o 'ControlMaster auto' -o 'ControlPath ~/.ssh/jump.sock' -N -f -L $PORT:$INTGIT:22 root@$JUMPHOST echo "Connecting to git in integration:" ssh -o 'ControlMaster auto' -o 'ControlPath ~/.ssh/intgit.sock' -o 'UserKnownHostsFile /dev/null' -N -f root@localhost -p $PORT
Use the sockets for SSH and SCP
1 2 3
ssh -S ~/.ssh/LOCALGIT.sock root@$LOCALGIT gitlab-rake gitlab:backup:create ssh -S ~/.ssh/LOCALGIT.sock root@$LOCALGIT "$(typeset -f); stagelatest"
A note before moving on about the ‘stagelatest’ function. I had a complicated command that I didn’t want to toss into the SSH line, so I wrote a fuction and ran the $(typeset -f)
command to make that function available on the remote SSH shell executing the commands. The function looked like this:

<notextile>

1
2 3 4 5 6
stagelatest () {
LATESTBAK=$(ls -t /var/opt/gitlab/backups/ | head -1)
rm /tmp/1111111111gitlab_backup.tar
ln -s /var/opt/gitlab/backups/$LATESTBAK /tmp/1111111111gitlab_backup.tar
}


Welcome to My Bootstrap 4 Demo
Pursuing web and software development as a profession requires a strong set of skills that spans many different domains. As part of my ongoing effort to refine and demonstrate my skills in a number of different areas of web and software development, I will be publishing a series of projects which explore these various subjects.
For this project, I focused on Bootstrap 4. Aesthetics are important to any project on the web, and Bootstrap offers a powerful and developer-friendly way to create user facing content. Bootstrap’s efficient workflow, immense popularity, and responsive design inspired me to put this project together.
Because I wanted to focus on Bootstrap for this project, I decided to build out the website using plain HTML and have hosted the project GitHub Pages. For my implementation of Bootstrap 4, I’ve used Bootstrap’s source files which allowed me to implement some custom theming using SCSS. Following Bootstrap’s recommendations, I’ve also used Autoprefixer, PostCSS, and the PostCSS CLI to add vendor prefixes to my final CSS file. I’m always open to feedback on any of my projects - please feel free to reach out any time to share your thoughts on my work!
"Originally created by a designer and a developer at Twitter, Bootstrap has become one of the most popular front-end frameworks and open source projects in the world."
Bootstrap's classes allow developers to efficiently implement stunning designs without having to hop between multiple files or write large amounts of CSS.
Bootstrap’s immense popularity with companies of all sizes has created a huge community of developers that work with the framework.
Bootstrap is responsive and is built with mobile-first design in mind which allows developers to create applications that look great on any device.
Here, I do an API call to source.unsplash.com using the JavaScript Fetch API to retrieve a random 500px x 500px image which I then position and round using Bootstrap.


This page will help you create a password for use with any Twitch chat clients.
Below is your chat password, copy & paste the whole thing.
Copied to Clipboard!


--- layout: default title: Cookies ---
The Plan and manage roadworks documentation puts small files (known as ‘cookies’) on to your computer.
We use cookies to:
These cookies are not used to identify you personally.
You’ll see a message on the site before we store a cookie on your computer.
Find out how to manage cookies.
You will see a message about cookies when you first visit the Plan and manage roadworks documentation. We’ll store a cookie so that your computer knows you’ve seen it and knows not to show it again.
| Name | Purpose | Expires |
|---|---|---|
| seen_cookie_message | Saves a message to let us know that you have seen our cookie message | 28 days |
We use Google Analytics software to collect information about how you use the Plan and manage roadworks documentation. We do this to help make sure the site is meeting the needs of its users and to help us make improvements.
Google Analytics stores information about:
We do not collect or store your personal information, so this data cannot be used to identify who you are.
We do not allow Google to use or share our analytics data.
Google Analytics sets the following cookies:
| Name | Purpose | Expires |
|---|---|---|
| _ga | This helps us count how many people visit the Plan and manage roadworks documentation site by tracking if you’ve visited before | 2 years |
| _gid | This helps us count how many people visit the Plan and manage roadworks documentation site by tracking if you’ve visited before | 24 hours |
| _gat | This is used to limit the rate at which page view requests are recorded by Google | 1 minute |


My favorite things
These are a few of my favorite things
PEople
Here are some of my favorite people
Flavors of ice crean
these are my three favorites, in order:
- pistachio
- malted milk chocolate
- black licorice (really!)
Here is a list of my most favorite websites:
Thanks for reading about me!


Exciting offers available. Hurry up!!!
Shop
Check out
About us
0
Nikon
Canon
Olympus
Lumix
Pentax
Leica
Sony
Fuji
Select
DSLR
Point and Shoot
Advanced Amateur
Underwater
Film
mirrorless
superzoom


D3.js is a wonderful JavaScript visualization library. In this simple example, however, we are not doing any visualization but only demonstrating the use of certain methods from D3, involved in the following actions related to the DOM elements,
We even invoke a function through D3 by setting the onclick attribute of a button, which itself, is appened (and deleted) to (from) the DOM by another D3 method.
Here is a list. You cannot see anything, right? Click on the button below!


Let us do something more useful now. We are going to check what sort of browser the visitor is using. For that, we check the user agent string the browser sends as part of the HTTP request. This information is stored in a variable. Variables always start with a dollar-sign in PHP.
Instead of using a PHP echo statement to output something, we jumped out of PHP mode and just sent straight HTML. The important and powerful point to note here is that the logical flow of the script remains intact. Only one of the HTML blocks will end up getting sent to the viewer depending on the result of strpos(). In other words, it depends on whether the string MSIE was found or not.
This information is stored in a variable. Variables always start with a dollar-sign in PHP. This information is stored in a variable. Variables always start with a dollar-sign in PHP. This information is stored in a variable. Variables always start with a dollar-sign in.PHP. This information is stored in a variable. Variables always start with a dollar-sign in PHP.


Check the box if you want to send a reject email.
Are you sure to send the no opening email to the candidate?

Check the box if you want to send a no opening email.
Round Level
Select the round
{% for each_round in round_names %}
{{each_round.round_name}}
{% endfor %}
Valid
Please fill out this field


Spelling Correction¶
Table of contents
Introduction¶
Xapian provides functionality which can suggest corrections for misspelled words in queries, or in other situations where it might be useful. The suggestions can be generated dynamically from the data that has been indexed, so the correction facility isn’t tied to particular languages, and can suggest proper nouns or specialist technical terms.
Indexing¶
The spelling dictionary can be built with words from indexed text, or by adding words from a static word list, or a combination of the two.
Static spelling data¶
If db
is a Xapian::WritableDatabase
, you can add to the spelling
dictionary using:
db.add_spelling(word, frequency_inc);
The frequency_inc
parameter is optional, and defaults to 1.
And the corresponding way to remove from the spelling dictionary is:
db.remove_spelling(word, frequency_dec);
The frequency_dec
parameter is optional and defaults to 1. If you try to
decrement the frequency of a word by more than its current value, it’s just
removed.
Dynamic spelling data¶
Xapian::TermGenerator
can be configured to automatically add
words from indexed documents to the spelling dictionary:
Xapian::TermGenerator indexer;
indexer.set_database(db);
indexer.set_flags(indexer.FLAG_SPELLING);
Note that you must call the Xapian::TermGenerator::set_database()
method as well as setting Xapian::TermGenerator::FLAG_SPELLING
so
that Xapian knows where to add the spelling dictionary entries.
If a document is removed or replaced, any spelling dictionary entries that were added when it was originally indexed won’t be automatically removed. This might seem like a flaw, but in practice it rarely causes problems, and spellings in documents which were in the database, or in older versions of documents, are still interesting. You can think of this as using the history of the document collection as a source of spelling data.
If you really want these entries removed, you can run through the termlist of
each document you are about to remove or replace (if you indexed terms
unstemmed) and call Xapian::TermGenerator::remove_spelling()
for each
word.
Searching¶
Getting a spelling suggestion directly¶
If you aren’t using the Xapian::QueryParser
, or for other reasons you
need direct access to spelling corrections, you can get a suggestion for a
single word using Xapian::Database::get_spelling_suggestion()
. This
will return the best matching word in the spelling dictionary.
There’s an optional second parameter which controls the maximum edit distance it will consider; see details of the algorithm for more information.
QueryParser Integration¶
If Xapian::QueryParser::FLAG_SPELLING_CORRECTION
is passed to
Xapian::QueryParser::parse_query()
and
Xapian::QueryParser::set_database()
has been called, the QueryParser
will look for corrections for words in the query. In Xapian 1.2.2 and earlier,
it only did this for terms which aren’t found in the database.
If a correction is found, then a modified version of the query string will be
generated which can be obtained by calling
Xapian::QueryParser::get_corrected_query_string()
. However, the
original query string will still be parsed, since you’ll often want to ask the
user “Did you mean: [...] ?” - if you want to automatically use the corrected
form, just call Xapian::QueryParser::parse_query()
on it.
Omega¶
As of Omega 1.1.1, omindex and scriptindex support indexing spelling correction data and omega supports suggesting corrected spellings at search time. See the Omega documentation for more details.
Algorithm¶
A list of candidate words is generated by matching trigrams (groups of 3 adjacent characters) in the candidates against those in the misspelled word. As well as groups of adjacent characters, “starts” and “ends” are generated with the first two and last two characters respectively (e.g. “FISH” generates: “<start>FI”, “FIS”, “ISH”, and “SH<end>”).
This technique alone would missing many single-edit errors in two and three character words, so we handle these specially as follows:
For a three character word (e.g. “ABC”), we generate trigrams for the two transposed forms too (“BAC” and “ACB”), in addition to “<start>AB”, “ABC”, and “BC<end>”.
For a two character word (e.g. “AB”), we generate the special start and end trigrams for the reversed form (i.e. “BA”), so the trigrams are “<start>AB”, “AB<end>”, “<start>BA”, and “BA<end>”.
And for two, three, and four character words, we generate “bookend” bigrams consisting of the prefix ‘B’ followed by the first and last letters. This allows us to handle transposition of the middle two characters of a four letter word, substitution or deletion of the middle character of a three letter word, or insertion in the middle of a two letter word.
Note that we don’t attempt to suggest corrections for single character words at all, since the suggestions are unlikely to be of good quality (we’d always suggest the same correction for a given database, probably “a” for English). We also don’t currently attempt to suggest substitution corrections for two character words, though this would perhaps be useful in some cases.
Those candidates with the better trigram matches are compared to the misspelled word by calculating the “edit distance” - that’s the smallest number of operations required to turn one word into another. The allowed operations are: insert a character; delete a character; change a character to another; transpose two adjacent characters. The candidate with the smallest edit distance is found, and if more than one word has the smallest edit distance, that which occurs the most times is chosen. If there’s a tie on this too, it’s essentially arbitrary which is chosen.
If the word passed in is in the spelling dictionary, then a candidate will still be returned if one is found with the same or greater frequency.
The maximum edit distance to consider can be specified as an optional parameter
to Xapian::Database::get_spelling_suggestion()
. If not specified, the
default is 2, which generally does a good job. 3 is also a reasonable choice in
many cases. For most uses, 1 is probably too low, and 4 or more probably too
high.
Unicode Support¶
Trigrams are generated at the byte level, but the edit distance calculation
currently works with Unicode characters, so
Xapian::Database::get_spelling_suggestion()
should suggest suitable
spelling corrections respecting the specified (or default) edit distance
threshold.
Current Limitations¶
Exactness¶
Because Xapian only tests the edit distance for terms which match well (or at all!) on trigrams, it may not always suggest the same answer that would be found if all possible words were checked using the edit distance algorithm. However, the best answer will usually be found, and an exhaustive search would be prohibitively expensive for many uses.
Backend Support¶
Currently spelling correction is supported for chert and glass databases. It
works with a single database or multiple databases (use
Xapian::Database::add_database()
as usual). We’ve no plans to support
it for the InMemory backend, but we do intend to support it for the remote
backend in the future.
Prefixed Terms¶
Currently spelling correction ignores prefixed terms.
QueryParser changed word locations¶
The QueryParser doesn’t currently report the locations of changed words in the query string, so it’s a bit fiddly to mark up the altered words specially in HTML output, for example.
API limitations¶
Only a single possible correction can currently be returned. It would be nice to be able to get a ranked list.
Spelling data from deleted documents¶
If you’re adding spelling data using Xapian::TermGenerator
, then
spelling data from deleted (or updated) documents doesn’t automatically get
removed from the spelling dictionary when documents are deleted. This is
usually not a problem, can be if the topic area covered by a database moves
significantly with time.
References¶
The algorithm used to calculate the edit distance is based on that described in the paper “An extension of Ukkonen’s enhanced dynamic programming ASM algorithm” by Hal Berghel, University of Arkansas, and David Roach, Acxiom Corporation.


| User guide |
The interface creation is handled in the createInterface
subfunction. This has two distinct sections: menu building and widget arrangement.
The menus are built using the standard MATLAB menu building command uimenu
,
so let's concentrate on the widget arrangement.
The top-level layout is a horizontal arrangement, placing the controls to the left of the main plot. We make the layout draggable by using the "flex" variant of HBox, and put a panel in each side. Note that setting the "HelpFcn" for the view panel adds a small "?" icon for bringing up help. See here for more details.
% Add the contents
mainLayout =uix.HBoxFlex
('Parent'
, gui.Window,'Spacing'
, 3 );% Create the panels
controlPanel =uix.BoxPanel
( ...'Parent'
, mainLayout, ...'Title'
,'Select a demo:'
); gui.ViewPanel =uix.BoxPanel
( ...'Parent'
, mainLayout, ...'Title'
,'Viewing: ???'
, ...'HelpFcn'
, @onDemoHelp );% Adjust the main layout
set
( mainLayout,'Widths'
, [-1,-2] );
The controls panel is filled with a vertical layout containing the listbox and a button. Note the callbacks that are specified for both the list and button. These both call further subfunctions that are able to access the common "data" and "gui" shared structures.
% Create the controls
controlLayout =uix.VBox
('Parent'
, controlPanel, ...'Padding'
, 3,'Spacing'
, 3 ); gui.ListBox =uicontrol
('Style'
,'list'
, ...'BackgroundColor'
,'w'
, ...'Parent'
, controlLayout, ...'String'
, demoList(:), ...'Value'
, 1, ...'Callback'
, @onListSelection); gui.HelpButton =uicontrol
('Style'
,'PushButton'
, ...'Parent'
, controlLayout, ...'String'
,'Help for <demo>'
, ...'Callback'
, @onDemoHelp );set
( controlLayout,'Heights'
, [-1 28] );% Make the list fill the space
Finally, the view itself is simply an axes placed inside the view panel:
% Create the view
gui.ViewAxes =axes
('Parent'
, gui.ViewPanel );
(Full source code for this application is available here: [ view | edit | run ] )
| Application structure | [Top] | updateInterface |


This is Shane Cranor's personal web site, maintained by Shane's mom. We do not currently collect any information from visitors to this site except the information contained in standard web server logs (your IP address, referer, information about your web browser, information about your HTTP requests, etc.). The information in these logs will be used only by us and the server administrators for website and system administration, and for improving this site. It will not be disclosed unless required by law. We may retain these log files indefinitely. Please direct questions about this privacy policy to<EMAIL_ADDRESS>This is a P3P-enabled web site. If you are using a P3P-enabled web browser you should be able to fetch the P3P policy automatically. If not, here is the P3P policy and the P3P policy reference file.
This site also includes content hosted on the www.research.att.com web server. The AT&T privacy policy applies to this content.
Last updated 12 May 2001 by Lorrie Faith Cranor
http://shane.cranor.org/privacy.html


Hackers compromise official Monero cryptocurrency wallet
Hashes to hashes
by Roland Moore-ColyerHACKERS HAVE MANAGED TO SLIP their fingers into the official Monero cryptocurrency wallet by injecting coin-stealing malware into it.
How the cyber crooks managed to do that has yet to be revealed, as Monero is currently looking into the whole shebang.
On Reddit, the crypto outfit revealed that some users had noticed the hashes of the CLI binaries they'd downloaded to set up a Monero wallet did not match the expected ones. Thus, Monero concluded the binaries had been compromised for some 35 minutes.
As such, the compromised files were only online for a short amount of time, so the impact of the hacking might not be particularly significant, though users of CLI binaries for Monero wallets had best proceed with caution.
"If you downloaded binaries in the last 24h, and did not check the integrity of the files, do it immediately. If the hashes do not match, do NOT run what you downloaded," Monero advised on Reddit.
"If you have already run them, transfer the funds out of all wallets that you opened with the (probably malicious) executables immediately, using a safe version of the Monero wallet (the one online as we speak is safe -- but check the hashes)."
Correct, safe and signed hashes can be found here: https://web.getmonero.org/downloads/hashes.txt. So if you're into Monero and using CLI binaries, best check the hashes you've got against those.
 And that's not surprising when there's serious money to be grabbed; back in May crims managed to pilfer $41m worth of Bitcoin from the Binance cryptocurrency exchange after swiping 7,000 digital coins in one fell swoop.
And South Korean cryptocurrency exchange Coinrail got hacked in 2018 resulting in £27.8m worth of digital coins being nicked, having the nasty consequence of causing Bitcoin value to tumble. µ
Further reading
Hackers hijack gov-run websites to mine Monero cryptocurrency
- 12 Feb 2018
Cryptojackers hijacked YouTube ads with a CPU-draining Monero miner
- 29 Jan 2018
North Korea accused of hijacking PCs to mine Monero cryptocurrency
- 02 Jan 2018
Monero miner malware found lurking behind Android apps
- 31 Oct 2017


I'm an abstract sequential kinaesthetic learner. The most frustrating thing I have found with DBC is the order of information is not always linear, and there are not enough visual aids or representations of the code. With my learning style having more examples would greatly benefit me and to help with this I usually look elsewhere. I do learn best in small groups and seem to make the most strides in office hours or in the GPS meetings. I am looking foward to getting to Chicago because it is in that enviroment that I think I will flourish. Ways I can improve and expand my learning styles is by working with others and not limiting myself to only some of the source material. Hopefully I can expand my written and audio portions to make the most of today sociatal trends.


Table of Contents:
I love OpenBSD's new package configuration for php4.
The core application is one package and each subsequent module you want to incorporate for php4 is merely a package that needs to be installed (whereas in previous packages a whole package had to be deinstalled and reinstalled.)
Environment: OpenBSD 3.3 current, i386
[ref: http://www.php.net/manual/en/install.openbsd.php]
Read the above, clear and step-by-step, installation instructions.
Please remember to read the instructions specified after each package installation. You will be prompted, required at times to execute a program which will organise the binaries on your system, or to make changes to /var/www/conf/httpd.conf.
If you have followed the php4 installation correctly, then there should be no need to make additional changes to the apache configuration file.
Create a test php file called test.php with the following command:
| # echo "<?php phpinfo() ?>" > /var/www/htdocs/test.php |
Here, we have created a text file called test.php in our web directory. In this file is the php function 'phpinfo()' which will display runtime information concerning the active version of php.
Checking whether php has installed with the web server.
| # lynx localhost/test.php |
|
[ lynx displays the following ...]
PHP Version 4.0.4pl1 System OpenBSD hostname 2.8 GENERIC#399 i386 Build Date Today's Date _______________________________________________________________________________________________________________ [ ... more stuff cut out ... ] |
Of course if you have a browser that supports tables (AOL Navigator, or Microsoft Internet Explorer) then it would a look a lot nicer.
Further test scripts are available, but once the above is working you know you have a 'working' php configuration. The additional scripts can help you with debugging errors or if there are specific components you need to review. Two directories (test, tests) hold a number of different tests for checking the functionality of your php configuration.
Previous releases of this documentation are available for OpenBSD < 3.0, OpenBSD 3.2
Copyright (c) 2000/1/2 Samiuela LV Taufa. All Rights Reserved.
I reserve the right to be totally incorrect even at the best advice of betters.
You are permitted and encouraged to use this guide for fun or for profit as you see fit. If you republish this work in what-ever form, it would be nice (though not enforceable) to be credited.
|
php4 - scripting the web. |
Copyright © 2000/1/2 NoMoa Publishers All rights reserved. Caveat Emptor


| All or Nothing | All correct choices must be chosen and all wrong choice must be empty to achieve the full score. If a mistake is made the participant achieves 0 points. There is no score in between. |
|---|---|
| Proportional with Penalty | Each correct answer results in a fraction of the total score. To avoid guesswork, the same fraction is subtracted from the achieved points for each mistake. Example: if the score of the question is 3 and there are 5 options. Each correct answer option results in 0.6 points. Each wrong answer option subtracts 0.6 points. A student with 4 correct and 1 wrong choice would then receive 1.8 points. |


@* * Copyright 2023 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import viewmodels.AnswerSection @import config.FrontendAppConfig @import models.NormalMode @this( appConfig: FrontendAppConfig, main_template: MainTemplate, formHelper: FormWithCSRF, govukButton : GovukButton ) @(answerSection: AnswerSection)(implicit request: Request[_], messages: Messages) @main_template(title = messages("checkYourAnswers.title"), backLink = Some(routes.CompanyDetailsController.onPageLoad(NormalMode).toString)) { @formHelper(action = routes.CheckYourAnswersController.onSubmit, Symbol("autoComplete") -> "off") { @components.heading("checkYourAnswers.heading") @components.answer_section(answerSection)


Dame Joan Collins thinks jeans are 'tragic' and hates the ripped denim trend
Dame Joan Collins hates jeans - especially the ones with holes in - and says they're 'unflattering'
by Ashleigh Rainbird, https://www.mirror.co.uk/authors/ashleigh-rainbird/They’re a wardrobe staple with cuts to suit every body shape - so it’s almost universally accepted that you can’t go wrong with a classic pair of denim jeans.
Almost [ITALICS] universally.
Dame Joan Collins thinks jeans are “tragic”.
“I hate jeans,” she scoffs. “I hate them, they’re so unflattering.
“And I hate jeans with holes in the knees, or holes anywhere.”
Raging that “everyone” in LA wears jeans and t-shirts, she adds: “I don’t like that look. I like to be comfortable, but I want to be elegant, too.”
Dame Joan, who actually had her own denim line in the 1980s, has previously declared that jeans make “fat people look fatter” and remarked that “tiny people with thin legs tend to look like giant spiders”.
Speaking to Vogue as she launched her Christmas campaign for Valentino (who she notes also hates denim), a diamond-clad Dame Joan laments a bygone era where dressing up was more the norm.
“Nobody dresses up anymore,” she complains.  You’re all dressed up.’
“I find that very sad, because it will be the end of women buying elegant clothes in stores.”
Assume there’s a dress code if you’re popping to Dame Joan’s for a festive tipple.


|
|
| QGLViewerWidget (QWidget *_parent=0) |
| |
|
| QGLViewerWidget (QGLFormat &_fmt, QWidget *_parent=0) |
| |
|
void | set_scene_pos (const OpenMesh::Vec3f &_center, float _radius) |
| |
|
void | view_all () |
| |
|
QAction * | add_draw_mode (const std::string &_s) |
| | add draw mode to popup menu, and return the QAction created
|
| |
|
void | del_draw_mode (const std::string &_s) |
| | delete draw mode from popup menu
|
| |
|
const std::string & | current_draw_mode () const |
| |
|
float | radius () const |
| |
|
const OpenMesh::Vec3f & | center () const |
| |
|
const GLdouble * | modelview_matrix () const |
| |
|
const GLdouble * | projection_matrix () const |
| |
|
float | fovy () const |
| |
|
QAction * | findAction (const char *name) |
| |
|
void | addAction (QAction *action, const char *name) |
| |
|
void | removeAction (const char *name) |
| |
|
void | removeAction (QAction *action) |
| |
|
|
virtual void | draw_scene (const std::string &_draw_mode) |
| |
|
double | performance (void) |
| |
|
void | setDefaultMaterial (void) |
| |
|
void | setDefaultLight (void) |
| |
|
virtual void | mousePressEvent (QMouseEvent *) |
| |
|
virtual void | mouseReleaseEvent (QMouseEvent *) |
| |
|
virtual void | mouseMoveEvent (QMouseEvent *) |
| |
|
virtual void | wheelEvent (QWheelEvent *) |
| |
|
virtual void | keyPressEvent (QKeyEvent *) |
| |
The documentation for this class was generated from the following files:


Have you ever wondered where bumble bees go overwinter?
Well, so have we! Introducing, #QueenQuest!
QueenQuest is a community science effort that I am spearheading along with folks from Xerces Society, University of Vermont, University of Nebraska, and more. We’re getting researchers and community members out to look for overwintering bumble bee habitat.
Read more about it at the Queen Quest website.
And guess what? We’re already having success with Dr. Michelle Duenne’s students finding overwintering Bombus impatiens out east!
Search 1 of 3 completed by the Pensylvanicus Prospectors today for Queen Quest and we found TWO!!! hibernating B. impatiens queens at @WPNRatSVC in just an hour of searching!!!@_JohnMola pic.twitter.com/L1hvMXWDvC
— Dr. Michelle Duennes (@Polly_Nator) November 11, 2019


PathBrowser validation sample
<pathbrowserA
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/foundation/form/pathbrowser"
fieldLabel="No validation"
rootPath="/content/aem-touch-ui-validation"
name="./pathbrowserA"/>
<pathbrowserB
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/foundation/form/pathbrowser"
fieldLabel="Required"
rootPath="/content/aem-touch-ui-validation"
required="{Boolean}true"
name="./pathbrowserB"/>
<pathbrowserC
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/foundation/form/pathbrowser"
fieldLabel="Required and allow non root path"
fieldDescription="Try entering a valid JCR path other than /content/aem-touch-ui-validation"
rootPath="/content/aem-touch-ui-validation"
required="{Boolean}true"
allowNonRootPath="{Boolean}true"
name="./pathbrowserC"/>
<pathbrowserD
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/foundation/form/pathbrowser"
fieldLabel="Required and allow non existing path"
fieldDescription="Try entering an external URL"
rootPath="/content/aem-touch-ui-validation"
required="{Boolean}true"
allowNonRootPath="{Boolean}true"
allowNonExistingPath="{Boolean}true"
name="./pathbrowserD"/>


---
layout: post
title: 'Agile 2009: The Agile CTO, Diana Larsen and James Shore'
date: 2009-08-28 00:00:00
categories: business software-development
---
Diana Larsen and James Shore presented "The Agile CTO", a session for executives (oooh get me) which had the aim of bringing out and discussing a few consistent concerns that they have about their position.
- Their research was based on interviews with 8 CTOs from a variety of companies - sized from 8 up to thousands;
- Many felt the shift in priority as they moved from manager to CTO, quite keenly;
- Priorities changed from "how this project is going" to "how the share price is doing";
- They had a need to retain credibility by meeting commitments, and by not being surprised by bad news (there was a sense that it's the surprise that causes problems);
- They spoke of trying to create an environment where mistakes are not punished, but are accepted and analysed;
- Another consistent theme was time spent dealing with emotional baggage of team members;
- They were also a consistent love of seeing people excel, or watching their teams come up with amazing stuff that completely surprised them;
We then broke into groups to discuss other consistent themes from our experiences. Our table came out with:
- The need to keep abreast of industry trends and have a position on them, and how they affect our business;
- Balancing new product development and "lights on" maintenance activities;
- Representing business issues to the technology side of the business, and technology issues to the rest of the business - effectively being a conduit for information both ways;
... and some others, which I never wrote down, so they'll be lost to civilisation forever.


jHERE Playground
by
@thingsinjars
Show
Hide
HTML & CSS
Embed
Download
View Gist
Save to Gist
JS
CSS
HTML
MAP
{{JAVASCRIPT}}
{{HTML}}
{{CSS}}


Next: Semantics, Previous: Exhaustion, Up: Top [Contents][Index]
Users accustomed to certain applications may believe that the question of when to end parsing is almost too trivial to ask. And, for many applications this is the case. But the general question of determining the end of parse is decidedly non-trivial. For a broad theoretical overview, see "When are we done parsing?", pp. 93-94 in the 2nd edition of Grune and Jacobs, (see Grune and Jacobs 2008). This chapter discusses determination of the end of parse (EOP) from the Libmarpa point of view.
EOP-handling and exhaustion-handling are intertwined. It may be useful to review the section on exhaustion at this point. See Exhaustion.
| • Determining EOP from EOI: | ||
| • Determining EOP from exhaustion: | ||
| • Other ways of determining EOP: |


Celebrities who have gone broke
Fame and fortune sometimes results in fame without fortune. Take a look at our list of celebrities who've gone from boom to bust.
Fame and fortune sometimes results in fame without fortune. Take a look at our list of celebrities who've gone from boom to bust.


beefy workflow with requirejs
december 23rd 2013
Sometimes you want to work on your AMD code as a single bundle; the same way it will be deployed in production, with automatic bundling and live reload. Thanks to Chris Dickinson's recent work on the beefy development server, it's now easier to use r.js as a custom bundler.
Let’s get it configured.
What is beefy?
beefy is a static web server with built-in JavaScript bundling.
It was made to work with browserify by default, but if you use the --bundler
command line argument, you can specify r.js as your bundler of choice.
We are going to use this to run r.js each time our main.js
file is requested.
Get beefy by using the command:
npm install -g beefy
What is r.js?
r.js is a command line utility designed for running AMD-based projects in node.js, Rhino, and xpcshell. It also includes an optimizer for combining your AMD files into a bundle.
By using the optimizer functionality of r.js, in combination with beefy, we can bundle our JavaScript on each page refresh.
We need to install r.js into our project using the command:
npm install requirejs
If you have a package.json
and want to add it to your devDependencies, add --save-dev
to the command:
npm install --save-dev requirejs
Minimum Viable Config
There are seven options we need to set in our r.js config file that will allow us to use
it with beefy (actually, two are just nice to have). They are baseUrl
, name
, insertRequire
,
optimize
, useSourceUrl
, out
and logLevel
and each one is explained below.
These options will be set in a file named config.js
, which will be passed to the beefy
command.
You can find an example project at https://github.com/iceddev/beefy-requirejs-example
baseUrl
As with every Require.js project, you are going to want to set your baseUrl
.
This could be any place you want to begin resolving. Typically, it will be your vendor or application directory. Since we are doing a simple example, let's just use our current directory and we will put our JS files at the root of our project.
// config.js
({
baseUrl: './'
})
name
To specify the module (and all of its dependencies) we want to optimize,
we use the name
option. This option indicates an entry point for r.js
to begin resolving dependencies.
We are going to name our entry module main.js
, an AMD package convention,
and it will be in the root of our project.
// config.js
({
baseUrl: './',
name: 'main' // drop the .js, as AMD moduleId resolution appends it
})
main.js
Create a file in the root of your project named main.js
.
This file will be the entry point for your applicaton, and will be wrapped
in a define
function call.
// main.js
define([
'./another-module'
], function(another){
console.log('inside main.js');
console.log('another-module dependency:', another);
});
another-module.js
Create another file in the root of your project, but name this one another-module.js
.
This file is a dependency of your main.js
module and is just used to demonstrate that
we are, in fact, bundling all the dependencies together.
// another-module.js
define(function(){
console.log('inside another-module.js');
return {
something: 'yup, another module'
};
});
insertRequire
We can specify the insertRequire
option, to insert a require
function call at the bottom of
our bundle, which will initialize your application.
Note: This isn't needed if your data-main
filename is the same as the module entrypoint name
because Require.js will do an implicit require
. We will add it here because it doesn't hurt
anything and will help in situations like naming the files differently or using something like
almond.
// config.js
({
baseUrl: './',
name: 'main',
insertRequire: ['main'] // will add `require(['main'])` to the end of your bundle
})
optimize
During development, you probably want to disable optimization/uglification, so you will
be able to debug your bundle and builds will happen quicker. This is done by setting
the optimize
option to 'none'
.
// config.js
({
baseUrl: './',
name: 'main',
insertRequire: ['main'],
optimize: 'none'
})
useSourceUrl
- Source Maps
When using the optimize: 'none'
option, we can get source maps, using //# sourceURL=
and an eval
call.
Setting the useSourceUrl
option to true
will auto insert these for you, but it should
be disabled when bundling for production.
// config.js
({
baseUrl: './',
name: 'main',
insertRequire: ['main'],
optimize: 'none',
useSourceUrl: true
})
out
The typical way r.js is used is to output a file, determined by providing
a filename string as the out
option.
beefy doesn't operate on files, and instead expects to receive data on
process.stdout
.
The out
option can also take a function that will receive the output
text as its only parameter.
We are going to leverage the out
function to redirect the r.js output
to process.stdout
.
// config.js
({
baseUrl: './',
name: 'main',
insertRequire: ['main'],
optimize: 'none',
useSourceUrl: true,
out: console.log // console.log outputs to process.stdout and is tightly bound in node
})
logLevel
By default, r.js logs info about the build process. This gets intercepted
by beefy on process.stdout
and is added to the output served.
r.js provides a logLevel
option that can be used to disable logging. Log level 3 is
the level that logs only errors.
// config.js
({
baseUrl: './',
name: 'main',
insertRequire: ['main'],
optimize: 'none',
useSourceUrl: true,
out: console.log,
logLevel: 3
})
index.html
The last thing we need is an index.html
file that includes Require.js. If an index.html
file doesn't exist, beefy serves up a default page that just injects a script tag for your
entrypoint file. This won't work with the workflow outlined above because we assume the
require machinery will be available.
Create an index.html
file in the root of your project that contains:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Beefy + Require.js</title>
</head>
<body>
<script src="/node_modules/requirejs/require.js" data-main="main" type="text/javascript"></script>
</body>
</html>
Run beefy
The beefy command takes a filename as the first argument, or an input filename/output filename combination
in the form of input-filename.js:output-filename.js
. If you don't specify an input filename but specify an
output filename, in the format :output-filename.js
, beefy won't pass a filename to the bundler, but it will
still make the result of the bundler command available as output-filename.js
.
r.js assumes it is supposed to run a file if one is passed as the first argument to the command, and skips the optimization
tool. To avoid this, we will specify the first beefy argument as :main.js
.
Next, we want to reference the r.js compiler as the bundler: --bundler ./node_modules/.bin/r.js
Finally, r.js expects the -o config.js
argument to start the optimize tool with the config.js
file. Anything
after the --
argument to beefy is passed directly to the bundler command.

You should see logging in your console if your modules loaded correctly. You should also
be able to view the individual files in the sources
pane, probably under (no domain)
since we were using the useSourceUrl
option.
What else can we do?
This configuration will allow you easily to swap dependencies with a single line change.
// config.js
({
// rest of the config
paths: {
underscore: 'node_modules/underscore/underscore'
}
})
Can be changed to:
// config.js
({
// rest of the config
paths: {
underscore: 'node_modules/lodash/dist/lodash'
}
})
And your underscore references will resolve to Lo-Dash on the next refresh of your page.
Watch out for part two of this article for some advanced techniques and any other interesting stuff I find related to AMD and beefy.
-Blaine


Cardinal Energy - A New Addition To The Small Cap Triple-Threat Portfolio
by Mat LitalienSummary
- Equal weighted and actively managed portfolio.
- A focus on small-cap stocks with decent volume and that pay a dividend.
- Stocks are ranked according to income, growth, and valuation metrics.
I am happy to announce a new addition to the Small Cap Triple-Threat Portfolio - Cardinal Energy (OTC:CRLFF)[TSX:CJ]. Of note, all financials and prices are in Canadian dollars unless otherwise note.
Full disclosure - I was very hesitant on adding another oil & gas stock to the mix. Total Energy (TOT) [TSX:TOT] was one of the original holdings of the portfolio and its performance has been a drag. Since being added, it has lost approximately 43% of its value and holds the distinction of being the portfolio.
The entire sector has been decimated and significant headwinds remain. However, after looking into the company a little be deeper, I saw an undervalued junior producer with a dividend that was well covered.
Overview
Cardinal Energy one of the smaller independent oil & gas companies. It is a Western Canadian pureplay with three operations in Alberta and two in Saskatchewan.
As a junior producer, the company is subject to significant volatility. As of writing, the company is trading at $2.00 per share. This is near its 52-week low of $1.80 and at a 75% discount to its 52-week high of $3.50 per share.
This past week, the company released third quarter results in which it missed on earnings ($0.00 vs $0.02). Revenue came in at $95.48 million, down 15.9% from the third quarter of 2018. All things considered however, it was a decent quarter for the company amidst significant headwinds.
The company delivered strong adjusted funds from operations [AFFO] of $27.6 million (+2%) despite the Alberta oil curtailment that led to a slight decrease (-4%) in production. Through the first nine-months of the year, it has generated $36.4 million in free cash flow which is being used to pay down debt and buyback shares.
A top value stock
Without question, Cardinal Energy is a value stock. True, most oil & gas companies can be considered cheap, yet Cardinal's undervaluation sticks out.
Although it is relevant to note that Cardinal hasn't been this cheap since it went public in 2014, most of its oil & gas peers are also trading at a significant discount to historical valuations. It is par for the course these days.
Where it sticks out is relative valuation as compared to its peers.
| Cardinal | O&G Peers | |
| Trailing P/E | 3.10 | 12.9 |
| Forward P/E | 14.64 | 14.30 |
| Price-to-Sales | 0.76 | 1.3 |
| Price-to-Book | 0.31 | 1.77 |
| P/E to Growth | 1.05 | 2.30 |
*Source Zachs/Morningstar
Based on these numbers, it is no surprise that the company showed up on the screener as a top value stock.
Not for those looking for stability
Cardinal just made the cut with respect to the dividend. If a stable and reliable dividend is an absolute must, then Cardinal is not for you. In the past year, it has both cut and raised the dividend.
Last December, Cardinal announced it was cutting its monthly dividend from $0.035 to $0.01 per share. This past July, it raised the dividend by $0.005 and it is now paying a dividend of $0.015 per share. This is still a 57% drop from where it was a year ago.
So how can Cardinal Energy show up as a triple-threat stock? The screener is not predicated entirely on dividend growth. Although it is a component, it also considers yield and the safety of the dividend based on the company's financial position.
This is where Cardinal Energy ranked highly. The company currently yield's a hefty 8.82% and the dividend accounts for only 61% of earnings through the first nine-months of the year. More importantly, the payout ratio as a percentage of AFFO is only 13.5% and it accounts for a reasonable 35% of free cash flow [FCF].
The December dividend cut has enabled it to focus on debt reduction, still pay out a dividend and buyback shares with FCF. In the first nine months of the year, it has repurchased 3% of shares outstanding for cancellation.
With respect to growth, Cardinal also just made the cut. The company has targeted 5-10% production growth and the expectation is for average revenue growth in the mid-teens over the next couple of years.
There are 13 analysts covering the company (7 buys and 6 holds) and they have an average one-year price target of $2.39 per share. This implies 20% upside from today's share price.
This is all assuming of course, the price of oil remains stable. Therein lies the significant risk with a company like Cardinal Energy. As a junior producer, it is more susceptible to a crash in oil prices. It also less likely to survive a prolonged bear market.
With Cardinal's inclusion, here is the revised Small Cap Triple-Threat Portfolio.
| Symbol | Cost | Market Price | Sector | Industry |
| (OTC:ADWPF) TSX:ADW.A | $13.59 | $12.39 | Consumer Defensive | Beverages - Wineries & Distilleries |
| (OTCPK:CADNF) TSX:CAS | $10.09 | $12.65 | Basic Materials | Paper & Paper Products |
| (OTCPK:EHMEF) TSX:GSY | $45.15 | $64.93 | Financial Services | Credit Services |
| (OTC:HDIUF) TSX:HDI | $12.35 | $15.31 | Industrials | Industrial Distribution |
| TSX:JWEL | $17.79 | $26.09 | Consumer Defensive | Packaged Foods |
| (NOA) TSX:NOA | $14.94 | $14.80 | Energy | Oil & Gas Equipment & Services |
| (OTC:PBKOF) TSX:PBL | $24.00 | $20.00 | Consumer Cyclical | Gambling |
| (OTCPK:RAMPF) TSX:PIF | $11.64 | $12.27 | Utilities | Independent Power Producers |
| (OTCPK:SISXF) TSX:SIS | $12.99 | $14.42 | Industrials | Diversified Industrials |
| (TOT) TSX:TOT | $9.80 | $5.59 | Energy | Oil & Gas Equipment & Services |
| (OTC:SCCAF) TSX:ZZZ | $22.20 | $20.22 | Consumer Cyclical | Specialty Retail |
| (OTC:WJXFF) TSX:WJX | $16.26 | $15.13 | Industrials | Industrial Distribution |
| TSX:TF | $9.30 | $9.77 | Financials | Consumer Financial Services |
| TSX:RAY-A | $6.29 | $6.98 | Services | Broadcasting |
| (CRLFF) TSX:CJ | $2.00 | $2.05 | Energy | Oil & Gas |
Not an endorsement
As always, investors should do their own due diligence. This is especially true of small caps. They tend to be highly volatile and in certain cases, low volume can make entering and exiting a position difficult.
The portfolio above is not an endorsement to buy any particular stock. It is intended to expose Canadian investors to lesser-known and under-covered stocks by following a strict methodology.
If you have any questions, please feel free to post in the comments.
Disclosure: I am/we are long EHMEF, SISXF. I wrote this article myself, and it expresses my own opinions. I am not receiving compensation for it (other than from Seeking Alpha). I have no business relationship with any company whose stock is mentioned in this article.
Editor's Note: This article discusses one or more securities that do not trade on a major U.S. exchange. Please be aware of the risks associated with these stocks.


Top: Multithreading
PTypes provides a minimal set of utility objects for creating complex multithreaded and event-driven applications. In addition to threads and inter-thread synchronization primitives semaphore, mutex, rwlock and trigger the library also allows you to create message queues (msgqueue) typically used in windowed or other event-driven environments. The jobqueue class helps to build multithreaded server and robot applications with a pool of reusable thread objects.
The implementation and interfaces of threads and synchronization objects vary on platforms supported by the library. If an operating system lacks one of the features, PTypes implements it using the other primitives present in that OS. Please, see <pasync.h> for the implementation cross-reference of the synchronization primitives.
These interfaces except the atomic functions are available only in multithreaded versions of the library.
The multithreading classes are declared in <pasync.h>.


Home
About
Contact
Nick's Homepage
WELCOME BOiiiii!


Enter entity type and speicific entity. Note:It does not support spell correction currently. The entity search tab relies on DBpedia Sparql Endpoint, the type and similarity tab only depend on our services.
similarity score:


'Захват территории' - is an intellectual game with the addition of a randomness element.
Thank you for interesting :)
You can try it on Yandex
You can try it on VK
Authors & Feedback
Privacy Policy
Terms of Service


Probability theory is based on the addition and mulitplication rules, both of which we have stated as rules about two events. We have defined joint distributions of two random variables. Our definition of independence, too, refers to two events or two random variables.
But we naturally want to use – and have used – extensions of these results to several events. For example, we have routinely used $$ P(A \cup B \cup C) = P(A) + P(B) + P(C) ~~~ \text{if } A, B, C \text{ are mutually exclusive} $$ when we have found probabilities by partitioning events into three disjoint pieces.
In this chapter we will study a common method of extending results, and develop methods that will allow us to work with collections of events. In doing so we will encounter some classical applications that arise in data science.
The main method of extension that we will use is the method of mathematical induction.
The method of mathematical induction can be used to prove results when:
Then the method says that if you can show that the result is true for $n+1$ by assuming the induction hypothesis that it is true for $n$, then your proof is complete.
The method often applies when you find yourself writing, "In the same way," or "$\ldots$" to justify a step in a calculation. Induction can help turn the "$\ldots$" into math.
Here is a quick example from math that has been used already in this course. More examples will appear later in this chapter and in the course.
To prove that $$ \sum_{i=1}^n i = \frac{n(n+1)}{2} $$ first notice that the formula can be checked easily for $n=2$. Even checking it for $n=1$ is enough as a "base" case. Now assume the induction hypothesis that the formula is true for $n$ as stated above, and show that it is true for $n+1$. That is, show that $$ \sum_{i=1}^{n+1} i = \frac{(n+1)(n+2)}{2} $$
To show this, notice that
\begin{align*} \sum_{i=1}^{n+1} i &= \sum_{i=1}^n i ~ + ~ (n+1) \\ \\ &= \frac{n(n+1)}{2} ~ + ~ (n+1) ~~~ \text{(induction hypothesis)} \\ \\ &= (n+1)\big{(} \frac{n}{2} + 1\big{)} \\ \\ &= \frac{(n+1)(n+2)}{2} \end{align*}


Following web page contains quick and dirty slides. They are made more for convinience than presentation.
LLVM instruction selection presentation
LLVM pragmas


This is a h2 !
This is p zero
This is p one
This is a h3
This is p three
This is p four
This is a h4
List 1
List 2
Insert text
Change Css


ListIt
Category
Bakery
Canned Goods
Dairy
Dry/Baking Goods
Frozen Foods
Health & Personal Care
Meat
Produce
Other
Item
Add Item
Clear List
Delete Item
Bakery
Canned Goods
Dairy
Dry/Baking Goods
Frozen Foods
Health & Personal Care
Meat
Produce
Other


---
layout: post
title: Technology - Now and Beyond
categories:
- Entrepreneurship
- Technology
tags: []
status: draft
type: post
published: false
meta:
image: ''
seo_follow: 'false'
_edit_last: '1'
seo_noindex: 'false'
---
Seeing as I've been buried in the technology world for about a year now, I thought it might be useful to write down some of my thoughts in terms of where the industry is and where I think it might be going in the near future. For many of you in the tech industry, this will pretty common knowledge. Also, most of this will be from the perspective from the US as I don't have much of a grasp of tech outside of it.
Here are a few overlying trends which I think are rapidly changing the landscape as we speak:
- Mobile - Perhaps the most rapid change is the prevalence and development rate of smartphones. This year, 2013, smartphones will surpass the desktop for web traffic. And while the desktop is still very relevant, the smartphone has interfaces and functionality that were never native to the desktop. Things like high-speed internet from anywhere, GPS, multi-touch gestures, gyroscope, accelerometer, dual cameras, audio i/o, NFC, and more. Despite the nearly 1M apps on the app store, we're still just seeing the beginning of our phones being able to use all the capabilities. Add on the fact that your phone knows more than you about what your friends are up to and where they are through a simple Facebook authentication. Like it or not, mobile is going to become the paradigm of the decade.
- Cloud computing - Running in parallel with our devices being on steroids is the ease of creating powerful web services to support highly scalable web and mobile apps.
- Internet of things
- Social
- Crowdfunding
- Big data
Technologies I'm excited for:
Dangers of tech:
hopefully the beginnings of the application of technology to the three largest sectors of the economy yet to be impacted by it: education, health care and public services.


--- layout: example categories: example/v1.0.0 version: v1.0.0 title: Embed Soundcloud clip description: Embed a Soundcloud clip with an iframe. tags: - ui ---


RELAX NG
RELAX NG is the name for the unification of two XML schema languages:
The specification for RELAX NG has been developed by the OASIS
RELAX NG TC.
The following are available:
- Jing, a validator for RELAX NG implemented
in Java. This is written on top of SAX2.
- Trang, a program for converting between
different schema languages, focused on RELAX NG; in particular, it can
convert between the compact and XML syntaxes, it can convert between
RELAX NG and DTDs, and it can convert from RELAX NG to W3C XML
Schema
- DTDinst, a program for producing an XML
instance representation of XML DTDs; this is also used by Trang for
converting from XML DTDs into RELAX NG
- Namespace Routing Language (NRL), a XML language
for combining schemas for multiple namespaces. Jing implements
this.
- The Design of RELAX NG, a paper
discussing the design of RELAX NG
- Notes on implementing RELAX NG
validators. These describe the implementation techniques used in
Jing.
- A RELAX NG schema for RELAX NG.
- A RELAX NG implementation of XHTML
modularization.
- A RELAX NG schema for XSLT 1.0 stylesheets.
- An XSLT stylesheet that converts from
RELAX Core into RELAX NG. This should be able to handle any correct
RELAX Core module, but it does not implement the RELAX Core semantic
of implicitly allowing undeclared attributes. (However, the sample
implementation is capable of recovering from such errors.) Handling
the RELAX
include
feature requires an extension over XSLT
1.0; the stylesheet can currently use the extensions implemented in
either MSXML or SAXON; it can be easily adapted to any other
conforming XSLT processor that supports a result tree fragment to node
set conversion function. This stylesheet will not work with XT, since
XT does not implement keys. There's also an auxiliary stylesheet that removes some
redundancies generated by the previous stylesheet.
- A RELAX NG schema for RELAX Core,
including the schema for
datatypes. This was generated using the above stylesheets from the
RELAX module for RELAX core, and then hand-edited a bit.
- A test suite for RELAX NG.
James Clark


[1]
it will probably have lots of business people during the weekends with their nightly rates.
[2]
the week and tons of kids in tow that 's the weekends with their nightly rates.


var weight, x : real
var x : real := 9.83
var tax := 0.7 % The type is implicitly real because
% 0.7 is a real number
Real numbers can be converted to integers using ceil (ceiling), floor, or round. Real numbers can be converted to strings using erealstr, frealstr, and realstr. These conversion functions correspond exactly to the formatting used for the put statement with real numbers. Strings can be converted to real numbers using strreal. See descriptions of these conversion functions.
The predefined functions for real numbers include min, max, sqrt, sin, cons, arctan, sind, cosd, arcand, ln and exp. See the descriptions of these functions.
Pseudo-random sequences of real numbers can be generated using rand. See the description of this procedure.
The Turing Report gives a formal definition (not repeated here) of implemented real numbers in terms of their required accuracy relative to infinitely accurate (mathematical) real numbers.
Turing implements real numbers using 8 byte floating point representation. This provides 14 to 16 decimal digits of precision and an exponent range of at least -38 .. 38. The PC and Macintosh versions of Turing have 16 decimal digits of accuracy because they use IEEE standard floating point representation.


A | |
| add [Memcached.S] | |
| add [Memcached] | Memcached.add cache key value binds value to key only if there was no
previous binding for key .
|
C | |
| connect [Memcached.S] | |
| connect [Memcached] | |
| create [Memcached.S] | |
| create [Memcached] | |
D | |
| decr [Memcached.S] | |
| decr [Memcached] | Memcached.decr cache key amount will decrease the unsigned integer value
bound to key by positive value amount .
|
| delete [Memcached.S] | |
| delete [Memcached] | Memcached.delete cache key removes binding for key .
|
| disconnect [Memcached.S] | |
| disconnect [Memcached] | |
G | |
| get [Memcached.S] | |
| get [Memcached] | Memcached.get cache key reads a value previously stored with key from
the database.
|
H | |
| hash [Memcached] | |
I | |
| incr [Memcached.S] | |
| incr [Memcached] | Memcached.incr cache key amount will increase the unsigned integer value
bound to key by positive value amount .
|
O | |
| of_string [Memcached.Value] | |
R | |
| replace [Memcached.S] | |
| replace [Memcached] | Memcached.replace cache key value binds value to key only if there was
a previous binding for key .
|
S | |
| set [Memcached.S] | |
| set [Memcached] | Memcached.set cache key value binds value to key .
|
| stats [Memcached.S] | |
| stats [Memcached] | Memcached.stats cache host port will return current server statistics for
host as a list of key-value pairs.
|
T | |
| to_string [Memcached.Value] |


Urban Airship Android Library
Package Index
|
Class Index
com.urbanairship
com.urbanairship.actions
com.urbanairship.actions.tags
com.urbanairship.amazon
com.urbanairship.analytics
com.urbanairship.google
com.urbanairship.js
com.urbanairship.location
com.urbanairship.preference
com.urbanairship.push
com.urbanairship.push.notifications
com.urbanairship.richpush
com.urbanairship.widget
Select a package to view its members
Package Index
|
Class Index
Class Hierarchy
Class
Interfaces
AirshipConfigOptions
ApplicationMetrics
Autopilot
BaseManager
UALocationManager
PushManager
RichPushManager
Logger
UAirship
UrbanAirshipResolver
Action
AddCustomEventAction
LandingPageAction
OpenExternalUrlAction
DeepLinkAction
ShareAction
BaseTagsAction
AddTagsAction
RemoveTagsAction
Action.ActivityResult
ActionArguments
ActionArguments.Builder
ActionRegistry
ActionRegistry.Entry
ActionResult
ActionRunner
ActionUtils
ADMUtils
Analytics
CustomEvent.Builder
Environment
DefaultEnvironment
Event
CustomEvent
LocationEvent
GCMUtils
PlayServicesUtils
NativeBridge
UAJavascriptInterface
LocationRequestOptions
LocationRequestOptions.Builder
UAPreferenceAdapter
PushMessage
LocalizableRemoteInput
LocalizableRemoteInput.Builder
NotificationActionButton
NotificationActionButton.Builder
NotificationActionButtonGroup
NotificationActionButtonGroup.Builder
NotificationFactory
CustomLayoutNotificationFactory
DefaultNotificationFactory
SystemNotificationFactory
RichPushInbox
RichPushMessage
Comparable
RichPushUser


I have been a member of Bishopstown GAA Club since the age of 5. I play both hurling and football with my club.
GAA has helped me to develop many different skills.
I have learned a great deal of discipline from playing these sports.
I have also learned how to co-operate with others and how to work as part of a team.
GAA Achievements
Year
Accolades
2012
U14 Hurling Championship Winners
2016
Minor Football League Winner
2017
Minor Hurling Championship Winner
2018
U21 Football Championship Winners
Soccer
2005-2017
I was a member of Greenwood FC in Togher for 12 years. I started playing when I was 6 years old and only recently
stopped playing in 2017.
Soccer also helped me to develop many essential skills and better understand the
importance of teamwork.


Women's Autumn Internationals: England comfortably beat Italy
by James LawEngland scored 10 tries as they crushed Italy 60-3 in Bedford to complete a clean sweep of victories from their autumn internationals.
The Red Roses' driving maul and scrum were imperious throughout, with Vicky Fleetwood, Poppy Cleall and Heather Kerr going over from close range in the first 25 minutes.
Abby Dow beat two players to score and see England go in 22-3 up, with world player of the year Emily Scarratt surging through a gap to add a fifth try.
As weather conditions worsened hooker Kerr muscled over for the second time, with a penalty try adding to scores from replacements Amy Cokayne, Rownita Marston and Sarah Bern.
Italy - who finished second to Grand Slam winners England in this year's Six Nations - showed short spells of resistance in the first half but looked a beaten side after the break.
Simon Middleton's side, meanwhile, finish the year with 12 wins from 13 games and extend their run of victories on home soil - now up to 17.
Red Roses end 2019 with a flourish
In front of a 5,000 capacity crowd at Goldington Road - home of men's Championship side Bedford Blues - England made five changes to the side that edged past France in Exeter last weekend.
The Red Roses' opening three tries all came via lineout mauls before Dow finished off a fine move in the right corner with arguably the try of the match to close the first half.
Rain poured down during the second half but England were persistent as the Italians tired on an increasingly heavy surface.
Scarrett showed agility to cut back through a gap to dive over, while referee Hollie Davidson sin-binned Lucia Cammarano and gave England a penalty try as the visitors could not live with the physicality of their opponents.
Having made her England debut off the bench last week, Marston came on to score her first international try before fellow replacement Bern took the hosts into double figures.
England - ranked second in the world - will return to action in February as they begin their Six Nations defence.
England head coach Simon Middleton told BBC Sport:
"I thought we played exceptionally well in really tough conditions.
"When you play a team you know you could dominate it's easy to go away from your gameplan and struggle with your basics, but we executed well and stuck to our plan brilliantly.
"I thought we were ruthless in how we played and there were some really good individual performances."
England forward Sarah Bern told BBC Sport:
"It was good to see how we wore them down - Italy are always a great side to come out against.
"Coming on we just needed to inject a bit of energy and I think that's exactly what our bench did.
"We're in a fantastic place. We've got some new people in the squad, we've tried all our different combinations and I think we're in a great place after three wins."
Teams
England: McKenna; Dow, Scarratt, Scott, MacDonald; Harrison, Hunt; Botterman, Kerr, Brown, Cleall, Aldcroft, Packer, Fleetwood, Hunter
Replacements: Cokayne, Perry, Bern, Beckett, Marston, Riley, Daley-Mclean, Breach
Italy: Barattin; Magatti, Sillari, Rigoni, Sarasso; Cavina, Stefan; Turani, Bettoni, Gai, Fedrighi, Duca, Locatelli, Franco, Giordano.
Replacements: Cerato, Merlo, Tounesi, Ruzza, Cammarano, Sgorbini, Paganini, Capomaggi.


| Advertise | | | Find A Person | | | Driving Directions | | | Search Nearby | | | My Address Book | | | Internet Access | | | Popular Categories |
|
| |||||
| One
Strike and You're Out Travel & Leisure magazine suggests the best way to survive an airline strike. | |||
| Airport
Security Travel & Leisure magazine offers tips on making your traveling easier. Your belongings are safer than ever—and the reason may surprise you. | |||
| Business
Trip Traveling on business? Travel & Leisure magazine will tell you if you're throwing away money. | |||
| It
Takes Two Travel & Leisure magazine outlines how to get exactly what you want at restaurants. If diners want good service, they have to work for it | |||
| Terminal
Amnesia Travel & Leisure magazine highlights how to keep your wits (and your bags) | |||
|
Copyright © 2000
SMARTpages.com is an online product
of
Legal Information.
Some of the business
information provided by InfoUSA Omaha,
Nebraska


Behaviours: gen_server.
append_stream(PID, String) -> any()
begin_text(PID) -> any()
bezier(PID, X2, X3, X4, X5) -> any()
bezier/5 (PID,{X1,Y1},{X2,Y2},{X3,Y3},{X4,Y4})
This moves to X1,Y1 point as its start and then creates a cubic Bezier curve to X4,Y4 using the points in between as the control points. Bezier paths should be stroked/closed/filled with a separate command.
bezier(PID, X1, Y1, X2, Y2, X3, Y3, X4, Y4) -> any()
bezier/9 (PID,X1,Y1,X2,Y2,X3,Y3,X4,Y4)
This moves to X1,Y1 point as its start and then creates a cubic Bezier curve to X4,Y4 using the points in between as the control points. Bezier paths should be stroked/closed/filled with a separate command.
bezier_c(PID, Point1, Point2, Point3) -> any()
bezier_c/4 (PID,{X1,Y1},{X2,Y2},{X3,Y3})
This takes the current point as its start and then creates a cubic Bezier curve to Point3 using the points in between as the control points. Bezier paths should be stroked/closed/filled with a separate command.
bezier_v(PID, Point1, Point2) -> any()
bezier_v/3 (PID,{X1,Y1},{X2,Y2} )
This takes the current point as its start and then creates a cubic Bezier curve to Point2 using the current point and Point1 as the control points. Bezier paths should be stroked/closed/filled with a separate command.
bezier_y(PID, Point1, Point3) -> any()
bezier_y/3 (PID, {X1,Y1},{X3,Y3})
This takes the current point as its start and then creates a cubic Bezier curve to Point3 using the Point1 and Point3 as the control points. Bezier paths should be stroked/closed/filled with a separate command.
break_text(PID) -> any()
circle(PID, X2, R) -> any()
cms(X) -> any()
code_change(OldVsn, State, Extra) -> any()
color(Color::atom() | {R, G, B}) -> {R, G, B}
R,G,B = 0-255
This may be useful to lookup the rgb value of the color namesdefault_face() -> any()
delete(PID) -> any()
clear up - delete pdf building process
ellipse(PID, X2, X3) -> any()
end_text(PID) -> any()
ensure_font_gets_loaded(PID, FontName) -> any()
export(PID) -> any()
Export to PDF file format return: {PDFDoc::binary(), PageNo::integer()} | exit(Reason)
get_page_no(PID) -> any()
Useful for page numbering functions etc.
get_state(PID) -> any()
return the state of the server
get_string_width(Fontname, PointSize, Str) -> any()
get_string_width(PID, Fontname, PointSize, Str) -> any()
grid(PID, XList, YList) -> any()
handle_call(X1, From, X3) -> any()
handle_cast(X1, X2) -> any()
handle_info(Info, State) -> any()
image(PID, FilePath) -> any()
image(PID, FilePath, Size) -> any()
image(PID, FilePath, X3, Size) -> any()
inBuiltFonts() -> any()
inches(X) -> any()
init(Init) -> any()
kernedtext(PID, Text) -> any()
line(PID, From_To) -> any()
line(PID, From, To) -> any()
line(PID, X1, Y1, X2, Y2) -> any()
lines(PID, LineList) -> any()
mirror_xaxis(PID, Ytranslate) -> any()
mirror_yaxis(PID, Xtranslate) -> any()
move_to(PID, P) -> any()
new() -> any()
Spawn pdf building process
new_page(PID) -> any()
Add current page context to PDF document and start on a new page Note page 1 is already created by default and current page set to it after creation of PDF context.
page_script(PID, Script) -> any()
pagesize(X1) -> any()
pagesize returns: bounding box {Xleft, Ybottom, Xright, Ytop} full pages are always = {0, 0, Width, Height}
pagesize(Width, Height) -> any()
path(PID, Type) -> any()
picas(X) -> any()
points(X) -> any()
poly(PID, Points) -> any()
rectangle(PID, X2, X3) -> any()
Stroke a rectangle area. If Stroke Type is not appended in arguments, explicit stroke command "path(StrokeType)" has to be executed.
X, Y designate the lower left corner of the rectangle.rectangle(PID, X2, X3, StrokeType) -> any()
rectangle(PID, X, Y, WX, WY) -> any()
rectangle(PID, X, Y, WX, WY, Option) -> any()
restore_state(PID) -> any()
rotate(PID, Angle) -> any()
round_rect(PID, Point, Size, Radius) -> any()
round_top_rect(PID, Point, Size, Radius) -> any()
save_state(PID) -> any()
scale(PID, ScaleX, ScaleY) -> any()
set_author(PID, Author) -> any()
set the Author atribute of the PDF
set_char_space(PID, CS) -> any()
set_dash(PID, Mode) -> any()
set_dash(PID, Array, Phase) -> any()
set_date(PID, Year, Month, Day) -> any()
set the Date atribute of the PDF
set_fill_color(PID, Color) -> any()
set_fill_color_CMYK(PID, C, M, Y, K) -> any()
set_fill_color_RGB(PID, R, G, B) -> any()
set_fill_gray(PID, Gray) -> any()
set_font(PID, Fontname, Size) -> any()
set_keywords(PID, Keywords) -> any()
set the Keywords atribute of the PDF
set_line_cap(PID, Mode) -> any()
set_line_join(PID, Mode) -> any()
set_line_width(PID, W) -> any()
set_miter_limit(PID, Limit) -> any()
set_page(PID, PageNo) -> any()
Go to a page already created.
set_pagesize(PID, Size) -> any()
set_pagesize(PID, Width, Height) -> any()
set_stroke_color(PID, Color) -> any()
set_stroke_color_CMYK(PID, C, M, Y, K) -> any()
set_stroke_color_RGB(PID, R, G, B) -> any()
set_stroke_gray(PID, Gray) -> any()
set_subject(PID, Subject) -> any()
set the Subject atribute of the PDF
set_text_leading(PID, L) -> any()
set_text_pos(PID, X, Y) -> any()
set_text_rendering(PID, MODE) -> any()
set_text_rise(PID, RISE) -> any()
set_text_scale(PID, SC) -> any()
set_title(PID, Title) -> any()
set the Title atribute of the PDF
set_word_space(PID, WS) -> any()
skew(PID, XScewAngle, YScewAngle) -> any()
terminate(Reason, State) -> any()
text(PID, Text) -> any()
text_rotate(PID, Angle) -> any()
text_rotate_position(PID, X, Y, Angle) -> any()
text_transform(PID, A, B, C, D, E, F) -> any()
textbr(PID, Text) -> any()
transform(PID, A, B, C, D, E, F) -> any()
translate(PID, X, Y) -> any()
Generated by EDoc, Jun 15 2010, 14:11:28.


Toggle navigation
Kam1n0
Create an Application
Your Applications
Recently Added
Empty
Others...
Christian Louboutin
Reverse Engineer
Edit Profile
Helps
Feedback
Logout
[[${home_title}]]
message
×
Alert Message


Using Ruby Geocoder Gem Locally
These days I have been needing test a small feature (for a personal project) related with Geolocalization. The first and most obvious option was used Geocoder which has a number features enough for what I’m needing.
Alright I already have settled the gem on my Gemfile, but How I can test this gem on my local environment? due to in the docs
it’s clear when you use this Gem with a IP <IP_ADDRESS>
the Geocoder::Result
object is nil
.
Fortunately there is a option at least I can figure out this one in order to sort out the previous issue and do test on local.
We’re going to use Rack middleware in order to mock the IP with a custom one.
Let’s create a file which we called it fake_ip.rb
with following content.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
The previous code is pretty simple, the interesting part is on call
method which change the values for some of
elements env
.
In terms very simple The env
variable is a hash. That hash contains a lot of useful information including
request headers and body, as well as run-time environment data that may have been added by upstream middleware.
Now, edit config/application.rb
and put:
1
|
|
The previous code allow us to mock the IP with someone custom. Now if you visit a controller a inspect the content
1 2 3 4 5 |
|
I wrote a small rack-app in order to show you the whole workflow.
Do you know a better way to do this? Share it!


The dojo.js file contents are in the textarea below. Copy/paste the contents into a file on your disk.


##ReceivedEmail##
Received Email
##DeliveredEmail##
Delivered Mail
##ForwardedEmail##
Forwarded Mail
##DeferredEmailCount##
Deferred ##DeferredEmailDeferralsCount##
##BouncedEmail##
Bounced Mail
##RejectedWarningsEmail##
Rejected Warning ##RejectedEmailPercentage##
##RejectedEmailCount##
Rejected Mail ##RejectedEmailPercentage##
##DiscardedEmailCount##
Discarded Mail ##DiscardedEmailPercentage##
##BytesReceivedEmail##
Bytes Received
##BytesDeliveredEmail##
Bytes Delivered
##SendersEmail##
Mail Senders
##SendingHostsDomainsEmail##
Sending Hosts/Domains
##RecipientsEmail##
Mail Recipients


Figure out your "pitch" or tagline. Before you go, write down and practice a script of what you will say to people. This may sound less than genuine to introverts, but introverts become overwhelmed and can forget themselves in a crowd.


Welcome! Use the controls below to customize your experience.
Movie: The Avengers
Captions are available for this video.
TV: Stranger Things
Captions are available for this video.
Audio:
Queen - Another One Bites The Dust
Oh! Let's go!
Steve walks warily down the street
With the brim pulled way down low
Ain't no sound but the sound of his feet
Machine guns ready to go
Are you ready, hey, are you ready for this?
Are you hanging on the edge of your seat?
Out of the doorway the bullets rip
To the sound of the beat
Another one bites the dust
Another one bites the dust
And another one gone, and another one gone
Another one bites the dust
Hey, I'm gonna get you, too
Another one bites the dust
How do you think I'm gonna get along
Without you when you're gone?

How long can you stand the heat?
Out of the doorway the bullets rip
To the sound of the beat
Look out!


CRANIA AND DENTITIONS OF ARCHAEOLEMUR INAE
(LEMUROIDEA, PRIMATES)
by
lan Tattersall
A Dissertation Presented to the Faculty of the Graduate School of Yale University in Candidacy for the Degree of Doctor of Philosophy
1971
Reproduced with permission of the copyright owner. Further reproduction prohibited without permission.


Pig Dice Game
Please enter your names to start the game
Enter player name #1:
Enter player name #2:
Submit Names
The current total is:
's Turn
Click on the dice to start your roll!
Hold Your Score
's Turn
Click on the dice to start your roll!
Hold Your Score
's Score
The score for this player is:
's Score
The score for this player is:
is the Winner!
's score was:
Replay


1938-First article published in school newspaper "Fall of Barcelona in Spanish Civil War"
1940- 12 years old published an anti-fascist article
1945- graduate of Central High School of Philadelphia- began studying philosophy and linguistics at the University of Pennsylvania
1949- Married linguist Carol Schatz and also earned his BA
Created undergraduate thesis
1951- Earned his MA
Completion of thesis, Morphophonemics of Modern Hebrew
1951-1955- Jr. Fellow of the Harvard University Society of Fellows.
1955- Earned his PhD from the University of Pennsylvania. Also joined MIT staff.
1957- first daughter, Aviva was born and Published one of his best known works in linguistics, the novel Syntactic Structures
Made associate professor at the Massachusetts Institute of Technology
1960- 2nd daughter Diane born
1961- appointed full professor of Modern Languages and Linguistics
1962- appointed Research Fellow in Cognitive Studies at the Center for Cognitive Studies of Harvard University
1967- became leading opponent of Vietnam War with "The Responsibility of Intellectuals" Essay
Son Harry was born
1966-1976- held the Ferrari P. Ward Professorship of Modern Languages and Linguistics
1969- Book: American Power 1976- Appointed Institute Professor
1969-current- earned many academic achievements, awards and honors in various places in the world. Receiving many honors on issues from politics to linguistics.
Delivered lectures at Oxford University
1975- Became institute professor at the Massachusetts Institute of Technology
1987&1989- two time winner of The Orwell Award which was granted by the National Council of Teachers of English for “Distinguished Contributions to Honesty and Clarity in Public Language.”
1990- Published his work: On Nature, Use and Acquisition of Language
1999-Benjamin Franklin Medal in Computer and Cognitive Science
2005- received honorary fellowship from the Literary and Historical Society
2007- Uppsala University Honorary Doctor’s degree
2008- President’s Medal from the Literary and Debating Society of the National Contribution of Ireland.
As of 2010 Chomsky taught at MIT continuously for 55 years
2011- Chomsky was awarded the Sydney Peace Prize which is cited “unfailing courage, critical analysis of power and promotion of human rights” (Wikipedia, 2012)
"If we don't believe in freedom of expression for people we despise, we don't believe in it at all."