The Necessity of Balance
Posted December 10, 2018
Learning to code takes concentration and commitment, but all code and no context make Jill a dull developer.
As part of my PR chair duties for Kansas City Women in Technology, I wrote a newsletter article about member Jessica Kincaid, who's also a teacher and Resident Artist in the Charlotte Street Foundation Studios. Her works are on display at the Mobank Artboards on Southwest Boulevard through February 2019, and she's a great member spotlight candidate.
Our conversation touched on a couple of recurring themes I've considered blogging about lately, so I'm going to synergize them here. In no particular order, these are the questions I've been pondering that I think include "balance" in their answer:
- What do I bring to the team that no one else offers?
- Why are some mentors so poorly suited to the task?
- What — besides coding skills — makes a great developer?
My versatile, value-add skill set
In a World Cafe interview I recently heard, one of the musicians posed this question: "What do you bring to the band (or team, or role) that no one else can offer?" He was obviously talking about guitar styles or songwriting specialties, but after six months or so of interviewing, it's a question I'm surprised nobody has asked. When they do, I'll say something like this ...
What I bring to any team is a strong ability to learn that's tempered with the drive to fine-tune my existing development, content and functionality knowledge. You can count on me to display integrity — respect for deadlines, accountability, consistent best effort — but still have a sense of humor. I respect authority, but I'll also speak up to ensure we deliver the best possible product. And because I'm older and have evolved along with the Internet, I can balance and mentor younger developers with my life experience and soft skills.
The mystery of the myopic mentor
What can I say, I read a lot of Nancy Drew mysteries back in the day.
My mother the crossword-puzzle buff used "myopic" all the time, and although it's still kind of a logophile favorite, "lack of imagination and narrow-mindedness," a.k.a. myopic, perfectly describes why I think many well-meaning mentors fail at the task. They forget what it's like to hit walls at every turn. Mistake overwhelming confusion for laziness. And flat-out forget how to empathize.
If you want to help new developers, can I make a suggestion? Keep the buzzwords to a minimum and the empathy dialed to 11. If that balance is wildly reversed — as it was in a Meetup I'll never make the mistake of attending again — all you have is a roomful of confused newbies nodding their heads because they're afraid to ask questions for fear of being ridiculed. And it won't be long before you're mentoring a bunch of empty chairs.
Everyone needs time for dreaming
That subhead is a verbatim Jessica Kincaid quote, and I couldn't agree more. I've literally felt parts of my brain come back to life since I started learning JavaScript and its associated libraries and frameworks, like the word "chemise" popping into my head while I was folding shirts in my laundry. What other explanation could there be for decades-old French vocabulary showing up front and center in my hippocampus?
On the flip side of those memory rushes, I've also started dreaming in code again, just like I did when I first learned HTML. Jessica's wisdom about saving your brain's rest time for something other than recapping code makes sense. On one hand, you can't help it; the subconscious is gonna do its thing. But making room for other activities in your waking hours and consciously keeping your mind open to other topics, ideas and activities can give your brain a few more channels to choose from when it hits the "start" button during your REM cycle.
It's a crazy world out there, fellow developers, and it's easy to lose yourself in the quest to learn everything. But don't forget about the hobbies and pastimes (like Grandma-Macklemore mashups) that bring you happiness and make you an interesting person. And whatever you do, make time for (noncoding) dreams.


Login: enter your email address and password below.
Create an Account: enter the requisite information below to create an account.


Lorem ipsum dolor sit amet consectetur adipisicing elit. Nisi, expedita repudiandae non provident iusto mollitia quaerat, impedit quae dignissimos et distinctio, reiciendis enim. Accusamus vitae adipisci quibusdam commodi distinctio expedita. Lorem ipsum dolor sit amet consectetur adipisicing elit. Numquam maxime, facere delectus at vitae iure. Eligendi, commodi, porro sunt earum voluptate sint distinctio vero corporis debitis, numquam officiis beatae autem.
Lorem ipsum dolor sit amet, consectetur adipisicing elit.  Lorem ipsum dolor sit amet consectetur adipisicing elit. Fugit maiores, maxime eum aliquam a illum quaerat labore, nostrum inventore blanditiis quibusdam recusandae aperiam voluptas, quis hic architecto illo rerum veniam.
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Ab obcaecati cumque omnis esse cupiditate, hic dolorum? Incidunt odio ad perferendis nihil ex aliquid ut, tenetur, aut, deserunt quos aspernatur nam. Lorem ipsum, dolor sit amet consectetur adipisicing elit. Velit suscipit pariatur nulla saepe assumenda eveniet quis eos quo, excepturi esse voluptatum est harum eaque a possimus dicta natus quibusdam. Deleniti.
A native of Chicago, Nick has grown up a fan of the Chicago Bulls. Nick likes swimming, playing volleyball, and archery when he is able to make time for his hobbies. Nick decided to become a programmer in order to progress his career and be able to have a larger positive influence on the world.
Lorem ipsum dolor sit amet consectetur adipisicing elit. Tempore, iste laboriosam optio minus repudiandae hic ducimus similique! Fugiat quae quis nisi repudiandae, unde fugit laboriosam at exercitationem. Mollitia, sapiente eligendi? Lorem ipsum dolor, sit amet consectetur adipisicing elit. Autem officia modi impedit molestiae, perferendis sit distinctio error itaque, incidunt veniam facilis ratione similique. Officiis veritatis voluptates, tenetur quidem asperiores aperiam!
Tyree is from New Orleans, Louisiana. Tyree is a fan of the Celtics. In his spare time, Tyree likes to play basketball and is interested in personal fitness. Tyree became a developer because of how much pride he feels when he sees his finished product.
Lorem ipsum dolor sit amet consectetur adipisicing elit. A inventore eum tempora quis impedit commodi ex ea dolores, obcaecati rerum possimus, quos sed dicta alias eos vel architecto animi repudiandae. Lorem ipsum dolor sit amet consectetur adipisicing elit. Nam laborum non accusamus sapiente? Tenetur, ex ad? Praesentium magnam pariatur nihil laudantium quas, labore odio aperiam perspiciatis exercitationem provident quisquam omnis.
Tom is from Nashville, Tennessee and he is a fan of the local Memphis Grizzlies. Tom enjoys playing basketball, running and also likes to play games from the NES Classic. Before becoming a web developer, Tom taught high school math for the last 10 years and decided that he was ready for a different challenge.
Born and raised in Utah, Daniel has spent a lot of time hiking, camping, and exploring the outdoors. He enjoys exercise and watching basketball, especially the Utah Jazz. Daniel is an avid video gamer and enjoys classics like Super Smash Brothers, Mario Kart, and The Legend of Zelda. Recently Daniel has found a passion for web development and is pursuing a career through Lambda School.


Collectors of the Stones!
Forged at the beginning of the universe, the Infinity Stones represent the greatest destructive capability in all of existence.
Harnessing the very concepts of space, mind, reality, power, time and soul, these six stones have the potential to create or destroy anything when brought together.
 You must capture the Infinity Stones before the Mad Titan does or he will wipe out half the universe with a snap of his fingers.
I, the Watcher, am unable to help you on this quest, but I can explain the rules:
- At the beginning of the game you will be given a random target number. Do not stray from this specific target, as the hands of fate are a fickle thing and do not appreciate wavering!
- As you can see, the six Infinity Stones lay before you. Their proximity does not mean that they are quite within reach, however…
- Each time you click on a specific Infinity Stone points will be added to your score, though this will be hidden from you at first. Even one such as I do not have the ability to see all variables until they are presented!
- If you can choose the correct Infinity Stones in the correct sequence of clicks, then you will wield the power cosmic allowing you to defeat Thanos!
- If you fail to correctly guess the correct sequence, then Thanos will be victorious and gain the opportunity to court Mistress Death herself…
- The Multiverse is an ever-changing ocean of consequence, so each time you start a new game the target number and values of each Infinity Stone will change. Push yourself to see who wins between you and Thanos in this grim dance of entropic consequence!
Scroll Down To Begin


Conor McGregor UFC news: Notorious' manager confirms 'talks progressing' over Donald Cerrone fight
The Notorious has claimed he will make his long-awaited return to the octagon on January 18
by Liam PrendervilleConor McGregor's manager says talks are progressing over a potential fight with Donald Cerrone.
The Notorious has claimed he will make his long-awaited return to the octagon on January 18, reports The Mirror.
No announcement has been made on the Irishman's opponent but it is likely Cerrone will be the one he faces off against.
And his manager Audie Attar has confirmed negotiations are underway between the two parties and believes an announcement is not far away.
“I would say that talks have been progressing. We’ve met them, we’re in close communication with them," he said.
"I would hope that an announcement could happen in the coming weeks, but at the end of the day, it’s still a work in progress.”
The January bout will be McGregor's first since he was beaten by Khabib Nurmagomedov in October 2018.
Attar insists he always knew the UFC superstar would make a return, despite McGregor previously suggesting he had retired.
He believes McGregor will become a world champion again and doesn't see him slowing down, despite turning 32 next year.
Attar adds: "He strives for greatness and dreams for things that nobody thought that he could accomplish, and he’s doing that again.
“At the end of the day, that’s the thing people forgot about him; he actually is a competitor. He dares to do things differently.
"That’s what’s exciting. It’s exciting to be a part of that and witness that and see that fire in him again. I love it.”
If you haven't already, be sure to like our Irish Mirror Sport and Irish Mirror GAA pages on Facebook and follow us on Twitter.
How to follow the Irish Mirror on social media
You can like our main Facebook page here.
Our Irish Mirror Sports page - which brings you all your Irish and UK sports news - can be found here.
You can also check out our Irish Mirror GAA sports page.
The Irish Mirror Twitter account is @IrishMirror while our sports account is @MirrorSportIE.
Our Instagram account can be found here.


Guidelines
Find the latest version of DASH-IF Interoperability Guidelines, as well as the interoperability documents currently available for community review.
Test Vectors
Find the test vectors corresponding to the latest DASH-IF guidelines: SD, HD, multichannel audio, HEVC, timed text, multiple periods, encryption…
Software
Our Software section contains links for our reference player implementation, as well as DASH clients, DASH libraries and sample segmenters, packagers and validators.
You want to join Us?
We're recruiting industry leaders to join us in ushering MPEG DASH to the world. Contact us for more information on DASH-IF membership, benefits, and how you can join.
Join the Forum


Module: Cuid
- Defined in:
- lib/cuid.rb
Overview
Cuid is a library for generating unique collision-resistant IDs optimized for horizontal scaling and performance
Constant Summary
- BLOCK_SIZE =
length of each segment of the hash
4
- BASE =
size of the alphabet (e.g. base36 is [a-z0-9])
36
- RAND_SIZE =
size of the random segment of the block
BLOCK_SIZE * 2
Class Method Summary (collapse)
-
+ (Object) generate(quantity = 1, secure_random = false)
Returns one or more hashes based on the parameter supplied.
-
+ (Boolean) validate(str)
Validates (minimally) the supplied string is in the correct format to be a hash.
Class Method Details
+ (String) generate + (Array<String>) generate(quantity) + (Array<String>) generate(quantity, secure_random)
Returns one or more hashes based on the parameter supplied
79 80 81 82 83 84 85 86 |
# File 'lib/cuid.rb', line 79 def generate(quantity=1,secure_random=false) @use_secure_random = secure_random @fingerprint = get_fingerprint # only need to get the fingerprint once because it is constant per-run return api unless quantity > 1 values = Array(1.upto(quantity)) # create an array of the correct size return values.collect { api } # fill array with hashes end |
+ (Boolean) validate(str)
Validates (minimally) the supplied string is in the correct format to be a hash
Validation checks that the first letter is correct and that the rest of the string is the correct length and consists of lower case letters and numbers.
96 97 98 99 |
# File 'lib/cuid.rb', line 96 def validate(str) blen = BLOCK_SIZE * 6 !!str.match(/#{LETTER}[a-z0-9]{#{blen}}/) end |


|
plibsys
0.0.4
|
Filesystem interface. More...
Go to the source code of this file.
Data Structures | |
| struct | PDirEntry_ |
| Structure with directory entry information. More... | |
Typedefs | |
| typedef struct PDir_ | PDir |
| Directory opaque data structure. More... | |
| typedef enum PDirEntryType_ | PDirEntryType |
| Directory entry types. More... | |
| typedef struct PDirEntry_ | PDirEntry |
| Structure with directory entry information. More... | |
Enumerations | |
| enum | PDirEntryType_ { P_DIR_ENTRY_TYPE_DIR = 1, P_DIR_ENTRY_TYPE_FILE = 2, P_DIR_ENTRY_TYPE_OTHER = 3 } |
| Directory entry types. More... | |
Functions | |
| P_LIB_API PDir * | p_dir_new (const pchar *path, PError **error) |
| Creates a new PDir object. More... | |
| P_LIB_API pboolean | p_dir_create (const pchar *path, pint mode, PError **error) |
| Creates a new directory on a filesystem. More... | |
| P_LIB_API pboolean | p_dir_remove (const pchar *path, PError **error) |
| Removes an empty directory. More... | |
| P_LIB_API pboolean | p_dir_is_exists (const pchar *path) |
| Checks whether a directory exists or not. More... | |
| P_LIB_API pchar * | p_dir_get_path (const PDir *dir) |
| Gets the original directory path used to create a PDir object. More... | |
| P_LIB_API PDirEntry * | p_dir_get_next_entry (PDir *dir, PError **error) |
| Gets the next directory entry info. More... | |
| P_LIB_API pboolean | p_dir_rewind (PDir *dir, PError **error) |
| Resets a directory entry pointer. More... | |
| P_LIB_API void | p_dir_entry_free (PDirEntry *entry) |
| Frees PDirEntry object. More... | |
| P_LIB_API void | p_dir_free (PDir *dir) |
| Frees PDir object. More... | |
Filesystem interface.
A traditional filesystem can be presented as a combination of directories and files within a defined hierarchy. A directory contains the so called entries: files and other directories. PDir allows to iterate through these entries without reading their contents, thus building a filesystem hierarchy tree.
Think of this module as an interface to the well-known dirent
API.
First you need to open a directory for iterating through its content entries using p_dir_new(). After that every next entry inside the directory can be read with the p_dir_get_next_entry() call until it returns NULL (though it's better to check an error code to be sure no error occurred).
Also some directory manipulation routines are provided to create, remove and check existance.
Definition in file pdir.h.
| typedef struct PDirEntry_ PDirEntry |
Structure with directory entry information.
| typedef enum PDirEntryType_ PDirEntryType |
Directory entry types.
| enum PDirEntryType_ |
Creates a new directory on a filesystem.
| path | Directory path. | |
| mode | Directory permissions to use, ignored on Windows. | |
| [out] | error | Error report object, NULL to ignore. |
Gets the next directory entry info.
| dir | Directory to get the next entry from. | |
| [out] | error | Error report object, NULL to ignore. |
Caller takes ownership of the returned object. Use p_dir_entry_free() to free memory of the directory entry after usage.
An error is set only if it is occurred. You should check the error object for P_ERROR_IO_NO_MORE code.
Checks whether a directory exists or not.
| path | Directory path. |
Creates a new PDir object.
| path | Directory path. |
| [out] | error | Error report object, NULL to ignore. |
Removes an empty directory.
| path | Directory path to remove. | |
| [out] | error | Error report object, NULL to ignore. |
The directory path should be empty to be removed successfully.


Gold little changed as U.S.-China trade uncertainty lingers
by Sumita LayekGold prices held steady on Friday as
doubts prevailed over an interim trade deal being reached
between the United States and China this year.
Spot gold was little changed at $1,464.36 per ounce
by 0317 GMT. U.S. gold futures were up 0.1% to
$1,464.60.
China invited top U.S. trade negotiators for a new round of
face-to-face talks in Beijing in efforts to strike a deal, after
reports that a ‘phase one’ trade deal may not be inked this
year.
“The trade deal is definitely the theme at the moment as it
looks like the U.S. Federal Reserve’s easing is on hold, so
anything positive about the trade dispute is clearly negative
for gold and any delay is positive,” said Nicholas Frappell,
global general manager at ABC Bullion.
The Fed has cut interest rates three times this year to help
shield the economy from the effects of the trade war with China
before deciding to pause.
Lower interest rates reduce the opportunity cost for holding
the non-yielding bullion.
The tariff war between the world’s top two economies have
propelled gold, traditionally a safe asset in times of political
and economic uncertainty, about 14% higher this year, on track
for its biggest yearly gain since 2010.
Investors, however, were wary that bills passed by
Washington supporting the Hong Kong protesters could thwart a
smooth passage of an interim trade deal.
“Although Hong Kong is such an important city, the protests
itself are not a problem. It’s more about how it impacts the
U.S.-China relations and it’s already been discussed between
both the countries,” Frappell said.
Anti-government protests in Hong Kong have paralyzed the
Asian financial hub for months.
Weighing on bullion, Asian equities rose, but gains were
capped by trade worries, while the dollar held overnight gains.
U.S. data on Thursday showed weekly jobless claims
unchanged, while manufacturers reported a sharp slowdown,
suggesting some weakness.
Elsewhere, platinum dipped 0.9% to $906, but was on
track to rise by about 2% for the week.
A surge in investment buying will push the global platinum
market into a small deficit this year, the World Platinum
Investment Council said.
Silver lost 0.1% to $17.07 per ounce, and palladium
was down 0.1% to $1,758.62 per ounce, but was set to post
its best week in five, gaining 3%.
(Reporting by Sumita Layek in Bengaluru; Editing by Shailesh
Kuber)


{% for f in environment['styles'] %} {% end %}
Please enter your library’s ID and secret key.
These values were shown to you when you created your library.
Load LibraryOnce your library has been created, you’ll be shown a Library ID and a Secret Key. Make sure you copy these values to a secure location, such as a password manager. You will need these values to access and modify your rendrs.
Please enter the ID of your new rendr.
This ID will form part of the rendr’s URL, and cannot be modified once the rendr is created.
Create RendrRendr.it enables you to create images based on HTML, CSS and JavaScript snippets, as well as externally-hosted scripts or images. The final image can be customised via URL parameters or query strings.
You'll need to create a new library to store your rendrs. Just select
New Library... under the Rendr.it menu to create one.
You can open an existing library by selecting Open Library... under the Rendr.it menu. It will require your Library ID and Secret Key.
Use a CDN (for example, Amazon CloudFront) or a reverse proxy with your unique domain name (lXYZ.rendr.it, shown in the top-right corner of the screen). We will block your rendrs temporarily if you exceed 5 requests per second.
You don't. Your existing rendrs will still be accessible, but you'll have to migrate to a new library if you want to make any changes. All rendr code is publicly accessible though — just add .json to the end of your URL to get the original code.
No. Create a new library, and migrate your rendrs to it.
Yes. Source is available on GitHub; it's MIT-licensed so feel free to send us a pull request or run a customised version yourself.
As we use Webkit to render images, you can use any CSS rules that are supported by the Safari or Chrome browsers.
Yes, Javascript is allowed, just add it to the HTML section. You can even import Javascript libraries like jQuery or Mootools if you so desire.
To toggle between the Live Preview and the Image Preview, just click on the required preview mode to the left of the rendr URL. Note that Image Preview is only available for rendrs that have not been modified since they were last saved.
You can pass arbitrary slash-separated parameters to your rendr in the URL, between the Rendr ID and the file extension (which determines the type of image generated). These parameters are decoded and added to the window.query.params array.
All query-string parameters are decoded and made available as strings via the window.query object. For example, the query string ?width=500 results in window.query.width == "500". Repeating query-string keys will result in the corresponding value being an array.
Your HTML and CSS support Moustache replacement syntax for URL and query-string parameters. For example, the query string ?width=500 would result in {{width}} being replaced by 500 in your HTML or CSS.


Policies framed to create 5 crore jobs in MSME sector: Nitin Gadkari
by PTIHighlights
- The minister said that the Centre was taking steps to boost the growth of MSME sector 'by lowering the costs of logistics, power and capital'
- Gadkari called for the need to create satellite townships around cities to decentralise industrial development
PUNE: Union minister Nitin Gadkari on Friday said the Centre has designed policies to generate five crore jobs in the Micro, Small and Medium Enterprises (MSME) sector over the next five years.
He was speaking at the inaugural session of the second edition of 'Innovation Conclave' organised here by Mahratta Chamber of Commerce, Industries and Agriculture (MCCIA) in collaboration with Deutsche Gesellschaft fr Internationale Zusammenarbeit (GIZ) GmbH and the MSME ministry.
"At a time when cities are growing at a rapid pace, we need to go for decentralisation of development with a focus on agriculture, tribal and rural development sectors.
"We need technology and innovation for sustainable development of agriculture, rural and tribal development sectors," he said.
The MSME minister called for the need to create satellite townships around cities to decentralise industrial development.
He said the Centre was taking steps to boost the growth of MSME sector "by lowering the costs of logistics, power and capital."
"The Union government has designed policies to generate five crore jobs in the MSME sector in the next five years," he said.


Leon Cruickshank, Roger Whitham and Laura Morris
"Who has not taken part in a brainstorming session, but what small percentage of these people know this approach was designed and developed in 1952 by Alex Osbourn (Osbourn1952)?"
"Through our work with both large corporate partners and with (mostly creative industries and high technology) small and medium enterprises we have adopted an action research approach."


All notable changes to this project will be documented in this file. See standard-version for commit guidelines.
# 1.0.0 (2016-06-06)


--- layout: archive permalink: /certifications/ title: "" author_profile: true ---
Python Data Science Toolbox (Part 1)
Intro to Descriptive Stats
Intro to Inferential Stats
Statistical Learning - Stanford Online
Linear Algebra
Understanding and Visualizing Data with Python
Python Data Science Toolbox (Part 2)
Inferential Statistical Analysis with Python
Fitting Statistical Models to Data with Python
Statistics with Python Specialization
Machine Learning - Stanford Online
Advanced Machine Learning Specialization
Version Control with Git
Neural Networks & Deep Learning
Improving Deep NN
Structuring ML Projects
Convolutional Neural Networks
Sequence Models
Machine Learning with Big Data
Applied Machine Learning in Python


{%- extends 'layouts/generic.html' %} {% block title -%}{{ story['title'] }}{%- endblock %} {% block description -%}{%- endblock %} {% block body -%}
{{ story['title'] }} is about {{ results['characters']|count }} main characters, namely:
There were {{ results['songs']|count }} song(s) in this story:
{{ body }}


# Leposa Tamás lepi
I am a computer engineer and musician.
I've an aptitude for hardware gadgets and computer vision theory.
I'm also an obsessed cyclist and an amateur bike-mechanic.
### Contact
* email and gtalk: gigaboleny at gmail
* http://hu.linkedin.com/in/lepilepi
* http://github.com/lepilepi
### Why artcode?
I always like to craft things. It inspires me when something amazing can be build from just some materials, based on crazy ideas. I have the knowledge and love for engineering stuff, and I would be happy to take part in any kind of artistic creation supported by technology.
I used to work on a broad spectrum of creations, from the home-made shishas and instrument-mods to the accelerometer-based devices, LED-matrices and web-applications.


Before Change
tf.cast(predictions[common.OUTPUT_TYPE], tf.float32),
_RAW_OUTPUT_NAME)
// Crop the valid regions from the predictions.
semantic_predictions = tf.slice(
raw_predictions,
[0, 0, 0],
[1, resized_image_size[0], resized_image_size[1]])
// Resize back the prediction to the original image size.
def _resize_label(label, label_size):
// Expand dimension of label to [1, height, width, 1] for resize operation.
label = tf.expand_dims(label, 3)
After Change
// Crop the valid regions from the predictions.
semantic_predictions = raw_predictions[
:, :resized_image_size[0], :resized_image_size[1]]
semantic_probabilities = raw_probabilities[
:, :resized_image_size[0], :resized_image_size[1]]
// Resize back the prediction to the original image size.
def _resize_label(label, label_size):
// Expand dimension of label to [1, height, width, 1] for resize operation.


Glyn's home energy monitor setup
This is the setup I've been running in my own house since December 2010. In this time it's only needed a few restarts.
I would like to replace this (rather messy) setup with an emonTx , emonBase and emonGLCD wireless display. Watch this space!
Using modules:
AC mains non-invasive 3.0: x2 channel CT (we have two circuits in my house: one for off-peak tariff electricity)
Digital temperature sensors: x3 (outside, living room and hot-water
Wiznet Ethernet shield to post to emonCMS
Arduino Source code: download (V4.0)
Re: Glyn's home energy and temperature monitor setup
very nice and clean implementation of multiple CTs
I had done this in a very similar way but yours is cleaner so I adapted my code this morning. Now it will be easy to connect the extra 5 CTs that are coming from ebay.
Congrats.
btw. you use realpower in whInc = realPower * ((whtime-lwhtime)/3600000.0);
shouldnt we use apparent power? I normally calibrate and then take the electrical counter of my house and calculate the error and apply the correction to my calibration. I have always done this for apparent power. should i do it for realpower instead?
Then in emoncms when it says "power" it means apparent power ?
thank you.
Re: Glyn's home energy and temperature monitor setup
My setup is probably a bit different to most domestic monitoring setups. I monitor AC voltage using an AC-AC voltage adapter as well as current using a CT sensor. Having both voltage and current readings allows me to calculate real power. This is the power the the utility company bills me for. Most domestic monitors using just a current sensor can only monitor current, the assumet the voltage to be constat at a particular level and the PF to be constant at 1. This will often result in slightly higher readings that you are acutally being billed for due to inductive loads reducing the PF. For my house apparent power is 10% higher than real power.
We started collecting data on the differences between real and apparent power readings here: http://openenergymonitor.org/emon/node/220
You have done the best thing by calibrating your energy monitor againsed your meter.
At the end of the day the main reason for domesti energy monitoring is to better understand our energy consumption, actual precise values is not as important as trends.
The 'power' value in emoncms is whatever you post to it! emoncms has no way of telling. I post both, see the link above for a screen grab.
All the best, Glyn.
Re: Glyn's home energy and temperature monitor setup
Hi Glyn thanks for your time on answering.
I also have the AC to AC converter and then use that value of voltage for calculating the realpower. I actually use the example of your build as its incredible easy to add new CTs to the setup.
http://openenergymonitor.org/emon/node/251
I have right now 3 CTs and 5 are waiting to be installed when i get my Arduino MEGA in the mail.
Thank you for the code in that example, as makes it super easy.
ch1.emon_calc(inPinI_1,ICAL_1); //Energy Monitor calc function for channel 1, pass Arduino analog in pin nummber and calibration coefficient
ch2.emon_calc(inPinI_2,ICAL_2); //Energy Monitor calc function, for channel 2, pass Arduino analog in pin nummber and calibrat on coefficient
ch3.emon_calc(inPinI_3,ICAL_3); //Energy Monitor calc function, for channel 3, pass Arduino analog in pin nummber and calibrat on coefficient
The only thing i added to the emon.pde part of the code is this
cost = (wh/1000.0) * preciokwh;
in order to have the accumulated cost of each sensor to display it in the LCD. maybe you want to use it also.
If you have any suggestions or things to take into account when having multiple CTs please let me know.
Thanks Glyn.


An investment account contains securities such as certificates of deposit, bonds, stocks and treasury notes. An investment account has a linked bank account to manage the cash position when an investment is bought, sold or provides income. The investment account and the linked bank account may be managed as a single account by the financial institution or they may be separate accounts at the same or different financial institutions.
Each investment transaction has an associated action. You can specify an optional category to further classify the transaction. The remaining fields are used based on the action selected.
New Transaction – Create a new investment transaction.
Edit Transaction – Modify an existing investment transaction.
Delete Transaction – Delete an existing investment transaction.
Buy – Buy shares of a security. Specify the number of shares in the Shares field, the price per share in the Price field, the commission in the Commission field and the cost in the Amount field. The share price times the number of shares represents the cost basis for the security. The amount specified will be deducted from the linked bank account.
The cost for a bond does not include accrued interest. Accrued interest is recorded as a separate Expense transaction for the security.
The share price for a bond is often quoted for a 100-share lot. For example, a $10,000 bond would be priced at $100/share for 100 shares.
It is convenient to set the share price to $1.00 for fixed-income instruments which reinvest interest. This makes it easier to record the reinvestment since the number of shares reinvested is the same as the amount of interest received.
Exchange – Exchange shares of one security for shares in another security. The Amount field is the cost basis of the new security. The Shares and New Shares fields record the number of shares exchanged for the original security and the number of shares received for the new security. The cost basis of the original security will be reduced based on the number of shares exchanged.
Expense – Record an expense for a security in the Amount field. For example, accrued interest paid when purchasing a bond or foreign tax paid when receiving a dividend. Use the Category field to classify the type of expense. The amount will be deducted from the linked bank account.
Income – Record income for a security in the Amount field. For example, interest for a bond or dividend for a stock. Use the Category field to classify the type of income. The amount will be added to the linked bank account.
Reinvest – Record reinvested income. The Shares field contains the number of shares received and the Amount field contains the amount of income received. The cost basis of the security will be increased by the amount of income received. The amount will be added to the linked bank account.
RtnCapital – Record a return of capital for a security in the Amount field. The cost basis for the security will be reduced by the amount returned. The amount will be added to the linked bank account.
Sell – Sell shares of a security. Specify the number of shares in the Shares field, the price per share in the Price field, the commission in the Commission field and the proceeds in the Amount field. The amount specified will be added to the linked bank account. In order to calculate the cost basis for the sale, the correct accounting method must be selected.
FIFO – First In, First Out. Shares are sold starting with the first shares purchased. The cost basis is the total cost of the shares sold. This is the normal method when selling stock.
LIFO – Last In, First Out. Shares are sold starting with the last shares purchased. The cost basis is the total cost of the shares sold.
Avg Cost – Average cost. The average cost of all shares is calculated and this value is then multiplied by the number of shares sold to get the cost basis. This is the normal method for a mutual fund. Once the average cost method is selected for a security, it must be used for all subsequent sales of that security in order to get the correct cost basis.
SpinOff – Shares of a new security are received as a result of a spin-off from the original security. The number of shares for the original security remains unchanged by the spin-off. The Amount field is the cost basis of the new security. The New Shares field records the number of shares received for the new security. The cost basis of the original security will be reduced by the cost basis of the new security.
Split – Record a stock split. The Shares field contains the number of shares received or lost. For example, in a 2:1 split of 100 shares, you would receive 100 shares for a total of 200 shares after the split (the Shares field would be 100). In a 1:2 split of 100 shares, you would lose 50 shares for a total of 50 shares after the split (the Shares field would be -50). The cost basis for the security is unchanged by the split.
Partial shares received from an exchange, spin-off or stock split are usually sold immediately by the broker and you receive cash in lieu of the shares. In this case, you should record all of the shares in the exchange, spin-off or stock split transaction. You should then create a separate sell transaction to record the cash in lieu. This causes the correct cost basis to be calculated for the remaining shares.


{% load static %}
Please enter following details to continue
{{message}}
Already have an account? Login here!


I'm on
plan
1
2
with an
interest rate
of
%
.
My expected yearly income is
GBP, and my current
loan balance
is
GBP.
I graduate(d) in
.
Update


Inspired by the Google Arts & Culture story: Can You Guess The Artist From The Artwork?
A prototype game by @staplegun - Source code on GitHub.
Icon: Icons8


Thomas C Eskridge
Associate Professor
Florida Institute of Technology
150 W University Blvd
Melbourne, FL 32901
Tom is an Associate Professor in Computer Science and Human-centered Design at Florida Institute of Technology. His main interests are in creating technology to amplify human performance. His research encompasses knowledge representation, multi-agent systems, machine learning, deep learning, and visualization.
news
| Apr 25, 2022 | Congratulations to Brad Costa for defending his Master’s in Computer Science entitled “A Co-Evolutionary Approach to Test Case Generation for Safety-Critical Systems”. |
| Apr 22, 2022 | Congratulations to Kazuhiko Momose for passing his comprehensive exam in Human-Centered Design and the acceptance of his dissertation proposal entitled “Profiles of Communication and Authority for Evaluating Human-Automation Teamwork and Trust”. |


I practiced using git and working with a partner on VS Code LiveShare.
I practiced basic CSS styling.
I practiced the box model and centering as demonstrated here:
I grew up in the Beaverton-Hillsboro area and currently live near Newberg, Oregon.
I've been living and working in Japan for the last 8 years.
My primary drive is learning and becoming better.
I feel a deep sense of satisfaction from improvement, whether it's my shooting percentage in basketball, learning new chords on the piano, or learning to build web sites more efficiently.
My jobs in Japan included:
These were interesting jobs, but I often found myself supporting engineers and developers through curating data and translating research papers.
So I decided to get off the sidelines and get in the driver's seat.
And start creating and building things myself.
Learning is a never-ending process, but here's how I would rank my development-related skills at the moment:
I'm excited to keep leveling up these skills and adding new ones.


Ashanti Leaves Little To The Imagination As She Plays On A Bed In New Photos — Diva Looks So Good That Fans Are Now Bashing Nelly For Letting Her Go
by Mel WalkerR&B diva Ashanti rocked social media recently with a very sexy outfit, and fans have Tory Lanez to thank for that.
Lanez recently dropped a Chixtape 5 project, which featured songs from the 2000s R&B era. The project includes Ashanti’s “Foolish,” T-Pain’s “I’m Sprung,” and Chris Brown’s “Take You Down.”
Lanez spoke about Chixtape to Billboard and said this: “Everything is 2000s-inspired. Everything is inspired by the times when things were golden for us. I think all those pieces and everything that we’ve come out with has been all about nostalgia. I’m about to take you on a whole journey musically.”

The singer also delighted her million followers with a shoot from a concert, where she can be seen standing on a stage and performing to an admiring crowd.
Ashanti’s look for the event seemed dazzling as she wore a fresh and colorful bodysuit, and even though the outfit modestly kept from revealing too much skin, it outlined the singer’s curvy figure perfectly.
The 39-year-old combined the colorful attire with huge sunglasses and simple, but oversized hoop earrings.
The stunning effect of the diva’s looks was completed by impeccable makeup and bright red lipstick.
Ashanti wore her hair in a playful voluminous ponytail that was set very high.
The bombshell captioned the picture by simply stating that it was a blessing for her to perform, and indeed she looked like she was having the time of her life.
In the photo, Ashanti’s skin was glowing, and she raised her hands up in the air, and it seems like she really enjoyed the moment.
Naturally, after the musician shared the snapshot, it did not take long for reactions from fans to follow.
Very soon, the image gathered a remarkable number of likes, and a lot of supporters commented on how fine Ashanti looked.
The memorable outfit also took its share of attention in the comment section, as many people reacted positively to the bodysuit.
It seems like Ashanti may be really into the trend of combining form-fitting clothes with big sunglasses since she wore the look a couple of days earlier in LA too.
Ashanti is getting better with time.


(x: , y: ) Throws a card out of the stack in the direction away from the original offset.
(x: , y: ) Throws a card into the stack from an arbitrary position.
Open the Console to view the associated events.
Demonstration of https://github.com/gajus/swing implementation.


MYSTERY, ALASKA A film review by Christopher Null Copyright 1999 Christopher Null filmcritic.com
Oh no. Someone let David E. Kelley out of his cage for a second time this year. This time, the water in his LAKE PLACID is frozen over, giving us the setting for MYSTERY, ALASKA.
The title's surely a MYSTERY and gives you no clues about the film – so what's it all about? Those expecting a schlocky horror flick like LAKE PLACID will be let down. Is it a surreal and light dramedy like `Ally McBeal'? That's closer. Reality: MYSTERY, ALASKA is simply a grown-up version of THE MIGHTY DUCKS. Hey, this *is* a Disney film.
And not a very good one. The first sixty minutes, which set up the unlikely premise of the New York Rangers flying to a nowhere nothing-town in the middle of the Alaskan winter to play a game of pond hockey, is one of the worst hours of film I've seen all year. Stonkingly boring stretches broken up by potty humor do not a fun viewing experience make.
History would tell us that hockey movies are supposed to be funny. Disney would seem to argue otherwise, claiming that this Cinderella story can be played like an Arctic ROCKY. And maybe it can. For a while, I thought MYSTERY was headed into brave new territory – maybe a cautionary tale about the false pedestals we put our sports heroes on.
But pretty soon the Disneyfication hits and hits hard, and we've got the Against-all-odds-David-vs.-Goliath movie on our hands. And in its own bizarre way, that's when the movie becomes watchable. At two hours flat, MYSTERY, ALASKA is redeemed in its second half only by some unexpected cameos (that I won't spoil here) and a surprisingly great game of hockey.
If you're a hockey fan, you'll enjoy the movie for the game alone. If not, you're going to find yourself, ahem, out in the cold.

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


I live in a days but got for monday most wonderful show is keeping up with the jones is mr jones mrs hot stuff aj jones how are you i'm well let's talk about how well you weren't at the beginning of the week because.
Despite the fact that you were very very sick there was a comedic side to it for you or for me well not for you but for me it was quite funny our doctor did say aj if i did not know you i would think you're on drugs.
Well yes because I looked like I was stoned.
You had vertigo.
Very bad vertigo, yes.

Rapidly.
And I would feel like my whole world was on a record player.
For those listeners unfamiliar with a record player?
It would spin.
Like the whole room.
Like the whole room.
And so I would just randomly fall over or vomit or both.
So I spent Monday and Tuesday with the room spinning, no matter
whether I was upright or lying down and throwing up because I was
nauseous from spinning.
So you're completely disoriented.
You can't tell which way is up.
Not when it's spinning like that.

I did.
I'm always there to catch you.
Well, sort of.
I kind of hit the floor anyway, but you softened the blow.
That's right. So you're lying head down. What's happening at that point? The whole room is just,
you can't tell what's up. No, I can't. I can't. I can't tell which way is up. I just literally feel
like it's the whole room is turning around and around and around. And so I had to throw a glass
of ice cold water on and it shocked you back to reality. That's not what you did. No, I wish I
had though. I would have loved to see what I would have gotten you back. So that stayed like that
for two days. You had to do the Epley maneuver. Yeah. I think Ronston did it like four times total.

That kind of does, yeah. And it feels horrible because basically he's trying to get the crystals
that are in your inner ear back where they're supposed to be because that's what's producing
that type of vertigo. Now, as Christians, do we believe in crystals?
We believe in the ones that God put in your ear, you know, because, well, God put them there.
And that's the thing that gives you equilibrium. And is that equilibrium the right word?
That's the one that gives you balance. Yeah. It somehow floats in your inner ear
and it's what sends the message to your brain
about how to balance for different slopes
and if you're on a boat or all that kind of stuff.
So mine were in the wrong place, which is why.
- So you've got better?
- Yes, but what I have remaining is still a type of vertigo
which is from my C1 being out of place.
- Which is your vertebrae?
- Well, baby, I'm so sorry.
It's been a rough week for you
because you like to be active
and really for Monday and Tuesday, you were out for the count.
Yeah. And, yeah. And Wednesday I went to work, but then I was useless at night.
I was just so tired and...

So you had to sleep upright on the sofa.
Mm-hmm. For four days.
That's not fun. That was not good sleep.
So it would be fair to say this has been a fairly tiring week for both of us.
It's been an exhausting week.
You, because you don't know which way you're up and me, because I'm trying to compensate for...
you being sick and you're unable to do a lot of stuff that you would normally do,
but you gave me a fresh appreciation for all you do.
Oh, let's talk about that. What do you appreciate?
You're in a words of affirmation.
No, yes, I am. Go ahead.
No, but you are words of affirmation.
Everybody likes words of affirmation. Everybody likes to feel like they are appreciated and needed
and somebody notices what they do.
Baby, you know what I appreciate? I appreciate every Tuesday you get up super early and you take
Abigail to the choir practice. I have never appreciated how fatiguing that is. It's exhausting. It's totally exhausting. What else do you appreciate?
I appreciate that every morning. Without fail, you make the kids pack lunches. Yep. And you do so when there's not always the food in the cupboards that needs to be.
Yes, I'm a guy for them a lunch every morning. You do. I'm a guy with them an interesting one. They had like uncooked pasta. I don't think I want to know. Don't tell me. Just don't tell me.
I thought they'll D for Austin. Oh, dear.
They'll be fine. Yeah. They didn't complain.
So anyway, that kind of overshadowed the week.
How do you feel about ballet class?
Are you appreciating me taking them to ballet class?
So what's funny is three weeks ago, yeah, you normally take them to ballet class.
Yes. Because the last place I want to be is in ballet class with just the estrogen.
It's like the high pitched estrogen.
So these are all these prepubescent little girls running around super excited about being
Are kids forget any basic social norms and they're running around screaming and I'm basically the only dad there so it's all women and all girls and it's rush hour cool spring traffic to get there and give eyes.
So three weeks ago i was like babe i am never taking them to ballet class again and i said and i made an interview i have that worked out for you every week since i've had to take them because you can't drive nope not yet.
hope he didn't milk it until Friday. No way. No way. That'll be fine. All right. Rest of the week.
I went for a walk at Radner. That's how exciting our life as you actually went outside. A couple
of times I had to hold on to a tree. What other than that? Haven't we all, baby?
Other than that, it was exciting. Yeah. My Monday was interesting.  You did both on Monday? Yeah, I'm four students, man. That was a heavy day.
I thought you were just doing movement of ministry.

Because there's this growing fashionable trend to get rid of hell.
Hell seems to gruesome.
Hell is certainly gruesome.
There's a growing trend of people, quite respectable leaders, to talk about universalism.
What's the other thing that's?
Annihilationism.
So I was just talking to the students about why annihilationism and universalism.
though they seem much more palatable, just aren't supported in Scripture.
And talked about hell and the realities of it. It's so sobering.
It is. When you talk about hell, it's so sobering. And the couple of times I've taught it,
I've tried to be lighthearted about it. And that topic just does not work. It does not suit
lighthearted. No, there's just not much lighthearted information.
It's so sobering.
It's a real place.
It is the destination of those who are not in relationship with Jesus.

The promise in scriptures, anyone who calls on the name of the Lord will be saved.

And I would really encourage you,
if you haven't done that, please do that.
All right, from how what else happened this week?
- We had great weather.
If we did, what's I love it?
I'm in shorts.
As we record this, I'm in short.
Which is very distracting for me.
I don't think it's a good idea.
You know, a baby's here cross to carry.
I know. I know those nice furry legs.
So this afternoon when I first bike ride and then I took the kids to the park
and it was as gorgeous 5 p.m.
Some was setting.
I was like, I love it.
Amazing. I made roast chicken.
Yeah. We've hit the ball on the barrel for him.
We kind of have. Yeah.
I'll have to come up with something new for next week.
You finished your series on blessing this morning.
Yeah, I did.
Was excellent.
You kind of have to say that.
Give me your marriage.
I don't.
I don't.
I, babe, I tell you all the time if I don't think something was done very well or.

No, but I mean, if, if we do candidly talk to each other about, you know, that is for certain.
Right.
So I wouldn't actually say that it was really good if it wasn't.
Well, you know what?
I appreciate that.
You're welcome.
It was, it was hard work.
I'm not going to lie.
It was great though.
Speaking for service, I've learned to ignore the lack of feedback in first service.
I think that there's got to be a lot of contemplators in first service.
Well, I think so.
And it's really early if you think about it.
We should just hand out free espresso.
We'd probably get more of a reaction.
Yeah, or donuts.
Something like that.
So anyway, that's our week.
You've been sick.
I had a lot of teaching and I'm glad that week is over.
I feel like I've caught up a little bit on sleep.
And I'm excited about this week.
You don't?
No.
I'm sorry, honey.
That's OK.
Well, since we're done recording, you can go sleep.
OK.

I was just thinking.
I would say something like, what up, Becky?
Just have tired, are you?
So Becky wrote in and said, have you guys
- I've never done a podcast on negotiation
and I don't think we have.
So here we're gonna talk about negotiation.
Where do you wanna start with negotiation, babe?
- Oh my gosh.
- Talk about your love, hate relationship with negotiation.
- You're the negotiation king.
- I'm not sure I'm a king, love.

- I think I'm a king compared to you
because you don't really negotiate.
- Well, so I know you have the thing of like,
you should always ask for a discount
because you can always get at least 10%.
- Right, well, my golden rule is anybody can get 10% off
of anything pretty much anytime.
- But I sometimes feel like, for me,
it feels really cheap to be like,
"Hey, that's a nice latte.
Can I get 10% off that?"
Or, I know it doesn't really work with latte,
but you know what I'm saying.
- Yeah, but that's not how you would do it.
So, I mean, I should qualify that.
I don't go on a whole food and go,
"Hey, this is really good.

- Right, that's true.
- I'm not talking about your day-to-day stuff,
but I'm talking about a larger purchase.
- Yeah, or if you're like Craigslist-ing
Or, well, you do it every time we go to the garage
whenever we get the car fixed,
you always end up getting some sort of a,
at least 10% every single time we go.
- Right.
And here's why I know that's gonna be possible.
Is because if you're signed up to their email list,
they're constantly sending you,
"Hey, we're doing a winter special,
"or we're doing this, or we're doing that,
"or we're doing something."
I've got better things to do in my life
than keep track of what promotions are going on.
So I just say what promotions have you got going on?
- Right.
And you know, if they don't have one that's going on, I put it to them our service history
and just say, well, you know, given where anyway, we're jumping ahead, I think it would
be fair to say that you have got more comfortable with the concept of negotiation in the years
that we've been married. True or false? True. And your initial awkward relationship with
negotiation came from where? I don't know. I guess I'd never, ever done it. Like my
family. I don't ever remember asking for a discount for anything. Right. But I think
asking for a discount and negotiation to completely different things.
Okay.
I think negotiating is a business practice where you're trying to create a win-win environment.
I think asking for a discount just sounds like you're cheap.
Okay.
So while asking for a discount is part of negotiation, I think negotiation is a way broader topic than
just, hey, I don't want to pay for this. And that's not what you're coming from at all.
Right. Okay.
So negotiation for me is trying to create an environment that is win-win for both the seller and the buyer.
Because in an ideal situation, whether I'm the seller or whether I'm the buyer, we both want something to walk away happy.
Like if I go buy a car, the car salesman literally wants to sell me a car.
It's in his job title.
Right.
And I'm a buyer.
So if I can buy a car that's within my budget, I'm happy.
If he can sell a car within my budget, he's going to be happy.
It's just, it's just finding that common balance.
Right.
Right.
Right.
So what has been your problem historically with what I've just said there?
Um, I honestly don't know.
I would say historically I would just get embarrassed.
And I was happy for the benefit of it.
Like in that you would be able to negotiate, spending less or getting
more for what we're already spending or whatever.
Right.
But I just felt really uncomfortable to be there.
In fact, sometimes I would just sort of wander away
while you were doing the negotiation fact.
That's fascinating.
Why?
Because what did you think was happening?
I don't know.
But now?
Now what's it like?
Well, now I have benefited from it many times.
And so when you say something like, hey, babe,
when they call you about the car or whatever,
make sure that you ask them about negotiated discount
or whatever.
Yeah.
Now I can go, "Okay, I'm okay to do that," but I still have to kind of work myself up
to it.
But for example, if you're next to me and we're talking about a discount for a washer
dryer that we've just bought, or do you feel uncomfortable, or do you feel like, "Oh,
this is just part of the process," or...
I'm starting to feel like it's part of the process.
And do you...
Like, did you use to feel...
I'm fascinated by the fact that this was an awkward thing for you.
Why was it awkward?
Do you think I was making people feel awkward?
No, I think that you are, I don't know. I don't know. Look, I, I, I think that you're
great at it. I just sometimes, I feel like it's putting somebody in a difficult position.
Of course, they can always say no, but I guess because I feel like most people don't
realize they can say no.
Right. But anybody who's a salesperson for the living has been taught sales techniques.
right so I'm just using the same techniques it kind of as a defense like
I have this impenetrable shield like your Jedi mind tricks will not work on me
And so I don't want to deal with sleazy sales people any more than anybody else
Right. I just I'm not interested in playing that game
I want to find somebody like the best sales person to deal with is somebody who wants you to be happy
Right, and that's why I love
You're not gonna get a discount of Apple, but that's why I love Apple people. They're not on commission
They are they're gently trying to probe what is it you're looking for and how can we help you get there?
And so there's this sense of trust when you're speaking to somebody say from Apple or when you're speaking to you know
Somebody who has a passion about what they're doing like I love I don't know how many Apple products
I've sold to people I don't work for Apple in any capacity whatsoever. No, but you should know
But what I mean by that is I'm listening to people and I'm helping them pick what they need right when I find a sales person
and wants to do that, oh, I just, I love the ride.
And then you get a sense that there, that you can work together.
Right.
But the same thing, you know, whether I'm buying or whether I'm selling, like whenever
I'm selling anything on Craigslist, I know people are going to want to negotiate with
me. So I'm fine with that. I have verbal judo.
And I get that. Like I get that because I think in Craigslist, like if I put something on Craigslist,
I'm kind of expecting that somebody's going to try and negotiate me down.
But do you feel confident to navigate that?
Well, I do now, but I sort of have in my head like I won't go below X.
Right, that's a good thing.
Yeah.
All right, well, let me give you the basics of what I was taught.
Okay, go.
So I think this came from Dave Ramsey.
I think when we're doing Dave Ramsey's financial piece university,
which if you haven't done already, I highly recommend it.
He gave us three rules of negotiation.
I love this.
He said, the first rule is never misrepresent the truth while negotiating,
which is a really big deal.
I mean, of course it's wrong, you never wanna lie,
but it also weakens your stance,
because generally speaking, we can tell
when somebody else is lying.
- Right.
- Number two is never have intentions to harm the party.
Right?
And I think this is where people don't like to negotiate
because they think, oh, you're out to rip off the person.
I'm like, no, I'm not.
I'm acutely aware of the law of sewing and reaping.
I actually, I want to create a win-win environment.
Like when we've bought our cars in the past,
or when we've gone to set up the purchase of a car
or a lease of a car,
I'm not going in to try and drive a hard bargain.
I'm saying, this is my budget.
Do you have a car that fits in that budget?
And if they don't have a car that fits in that budget,
no hard feelings, I'll go look elsewhere.

You're like, no, I just don't want to overspend.
So number one, never misrepresent the truth.
Number two, never have intentions to harm the other party.
and number three, create a win-win deal.
Like that sounds blindingly obvious,
but again, you wanna find somebody
who wants to sell something and you wanna buy it,
if you can find a price that works for both of them,
you got a win-win deal.
- Right.
- There's your three guidelines.
The four stages of negotiating, this is how I do it.
- Wow, there's three guidelines and four stages.
- Let me tell you, baby, I've got a sprint in time.
The first step is, which nobody does,
is I just ask for a better price.
- Yes, which you always do.
- You'd have no idea how often,
you don't even need to do anything past that.
People are like, yeah, I can probably knock 10% off.
- Yeah.
- Or 20%.
I mean, how many times have we,
when we were buying our first house, do you remember this?
- Yes.
- The banker calls us and says,
okay, we're ready to lock in your interest rate.
And I was like, I don't understand what that means.
So they said, well, you know,
you're gonna be borrowing at a set interest rate.
And today's the day that we're gonna lock it in.
And I was like, okay, and what is the interest rate?
And I forgot what they said, 3.75%.
And I was like, oh, great.
Is that a good rate?
And they were like, yeah, it's a good rate.
I said, where do you come up with that rate?
And they said, well, we're fed these rates.
I said, how would I get a better rate?
And they were like, well, varying number of factors.
I said, do you think you could ask?
And they were like, yeah.
So you put me on hold for like five minutes
and then came back and was like,
hey, I've got you a better rate.
I've got you three and a half percent.
So just by me asking, what do we shave off like 15, 20,
thousand dollars over the course of our mortgage
just by asking?
- Huge, yeah.
- Out of innocence.
So just ask, ask for a better price.
And that's where I say generally speaking,
you should be able to get 10%,
generally speaking, you should be able to get 10% off
of everything every time.
- All right, well, what if they say no?
- Then stage number two is you just say,
oh, that's too bad, or oh, that's not good enough,
or oh, that's unfortunate.
And then step number three is you wait and say nothing.
It's butt clenching the awkward.
- It is.
  Well, that's a sign of the word for me
Right see
I'm trying to be quiet and you have to break the silence because it's about cleanse
But that's what I'll do it this time
See impressive you still broke the silence
Thing is don't shift your body language. Don't speak don't make suggestions
Here's the number one thing I see people go wrong when they're when they're learning to negotiate
They say hey is there a better price or can you not do that?
I'm like why have you softened the blow for them drop that or can you not do that if you say?
You know is there any way you know
Is there a better price or is that something you can do for me?
They're just gonna say they're just gonna repeat the last thing
"Oh, that's not something we can do for you."
Don't give them the easy out.
Just say, "Hey, is there any way you can do it?"
So I wait, I just, it's awkward,
but I just wait it out and I let them come back to me.
If they come back to me with an option and I like it,
great.
If they come back to me with an option and I think,
well, maybe not, I try some other things.
Well, okay, if you can't deal with a price,
could you do free shipping?
Or if you can't do free shipping,
could you cover the sales tax?
or if you can't do that, could you throw this in as well?
Or I just throw things around.
Again, I'm just exploring the options.
- I remember when we got the girls bunk beds.
- Right.
- They were willing to give 10%,
but they were quite expensive, the bunk beds.
- Right.
- And so I remember you talking to the guy and just saying,
you know, is there anything more you can do?
And he said, well, not really on these beds.
Like I can't really do anything on the beds.
And there was a lamp that you wanted.
Which wasn't true, by the way.
- Really?
- Well, if you remember, I, you know,
especially on bigger purchases in big bulk stores,
I usually just for the fun of it,
just drop the price by 50%.
So, you know, if the beds were $1,200,
I'm just like, "Is there only a do them for 600?"
Now, nobody should be doing them for 600.
So they're gonna say, "No, but then they're gonna make
"a counter offer, which is gonna be better."
And they're probably gonna counter with,
say, "Well, can you do it?"
You know, "Well, probably what best I could do
"is not 200 off as a thousand."

So what happened was he said, no, I can't. And this is key. You have to be able to walk away.
Right.
You have to be. And really, it's as simple as being like, oh, you can't. Oh, okay.
And here's the thing. If you don't have $1,200, don't buy the bunk beds.
Right.
So you just, that's what we said. We said, oh, okay. Well, thanks so much for your time.
And we left, but he walked us out the store.
Yeah.
And as we were just leaving the store, the door was open.
As I was walking out, the man said, let me give you my card.
When anybody says, let me give you my card, they want you to call back and make a deal.
Right.
So he said there was nothing that could be done, but we'd call back and said, well, you
know, what about this?
What about that?
And eventually I forget what he did.
Well, he did drop it by a couple hundred dollars.
Yeah.
And then, but you also had seen this lamp.
Yeah.
That was sort of in their sales section, but you just really liked it.
but it was supposed to be like a $200 lamp.
He gave it a $300 lamp.
- Okay, but he gave it to us for like 30 bucks or something.
- Right, yeah.
- So there's so many different ways that you can do that,
but you have not, 'cause you ask not.
The number of people who will just not ask,
I don't understand why people don't ask,
but just asking a loud saying, "Hey, is that possible?"
Dave likes to say, "Cash is king,
"so you take your cash with you
"and you start fanning the cash out."
I've never actually had to do that,
but that's one of the things he talks about.
I just, I find that a little gangsterish.
But we did that when we bought our first house,
if you remember.

I like that baby.
Yeah.
I'd love that.
Let's do that next time.
Okay, great.
Okay.
Tell everybody the story about buying the house
when you almost burst into yours.
Oh, well that was, of course not this house,
but the last house.
And the person who was selling us the house,
she was amazing and we'd met with her several times
and stuff like that.
And, but somebody had ordered the exact house
that we wanted in this area that was getting built.
And so when we came in, she said,
it's amazing you can actually have the house that you wanted
because somebody started the build on it
and then now they've canceled out of it.

But it didn't have the kitchen that I wanted
and like it didn't have sort of the gourmet upgraded kitchen
and whatever.
And so you had said, well, can we upgrade the kitchen
because that's what AJ wanted
and can we change some of the colors and whatever?
And so to begin with, the lady was like,
"No, you can't change anything
'cause everything's already ordered."
They said, "No architectural changes."
- Right, and we're like, "Okay."
So Alan's like, "Well, okay, I guess that's it then.
Okay, thanks."
- Well, I wasn't as abrupt as that.
I was like, "Well, hang on,
"the house hasn't been built yet."
- Right.
- So I understand that you've put in these orders,
but you're making a hundred of these houses.
- Right.
- Surely you could recycle our kit,
nothing's been delivered yet.
And they were like, "Nope."
- There wasn't even walls.
There was a concrete slab
that the house was gonna sit on, that's it.
- And I was like, "Well, if we're gonna spend
hundreds of thousand dollars on a house.
We'd love it to be the house that we want.

And I said, you know, we totally understand.
Thank you so much for your time.
And we go up and walked out.
And when we got said, you were like, what are we doing?
What are we doing? What are we doing?
I'm like, just just breathe.
Just that calm.
Just getting the car.
Just getting the car.
And we drove away.
And a couple of hours later, they called us a home.
And we're like, well, you know, I spoke to my manager and we could make
some architectural changes.
You're like, they let us change pretty much everything we wanted to.
Right. But the point is you have to be able to walk away.
Yeah.

It's already named its price.
Right.
So there's your first steps to negotiating.
Ask for a better price.
If they, if you get it, it's a one step process.
If you don't, you just say something like, well, that's not good enough.
Then you wait.
Right.
And then you buy or you can't offer.
You were waiting for me to interrupt you.
I knew it.
(laughs)
But again, if you're not out to be sleazy or difficult
or obstinate or prideful,
humility will open doors
that you might never realize are there.
- Yeah, I mean, I think the thing is too,
is we'd probably have a lot less,
I mean, I don't mean we, you and I,
'cause we're fairly good at sticking to,
you know, whatever budget we're inside.
But I mean, I guess I've been watching a lot of HGTV,
you know, and there's all these people who are like,
Our budget is $300,000 for a house.
And then they get shown like $450,000 houses or whatever.
And in the end, they're like, well, I guess, you know,
I guess that's what we're gonna do.
And then they end up in a place where they probably
didn't make the best decision for the rest of their life,
if that makes sense.
So if you can actually go into it going,
this is what I know, I have this much money.
This is also what I know.
I'm not going into debt for this.
- Right.
and just be honest about it.
I think most people can appreciate that.
- I find it fascinating when you combine favor
with negotiation.
- Yeah.
- So when you add in favor, favor is a gift
that God gives somebody else for your benefit.

Man, the number of times in our life that we've just seen favor work on behalf of us in terms
of upgrades, in terms of opportunities, in terms of bonuses.
Do you think of anything that recently that we've negotiated on?
You've negotiated every piece of furniture we've ever bought in this entire house.
I don't think that's true.
It absolutely is true.
Really?
Yes.
Bookcase in our bedroom, you negotiated that.
All of this furniture in the podcast studio,
well, I negotiated that, but because you made me.
- Right.
- But we got a discount on that, our couch.
You negotiated that.
Yeah, I think, I mean, the Breville food processor.
- I didn't even remember that.
- We went in to Macy's.
- Go Macy's.
- Go Macy's and got the Breville Soushev,
which was, I had been saving up all of my birthday money
and Christmas money and whatnot.
- Right.
And so we went in and at the cash register, the lady said, "Oh, it's already on for 20%
off or something like that."
And then she said, "But if you want to open a Macy's card, I can give you an extra 20%
off."
Which we do not.
Which we do not.
But you said, "Well, if you can actually just give us an extra 20% off for opening a
credit card, then you could actually just give us an extra 20% off."
Well, I don't think I said it quite like that.
No, no, no.
But you said it much nicer than that.
made some comment about, do you have any 20% discounts for people with awesome Scottish
accents?
Which in America often works.
And they're like, you know what, we do this Tuesday.
We have a, and you know, we struck up some banter and yeah, by the way we went.
So we ended up getting the, the Sue chef and a kettle for like $220.
It should have been like $500 altogether.

Yeah, I don't know where I learned my love of negotiation.
You're Scottish.
I think I saw my dad do it, but I don't know.
I've always enjoyed, I just enjoy the banter
and everybody loves a good deal.
Yeah.
There's something wrong with you if you don't.
Well, I kind of use it as a verb or an ad verb
when it's an action thing.
It's a verb.
It's a verb because whenever I explain to somebody
when they're like, how did you get that for that?
I'm like, "Alan Scottish them out of it."
(laughs)
Oh, well, that's very kind of you to say.
So Becky, I hope that's helpful.
That's how you negotiate.
If you have any questions about negotiation,
hit us up, we'd love to answer them for you.
- Yeah, well, I won't be answering them.
- Oh, come on, you're agreeing to go share.
I've told you through it many times.
- I'm getting there.
- You're doing an awesome job.
- Yeah, for the show notes, for the show,
go to alananaj.com/139.
- And if you would like information
about our school of supernatural life,
an amazing eight month school designed to transform your life,
head over to greycenter.us/school.
And if you'd like to ask us a question
or recommend a topic that we talk about on the podcast,
go to allen and AJ.com/ask.
- Yeah, please send us some topics
'cause we're finding now that we're 139 topics
in that sometimes by the time we get to Sunday,
we've run out of creative ideas of things to talk about.
So your suggestions would be lovely.
- Until then.


Try RTCDataChannel on Chrome
|
Copy below code and paste in Console Tab of Chrome Dev Tools (using Ctrl + Shift + i).
var iceServers = {
iceServers: [{
url: 'stun:stun.l.google.com:19302'
}]
};
var optionalRtpDataChannels = {
optional: [{
RtpDataChannels: true
}]
};
var offerer = new webkitRTCPeerConnection(iceServers, optionalRtpDataChannels),
answerer, answererDataChannel;
var offererDataChannel = offerer.createDataChannel('RTCDataChannel', {
reliable: false
});
setChannelEvents(offererDataChannel, 'offerer');
offerer.onicecandidate = function (event) {
if (!event || !event.candidate) return;
answerer && answerer.addIceCandidate(event.candidate);
};
var mediaConstraints = {
optional: [],
mandatory: {
OfferToReceiveAudio: false, // Hmm!!
OfferToReceiveVideo: false // Hmm!!
}
};
offerer.createOffer(function (sessionDescription) {
offerer.setLocalDescription(sessionDescription);
createAnswer(sessionDescription);
}, null, mediaConstraints);
function createAnswer(offerSDP) {
answerer = new webkitRTCPeerConnection(iceServers, optionalRtpDataChannels);
answererDataChannel = answerer.createDataChannel('RTCDataChannel', {
reliable: false
});
setChannelEvents(answererDataChannel, 'answerer');
answerer.onicecandidate = function (event) {
if (!event || !event.candidate) return;
offerer && offerer.addIceCandidate(event.candidate);
};
answerer.setRemoteDescription(offerSDP);
answerer.createAnswer(function (sessionDescription) {
answerer.setLocalDescription(sessionDescription);
offerer.setRemoteDescription(sessionDescription);
}, null, mediaConstraints);
}
function setChannelEvents(channel, channelNameForConsoleOutput) {
channel.onmessage = function (event) {
console.debug(channelNameForConsoleOutput, 'received a message:', event.data);
};
channel.onopen = function () {
channel.send('first text message over RTP data ports');
};
channel.onclose = function (e) {
console.error(e);
};
channel.onerror = function (e) {
console.error(e);
};
}
|
After executing above code in the console; try to send messages over RTP data ports like this:
offererDataChannel.send('message from offerer');
answererDataChannel.send('message from answerer');
|
Try RTCDataChannel on Firefox
|
Copy below code and paste in Console Tab of Firefox Dev Tools (using Ctrl + Shift + i).
function setChannelEvents(channel, channelNameForConsoleOutput) {
channel.onmessage = function (event) {
console.debug(channelNameForConsoleOutput, 'received a message:', event.data);
};
channel.onopen = function () {
channel.send('first text message over SCTP data ports');
};
}
function useless() {}
var iceServers = {
iceServers: [{
url: 'stun:<IP_ADDRESS>'
}
]
};
var offerer = new mozRTCPeerConnection(iceServers),
answerer, answererDataChannel, offererDataChannel;
offererDataChannel = offerer.createDataChannel('channel', {});
offererDataChannel.binaryType = 'blob';
setChannelEvents(offererDataChannel, 'offerer');
navigator.mozGetUserMedia({
audio: true,
fake: true
}, function (stream) {
offerer.addStream(stream);
offerer.createOffer(function (sessionDescription) {
offerer.setLocalDescription(sessionDescription);
createAnswer(sessionDescription);
}, null, mediaConstraints);
}, useless);
var mediaConstraints = {
optional: [],
mandatory: {
OfferToReceiveAudio: true,
OfferToReceiveVideo: true
}
};
function createAnswer(offerSDP) {
answerer = new mozRTCPeerConnection(iceServers);
answerer.ondatachannel = function (event) {
answererDataChannel = event.channel;
answererDataChannel.binaryType = 'blob';
setChannelEvents(answererDataChannel, 'answerer');
};
navigator.mozGetUserMedia({
audio: true,
fake: true
}, function (stream) {
answerer.addStream(stream);
answerer.setRemoteDescription(offerSDP);
answerer.createAnswer(function (sessionDescription) {
answerer.setLocalDescription(sessionDescription);
offerer.setRemoteDescription(sessionDescription);
}, null, mediaConstraints);
}, useless);
}
|
After executing above code in the console; try to send messages over SCTP data ports like this:
offererDataChannel.send('message from offerer');
answererDataChannel.send('message from answerer');
|
Explanation:
There are following possible situations:
- A person wants to chat with his friend(s); share files directly; or share a part of the screen in realtime!
He is the offerer.
- A person who receives an offer from a friend: so, he will join him. He is the answerer.
There are so many other possible situations. Let us go to the point.
|
Offerer
|
The first situation: a person wants to make an offer request to his friend. He will create offer sdp and send that sdp to his friend.
First of all: we need to open a peer connection:
var peerConnection = new webkitRTCPeerConnection(
{ "iceServers": [{ "url": "stun:stun.l.google.com:19302" }] },
{ optional: [{ RtpDataChannels: true}] }
);
RTCPeerConnection constructor takes two objects:
- ICE servers (STUN or TURN)
-
Optional (like RtpDataChannels)
|
Setting event handlers for peer connection object:
peerConnection.onicecandidate = onicecandidate;
openDataChannel();
In simple words: onicecandidate returns locally generated ICE candidates so you can pass them over other peer(s) via XHR or Socket.
|
|
|
var channel;
function openDataChannel() {
if (!peerConnection || typeof peerConnection.createDataChannel == 'undefined') {
console.log('RTCDataChannel is not enabled. Use Chrome Canary '+
'and enable this flag via chrome://flags');
return;
}
channel = peerConnection.createDataChannel('RTCDataChannel',
{
reliable: false
}
);
channel.onmessage = function (event) {
console.log(event.data);
};
channel.onopen = function (event) {
channel.send('RTCDataChannel opened.');
};
channel.onclose = function (event) {
console.log('RTCDataChannel closed.');
};
channel.onerror = function (event) {
console.error(event);
};
peerConnection.ondatachannel = function () {
console.log('peerConnection.ondatachannel event fired.');
};
}
|
How to send data?
|
channel.send('JUST a text message');
channel.send(
JSON.stringify(
{
boolean: true,
integer: 1,
string: 'Wow!',
obj: { etc: 'etcetera' }
}
)
);
|
Creating Offer SDP
|
peerConnection.createOffer(function (sessionDescription) {
peerConnection.setLocalDescription(sessionDescription);
}, null, { 'mandatory': { 'OfferToReceiveAudio': true, 'OfferToReceiveVideo': true } });
|
Answerer
|
Assume that you sent offer sdp to your friend using XHR. Now, "process" that offer sdp and then create answer sdp and send it back to offerer:
peerConnection.setRemoteDescription(new RTCSessionDescription(offerSDP));
peerConnection.createAnswer(function (sessionDescription) {
peerConnection.setLocalDescription(sessionDescription);
}, null, { 'mandatory': { 'OfferToReceiveAudio': true, 'OfferToReceiveVideo': true } });
|
|
|
peerConnection.setRemoteDescription(new RTCSessionDescription(answerSDP));
|
|
Offer/Answer exchange is done. What remaining are ICE candidates.
|
On getting locally generated ICE
|
function onicecandidate(event) {
if (!peerConnection || !event || !event.candidate) return;
var candidate = event.candidate;
}
|
On getting ICE sent by other peer
|
peerConnection.addIceCandidate(new RTCIceCandidate({
sdpMLineIndex: candidate.sdpMLineIndex,
candidate: candidate.candidate
}));
|
A few tips:
|
-
createDataChannel must be called before creating offer-sdp.
- Maximum length for a single message over RTP data ports is about 1280 bytes (chars).
- On RTP data ports, you can't send data over more than one channel simultaneously.
- Because RTP-channels are currently unreliable...so be careful because it is "unordered (UDP-Like)" delivery of messages!
|
Are you interested in a "more" simple full-fledged guide? Read this document.
|
Are you interested in a "simple" guide about RTCDataChannel? Read this document.
|
| Are you interested to learn How to share files using RTCDataChannel APIs?
|


[gecode-users] Boost and serialization with new release
Guido Tack
tack at ps.uni-sb.de
Mon Mar 3 11:45:23 CET 2008
Stefano Gualandi wrote:
> Hi,
> Does the new release depend on a particular boost version?
> So far, it compile only with serialization disabled (I am trying on
> both Linux and Mac OS X).
We've had some problems with boost serialization (mainly due to
unreadable error messages from template functions...), and haven't
been able to resurrect it before the release. I just fixed the most
obvious things in the trunk (which had to do with interface changes
within Gecode), but the code still doesn't compile. I must admit that
I don't fully understand all the details of boost serialization, and I
just don't know what's wrong with the current code - the compiler
complains about ambiguous overloading of an operator<< for the type
boost::archive::version_type.
If you need boost serialization, it would be great if you could have a
look at what's wrong there. If you don't need it, please just compile
without the --with-boost switch.
Cheers,
Guido
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2436 bytes
Desc: not available
URL: <http://www.ps.uni-sb.de/pipermail/users/attachments/20080303/f18f1a28/attachment.bin>
More information about the gecode-users
mailing list


--- layout: page title: Jae-Hee Jung use-site-title: true ---
Welcome! I am an Assistant Professor in the Department of Political Science at the University of Houston. Previously, I was Postdoctoral Fellow in Survey Research at the Blavatnik School of Government and Non-Stipendiary Research Fellow at Nuffield College at the University of Oxford.
My research interests are in comparative party politics, political behavior, and political psychology. In the context of Western democracies, I study how information and messages from the representational environment influence voters' attitudes and behaviors. I am particularly interested in understanding how morality works in party competition and voter psychology. But I also explore other questions related to how the informational environment influences the public. My work on these topics has been published in the American Journal of Politics Science, Electoral Studies, Journal of Elections, Public Opinion & Parties, and Journal of Politics.
I received my PhD from the Department of Political Science at Washington University in St. Louis. Before graduate school, I studied at Underwood International College of Yonsei University in Seoul, South Korea. I received a BA in Political Science and International Relations with highest honors.


6 references to ScriptMethod
Microsoft.PowerShell.Commands.Utility (4)
commands\utility\AddMember.cs (2)
420
case PSMemberTypes.
ScriptMethod
:
572
case PSMemberTypes.
ScriptMethod
:
commands\utility\GetMember.cs (1)
193
| PSMemberTypes.MemberSet | PSMemberTypes.NoteProperty | PSMemberTypes.PropertySet | PSMemberTypes.
ScriptMethod
commands\utility\Update-TypeData.cs (1)
562
case PSMemberTypes.
ScriptMethod
:
System.Management.Automation (2)
engine\MshMemberInfo.cs (2)
112
Methods = CodeMethod | Method |
ScriptMethod
,
2447
public override PSMemberTypes MemberType => PSMemberTypes.
ScriptMethod
;


This section describes the methods and properties that are available for formatting cells in Excel.
The properties of a cell that can be formatted include: fonts, colours, patterns, borders, alignment and number formatting.
Set the font used in the cell.
| Parameters: | fontname (string) – Cell font. |
|---|
Specify the font used used in the cell format:
cell_format.set_font_name('Times New Roman')
Excel can only display fonts that are installed on the system that it is running on. Therefore it is best to use the fonts that come as standard such as ‘Calibri’, ‘Times New Roman’ and ‘Courier New’.
The default font for an unformatted cell in Excel 2007+ is ‘Calibri’.
Set the size of the font used in the cell.
| Parameters: | size (int) – The cell font size. |
|---|
Set the font size of the cell format:
format = workbook.add_format()
format.set_font_size(30)
Excel adjusts the height of a row to accommodate the largest font size in the row. You can also explicitly specify the height of a row using the set_row() worksheet method.
Set the color of the font used in the cell.
| Parameters: | color (string) – The cell font color. |
|---|
Set the font colour:
format = workbook.add_format()
format.set_font_color('red')
worksheet.write(0, 0, 'wheelbarrow', format)
The color can be a Html style #RRGGBB string or a limited number of named colors, see Format Colors.
Note: The set_font_color() method is used to set the colour of the font in a cell. To set the colour of a cell use the set_bg_color() and set_pattern() methods.
Turn on bold for the format font.
Set the bold property of the font:
format.set_bold()
Turn on italic for the format font.
Set the italic property of the font:
format.set_italic()
Turn on underline for the format.
| Parameters: | style (int) – Underline style. |
|---|
Set the underline property of the format:
format.set_underline()
The available underline styles are:
Set the strikeout property of the font.
Set the superscript/subscript property of the font.
The available options are:
Set the number format for a cell.
| Parameters: | format_string (string) – The cell number format. |
|---|
This method is used to define the numerical format of a number in Excel. It controls whether a number is displayed as an integer, a floating point number, a date, a currency value or some other user defined format.
The numerical format of a cell can be specified by using a format string or an index to one of Excel’s built-in formats:
format1 = workbook.add_format()
format2 = workbook.add_format()
format1.set_num_format('d mmm yyyy') # Format string.
format2.set_num_format(0x0F) # Format index.
Format strings can control any aspect of number formatting allowed by Excel:
format01.set_num_format('0.000')
worksheet.write(1, 0, 3.1415926, format01) # -> 3.142
format02.set_num_format('#,##0')
worksheet.write(2, 0, 1234.56, format02) # -> 1,235
format03.set_num_format('#,##0.00')
worksheet.write(3, 0, 1234.56, format03) # -> 1,234.56
format04.set_num_format('0.00')
worksheet.write(4, 0, 49.99, format04) # -> 49.99
format05.set_num_format('mm/dd/yy')
worksheet.write(5, 0, 36892.521, format05) # -> 01/01/01
format06.set_num_format('mmm d yyyy')
worksheet.write(6, 0, 36892.521, format06) # -> Jan 1 2001
format07.set_num_format('d mmmm yyyy')
worksheet.write(7, 0, 36892.521, format07) # -> 1 January 2001
format08.set_num_format('dd/mm/yyyy hh:mm AM/PM')
worksheet.write(8, 0, 36892.521, format08) # -> 01/01/2001 12:30 AM
format09.set_num_format('0 "dollar and" .00 "cents"')
worksheet.write(9, 0, 1.87, format09) # -> 1 dollar and .87 cents
# Conditional numerical formatting.
format10.set_num_format('[Green]General;[Red]-General;General')
worksheet.write(10, 0, 123, format10) # > 0 Green
worksheet.write(11, 0, -45, format10) # < 0 Red
worksheet.write(12, 0, 0, format10) # = 0 Default colour
# Zip code.
format11.set_num_format('00000')
worksheet.write(13, 0, 1209, format11)
The number system used for dates is described in Working with Dates and Time.
The colour format should have one of the following values:
[Black] [Blue] [Cyan] [Green] [Magenta] [Red] [White] [Yellow]
For more information refer to the Microsoft documentation on cell formats.
Excel’s built-in formats are shown in the following table:
| Index | Index | Format String |
|---|---|---|
| 0 | 0x00 | General |
| 1 | 0x01 | 0 |
| 2 | 0x02 | 0.00 |
| 3 | 0x03 | #,##0 |
| 4 | 0x04 | #,##0.00 |
| 5 | 0x05 | ($#,##0_);($#,##0) |
| 6 | 0x06 | ($#,##0_);[Red]($#,##0) |
| 7 | 0x07 | ($#,##0.00_);($#,##0.00) |
| 8 | 0x08 | ($#,##0.00_);[Red]($#,##0.00) |
| 9 | 0x09 | 0% |
| 10 | 0x0a | 0.00% |
| 11 | 0x0b | 0.00E+00 |
| 12 | 0x0c | # ?/? |
| 13 | 0x0d | # ??/?? |
| 14 | 0x0e | m/d/yy |
| 15 | 0x0f | d-mmm-yy |
| 16 | 0x10 | d-mmm |
| 17 | 0x11 | mmm-yy |
| 18 | 0x12 | h:mm AM/PM |
| 19 | 0x13 | h:mm:ss AM/PM |
| 20 | 0x14 | h:mm |
| 21 | 0x15 | h:mm:ss |
| 22 | 0x16 | m/d/yy h:mm |
| ... | ... | ... |
| 37 | 0x25 | (#,##0_);(#,##0) |
| 38 | 0x26 | (#,##0_);[Red](#,##0) |
| 39 | 0x27 | (#,##0.00_);(#,##0.00) |
| 40 | 0x28 | (#,##0.00_);[Red](#,##0.00) |
| 41 | 0x29 | _(* #,##0_);_(* (#,##0);_(* "-"_);_(@_) |
| 42 | 0x2a | _($* #,##0_);_($* (#,##0);_($* "-"_);_(@_) |
| 43 | 0x2b | _(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_) |
| 44 | 0x2c | _($* #,##0.00_);_($* (#,##0.00);_($* "-"??_);_(@_) |
| 45 | 0x2d | mm:ss |
| 46 | 0x2e | [h]:mm:ss |
| 47 | 0x2f | mm:ss.0 |
| 48 | 0x30 | ##0.0E+0 |
| 49 | 0x31 | @ |
Note
Numeric formats 23 to 36 are not documented by Microsoft and may differ in international versions.
Note
The dollar sign appears as the defined local currency symbol.
Set the cell locked state.
| Parameters: | state (bool) – Turn cell locking on or off. Defaults to True. |
|---|
This property can be used to prevent modification of a cells contents. Following Excel’s convention, cell locking is turned on by default. However, it only has an effect if the worksheet has been protected using the worksheet protect() method:
locked = workbook.add_format()
locked.set_locked(True)
unlocked = workbook.add_format()
locked.set_locked(False)
# Enable worksheet protection
worksheet.protect()
# This cell cannot be edited.
worksheet.write('A1', '=1+2', locked)
# This cell can be edited.
worksheet.write('A2', '=1+2', unlocked)
Set the alignment for data in the cell.
| Parameters: | alignment (string) – The vertical and or horizontal alignment direction. |
|---|
This method is used to set the horizontal and vertical text alignment within a cell. The following are the available horizontal alignments:
| Horizontal alignment |
|---|
| center |
| right |
| fill |
| justify |
| center_across |
The following are the available vertical alignments:
| Vertical alignment |
|---|
| top |
| vcenter |
| bottom |
| vjustify |
As in Excel, vertical and horizontal alignments can be combined:
format = workbook.add_format()
format.set_align('center')
format.set_align('vcenter')
worksheet.set_row(0, 30)
worksheet.write(0, 0, 'Some Text', format)
Text can be aligned across two or more adjacent cells using the 'center_across' property. However, for genuine merged cells it is better to use the merge_range() worksheet method.
The 'vjustify' (vertical justify) option can be used to provide automatic text wrapping in a cell. The height of the cell will be adjusted to accommodate the wrapped text. To specify where the text wraps use the set_text_wrap() method.
Centre text across adjacent cells.
Text can be aligned across two or more adjacent cells using the set_center_across() method. This is an alias for the set_align('center_across') method call.
Only one cell should contain the text, the other cells should be blank:
format = workbook.add_format()
format.set_center_across()
worksheet.write(1, 1, 'Center across selection', format)
worksheet.write_blank(1, 2, format)
For actual merged cells it is better to use the merge_range() worksheet method.
Wrap text in a cell.
Turn text wrapping on for text in a cell:
format = workbook.add_format()
format.set_text_wrap()
worksheet.write(0, 0, "Some long text to wrap in a cell", format)
If you wish to control where the text is wrapped you can add newline characters to the string:
format = workbook.add_format()
format.set_text_wrap()
worksheet.write(0, 0, "It's\na bum\nwrap", format)
Excel will adjust the height of the row to accommodate the wrapped text. A similar effect can be obtained without newlines using the set_align('vjustify') method.
Set the rotation of the text in a cell.
| Parameters: | angle (int) – Rotation angle in the range -90 to 90 and 270. |
|---|
Set the rotation of the text in a cell. The rotation can be any angle in the range -90 to 90 degrees:
format = workbook.add_format()
format.set_rotation(30)
worksheet.write(0, 0, 'This text is rotated', format)
The angle 270 is also supported. This indicates text where the letters run from top to bottom.
Set the cell text indentation level.
| Parameters: | level (int) – Indentation level. |
|---|
This method can be used to indent text in a cell. The argument, which should be an integer, is taken as the level of indentation:
format1 = workbook.add_format()
format2 = workbook.add_format()
format1.set_indent(1)
format2.set_indent(2)
worksheet.write('A1', "This text is indented 1 level", format1)
worksheet.write('A2', "This text is indented 2 levels", format2)
Indentation is a horizontal alignment property. It will override any other horizontal properties but it can be used in conjunction with vertical properties.
Turn on the text “shrink to fit” for a cell.
This method can be used to shrink text so that it fits in a cell:
format = workbook.add_format()
format.set_shrink()
worksheet.write(0, 0, 'Honey, I shrunk the text!', format)
Turn on the justify last text property.
Only applies to Far Eastern versions of Excel.
| Parameters: | index (int) – Pattern index. 0 - 18. |
|---|
Set the background pattern of a cell.
The most common pattern is 1 which is a solid fill of the background color.
Set the color of the background pattern in a cell.
| Parameters: | color (string) – The cell font color. |
|---|
The set_bg_color() method can be used to set the background colour of a pattern. Patterns are defined via the set_pattern() method. If a pattern hasn’t been defined then a solid fill pattern is used as the default.
Here is an example of how to set up a solid fill in a cell:
format = workbook.add_format()
format.set_pattern(1) # This is optional when using a solid fill.
format.set_bg_color('green')
worksheet.write('A1', 'Ray', format)
The color can be a Html style #RRGGBB string or a limited number of named colors, see Format Colors.
Set the color of the foreground pattern in a cell.
| Parameters: | color (string) – The cell font color. |
|---|
The set_fg_color() method can be used to set the foreground colour of a pattern.
The color can be a Html style #RRGGBB string or a limited number of named colors, see Format Colors.
Set the cell border style.
| Parameters: | style (int) – Border style index. Default is 1. |
|---|
Individual border elements can be configured using the following methods with the same parameters:
A cell border is comprised of a border on the bottom, top, left and right. These can be set to the same value using set_border() or individually using the relevant method calls shown above.
The following shows the border styles sorted by XlsxWriter index number:
| Index | Name | Weight | Style |
|---|---|---|---|
| 0 | None | 0 | |
| 1 | Continuous | 1 | ----------- |
| 2 | Continuous | 2 | ----------- |
| 3 | Dash | 1 | - - - - - - |
| 4 | Dot | 1 | . . . . . . |
| 5 | Continuous | 3 | ----------- |
| 6 | Double | 3 | =========== |
| 7 | Continuous | 0 | ----------- |
| 8 | Dash | 2 | - - - - - - |
| 9 | Dash Dot | 1 | - . - . - . |
| 10 | Dash Dot | 2 | - . - . - . |
| 11 | Dash Dot Dot | 1 | - . . - . . |
| 12 | Dash Dot Dot | 2 | - . . - . . |
| 13 | SlantDash Dot | 2 | / - . / - . |
The following shows the borders in the order shown in the Excel Dialog:
| Index | Style | Index | Style |
|---|---|---|---|
| 0 | None | 12 | - . . - . . |
| 7 | ----------- | 13 | / - . / - . |
| 4 | . . . . . . | 10 | - . - . - . |
| 11 | - . . - . . | 8 | - - - - - - |
| 9 | - . - . - . | 2 | ----------- |
| 3 | - - - - - - | 5 | ----------- |
| 1 | ----------- | 6 | =========== |
Set the cell bottom border style.
| Parameters: | style (int) – Border style index. Default is 1. |
|---|
Set the cell bottom border style. See set_border() for details on the border styles.
Set the cell top border style.
| Parameters: | style (int) – Border style index. Default is 1. |
|---|
Set the cell top border style. See set_border() for details on the border styles.
Set the cell left border style.
| Parameters: | style (int) – Border style index. Default is 1. |
|---|
Set the cell left border style. See set_border() for details on the border styles.
Set the cell right border style.
| Parameters: | style (int) – Border style index. Default is 1. |
|---|
Set the cell right border style. See set_border() for details on the border styles.
Set the color of the cell border.
| Parameters: | color (string) – The cell border color. |
|---|
Individual border elements can be configured using the following methods with the same parameters:
Set the colour of the cell borders. A cell border is comprised of a border on the bottom, top, left and right. These can be set to the same colour using set_border_color() or individually using the relevant method calls shown above.
The color can be a Html style #RRGGBB string or a limited number of named colors, see Format Colors.
Set the color of the bottom cell border.
| Parameters: | color (string) – The cell border color. |
|---|
See set_border_color() for details on the border colors.
Set the color of the top cell border.
| Parameters: | color (string) – The cell border color. |
|---|
See set_border_color() for details on the border colors.
Set the color of the left cell border.
| Parameters: | color (string) – The cell border color. |
|---|
See set_border_color() for details on the border colors.
Set the color of the right cell border.
| Parameters: | color (string) – The cell border color. |
|---|
See set_border_color() for details on the border colors.