text:
**For Immediate Release**
In-Office Pathology, LLC Adds Epidermal Nerve Fiber Density (ENFD)
Testing For Podiatry/Neurology/Pain Med Specialty Practices read release
IOP Founders
Bernie Ness
Over the past 30 years, Bernie Ness has distinguished himself as one of the leading experts in the field of anatomic pathology sales and marketing. His experience encompasses both large national lab companies as well as private, venture capital-funded startup companies.
Well known for his expertise in revamping troubled sales organizations, adding innovation, marketing, new technology, and training sales forces, Ness established one of the first computer-to-computer links for client order entry and lab results reporting. He launched several technologies that have become standards in oncology, infectious disease, pathology, and genetics, including color digital image anatomic pathology reporting. Ness is often quoted in lab industry publications including The Dark Report, Small Business Reports and Advance.
He is a graduate of Southern Illinois University with a degree in biology and minor in microbiology. He was a board member of BioDiagnostics Laboratory, Inc. in Torrance, CA, Biomedical Marketing Association, and The Medical Marketing Association. Ness founded BJ Ness Consulting Group, which specialized in pathology business management. He also started several medical ventures, including a revolutionary new product that keeps medical specimens frozen for four days without dry ice. He is co-founder of the predecessor company to In-Office Pathology, the market leader for in-sourcing pathology referrals from specialty medical practices in urology, gastroenterology, and dermatology.
Joe Plandowski
Joe Plandowski has broad experience in operations within the laboratory industry. He has managed small and large laboratories, both commercial and hospital-owned. He is particularly adept at turning around operations, managing the integration of acquisitions and mergers, increasing the profitability of pathology practices, and negotiating the sale or acquisition of laboratories.
Plandowski began his laboratory industry career at Union Carbide in sales and sales management of biological and medical products. He joined SmithKline Clinical Laboratories as General Manager of its Florida operations and became Vice President of all laboratory operations for the US and Canada, after leading their operations in the midwest and western United States. Plandowski joined Genetrix, a cytogenetics testing company, as CEO. When National Health Laboratories decided to pursue an aggressive acquisitions program, Plandowski joined as Vice President of Acquisitions. When National Health Laboratories and Roche BioMedical Laboratories merged to create LabCorp, Plandowski formed Lakewood Consulting Group, an anatomic laboratory and pathology practice management consulting firm. Several years ago he co-founded In-Office Pathology to serve the growing demand for in-office pathology laboratories. Today it is the leading provider of such laboratories to specialty practices.
He holds a Bachelor of Science and a Masters in Business Administration from the State University of New York. He is a member of the Clinical Laboratory Management Association, National Society of Histotechnology, American Society of Cytopathology, American Pathology Foundation, and a charter member of the Association for Pathology Informatics. He is also a member of the Editorial Board of IOMA, and a sponsor of the annual Washington G2 Lab Institute. He speaks at national laboratory and pathology meetings and is frequently quoted in publications serving the laboratory industry.
10 Thistle Way
Nantucket, MA 02554
(p) 800. 280.3785


text:
Favorite kids toy
Playmags 100 Piece Super Set: With Strongest Magnets Guaranteed, Sturdy, Super Durable with Vivid Clear Color Tiles.
Posted In: Best Educational Toys
Kids learning toy teaches letters, numbers, and music.
Play along to built-in melodies in a variety of styles including rock, dance, pop or in your own style to encourage musical creativity.
The drum pads and cymbal each have their own unique sound for sensory development.
Four play modes include Free Play, Letters, Numbers and Follow Along.
Drum set is intended for toddlers aged 2 to 5 years old.

subset: commoncrawl


text:
View this post on Instagram
Shankarappa woke up at 5 am. This was a waste. His awful wedded wife had screeched the house down all through last week. There was no choice today. He was at the centre by 6 am, receiving pots of ink and a brush. He sneered at the brush while eating his complimentary upma. What an insult. What a joke. Could this even be called a brush? What would the legends say if they saw him now? His muse had stopped speaking to him years ago, practically five minutes into his wedding. And now he could hear his anti-muse, his wife, all the time. Even when he stuffed cotton in his ears. He straightened his shoulders. He'd show them all. As the girl stepped up to him fearfully, he concentrated. Jackson Pollock my ass, he thought. I'll show them abstract art. And he went to work. The entire polling booth went silent. He smiled triumphantly. They knew they were in the presence of genius. Why, the girl even started shedding tears, looking at her finger. Unexpectedly, it was going to be a good day. #jacksonpollock #abstractart #daubs #painters #fiction #painting #abstract #voting #polling #vote #karnataka #elections – #regrann @lafictionista
Category: Fiction
Eagle eye
View this post on Instagram
It was already four and they hadn't arrived yet. She tut-tutted to herself. Young people today had no sense of time. She'd been ready since three, her maid's uniform ironed to razor sharpness and a broom stolen from hotel housekeeping. And they were late. Which was surpriskng because in her experience, adulterers were normally early. She sighed. She had an embezzler to stalk at six. She'd already bugged the window and table so she was covered but she always liked being able to listen in and report back to clients the same day. Plus adulterers were the cutest. She swept dispiritedly and hoped they'd turn up soon. #buglife #detective #eagleeye #privateeye #sherlock #affair #cafe #cheater
On the street where you live
View this post on Instagram
She heaved a sigh of relief. There weren't lilac trees or larks here but this street, this street made her feel like she was stories high. He could appear any second, he might wave or smile and send her heart on a journey to the moon. On this street, anything was possible. People stopped and stared, but that didn't bother her. She brandished her butcher knife and smiled. Enchantment might not pour out the door but blood would. The professor was finally going to give her her heart back. Literally. #myfairlady #higgins #dolittle #sorrynotsorry #street #onthestreetwhereyoulive #lyrics #instastory #shortstory #fiction #mumbai #makeover
Must love dogs.
View this post on Instagram
It was 12. He hadn't come back yet. She sighed and sat back in bed, pulling the sheets towards her. Alexi slept on beside her, snoring a little. She wondered when he'd be back, whether he'd come sleep with them when he did come in or if he'd avoid them and sleep in the guest room. He hated that the dog slept in their bed. But she'd brought Alexi into her bed because he was gone so many nights. And now…well she didn't know what was going on anymore. And she was tired of having to choose between her dog and her husband. Tonight, she'd talk to him. And make a choice. #dog #pet #couple #love #husband #fight #doggy #doggylove #doggylover #relationship #fiction #instastory #lhasaapso #lhasalove #lhasagram
It's a bird. It's a plane…
View this post on Instagram
He looked up and sighed. He'd promised himself that he'd start working out today. He craned his neck to see if he could see the top of the building. More than 40 floors then. People were working, laughing and living up there. He could see them. He tried to stretch and limber up but just ended up leaning against the building, with his eyes closed. The darkness threatened to come flooding back. Superman stretched out his arms and shot up 40 floors, barely glancing at the people inside. He flew home – after all, he'd left the house today – that was a great first step. Lois would just have to understand. #depression #superman #loislane #manofsteel #blue photo credit @anishachristinejohn #skyscraper
View this post on Instagram
Sunny smiled and spread her hands out, basking in the warmth. She looked up at the sun, the liquid heat seeping into her insides. It cleared her mind and made her feel like she could fly. She heaved a sigh; the sun would be out for a few more hours yet. She'd drag her homework out and do it here today. Maybe she'd ace her exam too. Sunny's parents stood behind her. Just that evening, the doctor had told them that their daughter had sun-blindness. She'd never follow the sun, never be able to make out if it was the sun or a lamp. In fact, she wasn't a sunflower at all. #weird #lamp #evening #sunflower #storytime
In Her Majesty's Secret Service
View this post on Instagram
"Agent Peanut, your mission should you choose to accept it…" "Are you nuts? There's a honeymooning couple to our left and a spy below. And you're still choosing to brief me?" "I'm looking straight ahead: no one can tell I'm talking to you." "Seriously, how did you get promoted to head of MI7? How??" "I just kept my head down and cooed steadily on." "You're a clucking fool. Wait till I break up the couple and shoot the spy off the ledge below us." "That was your mission, in any case." "What the…? Are you cuckoo?' "There's no need to get racist." #pigeon #funny #humor #dialogue #birds #birdsofinstagram #jamesbond #spy


text:
Blues Farm at Blue Wing Monday Blues
Name: Blues Farm at Blue Wing Monday Blues
Date: August 13, 2018
Time: 6:30 PM - 9:00 PM PDT
Website: http://www.tallmanhotel.com
Event Description:
Local, Bay Area, and touring blues bands perform at the Blue Wing from 6:30 to 9:00 each Monday evening. It's great food in a lively and danceable atmosphere. There's no cover but reservations are suggested, either inside with the music or out in the garden or on our heated veranda. Tonight we feature blues harp great Dave Broida and his band, Blues Farm.


text:
This post has been cross-posted on the Quansight Blog.
As of November, 2018, I have been working at Quansight. Quansight is a new startup founded by the same people who started Anaconda, which aims to connect companies and open source communities, and offers consulting, training, support and mentoring services. I work under the heading of Quansight Labs. Quansight Labs is a public-benefit division of Quansight. It provides a home for a "PyData Core Team" which consists of developers, community managers, designers, and documentation writers who build open-source technology and grow open-source communities around all aspects of the AI and Data Science workflow. As a part of this, I am able to spend a fraction of my time working on SymPy. SymPy, for those who do not know, is a symbolic mathematics library written in pure Python. I am the lead maintainer of SymPy.
SymPy 1.4 was released on April 9, 2019. In this post, I'd like to go over some of the highlights for this release. The full release notes for the release can be found on the SymPy wiki.
To update to SymPy 1.4, use
conda install sympy
or if you prefer to use pip
pip install -U sympy
The SymPy 1.4 release contains over 500 changes from 38 different submodules, so I will not be going over every change, but only a few of the main highlights. A total of 104 people contributed to this release, of whom 66 contributed for the first time for this release.
While I did not personally work on any of the changes listed below (my work for this release tended to be more invisible, behind the scenes fixes), I did do the release itself.
Prior to SymPy 1.4, SymPy expressions in the notebook rendered by default with their
string representation. To get
LaTeX output, you had to call
In SymPy 1.4, SymPy expressions now automatically render as LaTeX in the notebook:
However, this only applies automatically if the type of an object is a SymPy
expression. For built-in types such as lists or ints,
init_printing() is
still required to get LaTeX printing. For example,
solve() returns a list,
so does not render as LaTeX unless
init_printing() is called:
init_printing() is also still needed if you want to change any of the
printing settings, for instance, passing flags to the
latex() printer or
selecting a different printer.
If you want the string form of an expression for copy-pasting, you can use
Simplification of relational and piecewise expressions has been improved:
>>> x, y, z, w = symbols('x y z w')
>>> init_printing()
>>> expr = And(Eq(x,y), x >= y, w < y, y >= z, z < y)
>>> expr
x = y ∧ x ≥ y ∧ y ≥ z ∧ w < y ∧ z < y
>>> simplify(expr)
x = y ∧ y > Max(w, z)
>>> expr = Piecewise((x*y, And(x >= y, Eq(y, 0))), (x - 1, Eq(x, 1)), (0, True))
>>> expr
⎧ x⋅y for y = 0 ∧ x ≥ y
⎨x - 1 for x = 1
⎩ 0 otherwise
>>> simplify(expr)
The MathML presentation printer has been greatly improved, putting it on par with the existing Unicode and LaTeX pretty printers.
>>> mathml(Integral(exp(-x**2), (x, -oo, oo)), 'presentation')
If your browser supports MathML (at the
time of writing, only Firefox and Safari), you should see the above
presentation form for
Integral(exp(-x**2), (x, -oo, oo)) below:
Several improvements have been made to the solvers.
>>> eq = Eq((x**2 - 7*x + 11)**(x**2 - 13*x + 42), 1)
>>> eq
x - 13⋅x + 42
⎛ 2 ⎞
⎝x - 7⋅x + 11⎠ = 1
>>> solve(eq, x) # In SymPy 1.3, this only gave the partial solution [2, 5, 6, 7]
[2, 3, 4, 5, 6, 7]
The ODE solver,
dsolve, has also seen some improvements. Two new hints have
been added.
'nth_algebraic' solves ODEs using
solve by inverting the derivatives
>>> f = Function('f')
>>> eq = Eq(f(x) * (f(x).diff(x)**2 - 1), 0)
>>> eq
⎛ 2 ⎞
⎜⎛d ⎞ ⎟
⎜⎜──(f(x))⎟ - 1⎟⋅f(x) = 0
⎝⎝dx ⎠ ⎠
>>> dsolve(eq, f(x)) # In SymPy 1.3, this only gave the solution f(x) = C1 - x
[f(x) = 0, f(x) = C₁ - x, f(x) = C₁ + x]
'nth_order_reducible' solves ODEs that only involve derivatives of
via the substitution $g(x)=f^{(n)}(x)$.
>>> eq = Eq(Derivative(f(x), (x, 2)) + x*Derivative(f(x), x), x)
>>> eq
d d
x⋅──(f(x)) + ───(f(x)) = x
dx 2
>>> dsolve(eq, f(x))
f(x) = C₁ + C₂⋅erf⎜────⎟ + x
⎝ 2 ⎠
This is the last release of SymPy to support Python 3.4. SymPy 1.4 supports Python 2.7, 3.4, 3.5, 3.6, 3.7, and PyPy. What's perhaps more exciting is that the next release of SymPy, 1.5, which will be released later this year, will be the last version to support Python 2.7.
Our policy is to drop support for major Python versions when they reach their End of Life. In other words, they receive no further support from the core Python team. Python 3.4 reached its end of life on May 19 of this year, and Python 2.7 will reach its end of life on January 1, 2020.
I have blogged in the past on why I believe it is important for library authors to be proactive in dropping Python 2 support, and since then a large number of Python libraries have either dropped support or announced their plans to by 2020.
Having Python 2 support removed will not only allow us to remove a large amount of compatibility cruft from our codebase, it will also allow us to use some Python 3-only features that will clean up our API, such as keyword-only arguments, type hints, and Unicode variable names. It will also enable several internal changes that will not be visible to end-users, but which will result in a much cleaner and more maintainable codebase.
If you are still using Python 2, I strongly recommend switching to Python 3,
as otherwise the entire ecosystem of Python libraries is soon going to stop
improving for you. Python 3 is already highly recommended for SymPy usage due
to several key improvements. In particular, in Python 3, division of two
ints like
1/2 produces the float
0.5. In Python 2, it does
integer division (producing
1/2 == 0). The Python 2 integer division
behavior can lead to very surprising results when using SymPy (imagine writing
x**2 + 1/2*x + 2 and having the
x term "disappear"). When using SymPy, we
using rational numbers (like
Rational(1, 2)) and avoiding
int/int, but the
Python 3 behavior will at least maintain a mathematically correct result if
you do not do this. SymPy is also already faster in Python
due to things like
math.gcd and
functools.lru_cache being written in C,
and general performance improvements in the interpreter itself.
These are only a few of the highlights of the hundreds of changes in this release. The full release notes can be found on our wiki. The wiki also has the in progress changes for our next release, SymPy 1.5, which will be released later this year. Our bot automatically collects release notes from every pull request, meaning SymPy releases have very comprehensive and readable release notes pages. If you see any mistakes on either page, feel free to edit the wiki and fix them.
Conclusion of things done on weekend regarding learning
word2vec is one of the really good ways to solve the problem of "word-embedding".
, developed by researchers at google (Tomas Mikolov and colleagues)
GloVe (Global Vectors for Word Representation) is another really good way to compute
word embeddings, developed at Stanford.
The original research papers (by Tomas Mikolov and colleagues) on word2vec [1]. Efficient Estimation of Word Representation in Vector Spaces [2]. Distributed Representation of words and phrases and their composotionality
these two papers on reading sucked the hell out of me (probably because I don't have much background in Neural networks).
Rather I found myself having to go through the paper [3]. word2vec explained: Deriving Mikolo et al's negative sampling word embedding method
I'd a go through the lecture 7 (skipped the lectures 4, 5 and 6), to get an idea of what are deep learning frameworks like Tensorflow (lecuture 7 is an introduction to it). It gives a basic idea of why to use Tensorflow and performing basic operations with it.
All in all this weekend was all focused on things related to NLP stuff. I am hopeful that in the next year I might be able to take a few more step towards learning the NLP stuff.
GitHub recently announced its paper cuts initiative to fix minor issues that make things more difficult for GitHub users. As someone who spends most of his day on github.com, this initiative is great, as these small cuts can quickly add up to a painful experience.
The initiative has already made some great fixes, such as making the diff markers unselectable and hovercards. Small changes like these are usually quite easy for GitHub to do, but they make a huge difference to those of use who use GitHub every day.
I recently asked how these cuts could be reported to GitHub for fixing, but got no response. So I am writing this blog post.
To be very clear: I think that on the whole GitHub is great and they are doing a great job. And it's still better than the alternatives (to put things in perspective, I recently spent half an hour trying to figure out how to change my password in BitBucket, and GitLab can't even keep me logged in between sessions). GitHub has and continues to revolutionize the open source ecosystem, and is still the best place to host an open source project.
But since GitHub did ask what sorts of changes they want to see, I'm providing a list. In this post I'm trying to only ask about things that are small changes (though I realize many won't be as easy to fix as they may appear from the outside, and I readily admit that I am not a web developer).
These are just the things that have bothered me, personally. Other people use GitHub differently and no doubt have their own pain points. For instance, I have no suggestions about the project boards feature of GitHub because I don't use it. If you are also a GitHub user and have your own pain points feel free to use the comment box below (though I have no idea if GitHub will actually see them).
If you work for GitHub and have any questions, feel free to comment below, or email me.
In no particular order:
Allow anyone to add labels to issues. At the very least, allow the person who opened the issue to add labels.
The new issue transfer ability is great, but please make it require only push access, not admin access.
Remove the automatic hiding of comments when there are too many. I understand this is done for technical reasons, but it breaks Cmd-F/scrolling through the page to find comments. Often I go to an issue trying to find an old comment and can't because buried in the comments is a button I have to press to actually show the comment (it's even worse when you have to find and press the button multiple times).
Better indication for cross-referenced pull requests. I really don't know how to fix this, only that it is a problem. It happens all the time that a new contributor comes to a SymPy issue and asks if it has been worked on yet. They generally do not seem to notice the cross-referenced pull requests in the list. Here is an example of what I'm talking about.
Indicate better if a cross-referenced pull request would close an issue. Preferably with text, not just an icon.
HTML pull request/issue templates. I don't know if this counts as a "cut", as it isn't a simple fix. Right now, many projects use pull requests/new issue templates, but it is not very user friendly. The problem is that the whole thing is done in plain text, often with the template text as an HTML comment to prevent it from appearing in the final issue text. Even for me, I often find this quite difficult to read through, but for new contributors, we often find that they don't read it at all. Sure there's no way to force people to read, but if we could instead create a very simple HTML form for people to fill out, it would be much more friendly, even to experienced people like myself.
Fix the back button in Chrome. I don't know if this is something that GitHub can fix, and I also do not know how things work in other browsers. I use Chrome on macOS. Often, when I click the "back" button and it takes me back to an issue page, the contents of the page are out-of-date (the newest comments or commits do not appear). It's often even more out-of-date than it was when I left the page. I have to reload the page to get the latest content.
Allow Markdown formatting in issue titles.
Show people's names next to comments as "Real Name (@username)". In general, GitHub should be emphasizing people's display names rather than their usernames.
Remember my selection for the "sort" setting in the issues list. I'd love to have issues/pull requests sort by "most recently updated" by default, so that I don't miss updates to old issues/pull requests.
Make advanced search filters more accessible. They should autofill, similar to how Gmail or even GitLab search works (yes, please steal all the good ideas from GitLab; they already stole all their good ideas from you).
Tone down the reaction emojis. Maybe this ship has sailed, but reaction emojis are way too unprofessional for some projects.
Copy/paste text as Markdown. For example, copying "bold" and
pasting it into the comment box would paste
**bold**. Another idea that
you can steal from GitLab.
Strike out #12345 issue links when the issue/PR is closed/merged
Add a button that automatically merges a pull request as soon as all the CI checks pass. Any additional commits pushed to the branch in the interim would cancel it, and it should also be cancellable by someone else with push access or the PR author.
Add some way to disable the automatic hiding of large diffs. This breaks Cmd-F on the page, and makes it harder to scroll through the pull request to find what you are looking for (typically the most important changes are the ones that are hidden!).
Include all issue/PR authors in the authors search on the pull request list page. Right now it only lists people with push access. But I generally can't remember people's GitHub usernames, and autofilling based on all authors would be very helpful.
Better contextual guesses for issue autofilling (after typing
For instance, if an issue has already been referenced or cross-referenced,
it should appear near the top of the list. We have almost 3000 open
issues in SymPy, and the current
issue numbers are 5-digits long, so referencing an issue purely by number
is very error prone.
Auto-update edited comments. Context: SymPy uses a bot that comments on every pull request, requiring a release notes entry to be added to the description. This works quite well, but to prevent the bot from spamming, we have it comment only once, and edit its comment on any further checks. However, these edits do not automatically update, so people have to manually reload the page to see them.
Don't hide full commit messages by default in the commits view. It would be better to encourage people to write good commit messages.
Make issue cross-references in pull request titles work. I'd rather people didn't put issue numbers in pull request titles but they do it anyway, so it would be nice if they actually worked as links.
Allow me to comment on lines that aren't visible by default. That is, lines that you have to click the "expand" icon above or below the line numbers to access. As an example, this can be useful to point out a line that should have been changed but wasn't.
Copying code from a diff that includes lines that aren't visible by default includes an extra space to the left for those lines. This is a straight up bug. Probably fixing the previous point would also fix this :)
Make searches include text from the pull request diff.
When a diff indents a line color the whitespace to the left of the line. (see this)
Pull requests can show commits that are already in master. For example, if someone makes pull request B based off of pull request A and then A gets merged, B will still show the commits from A. This has been a bug forever.
Make the "jump to file or symbol" popdown collapsible. Specifically what I mean is I want to be able to show just the files, without any symbols. For large pull requests, it is very difficult to use this popdown if there are hundreds of symbols. I typically want to just jump to a specific file.
The status check on the favicon goes away when you switch to the diff tab. Kudos to Marius Gedminas for pointing this out.
Apparently status checks that use the GitHub Apps API are forced to link into the checks tab. The checks tab is useless if no information is actually published to it. It would be better if it could link straight to the external site, like is done with oauth integrations.
Make it easier to copy someone's username from the pull request page.
I generally do this to
git remote add them (using
hub). If I try to select their username
from a comment, it's a link, which makes it hard to select. I generally
copy it from the blue text at the top "user wants to merge n commits
sympy:master from
user:branch". If it were easier to select
"user" or "branch" from that box (say, by double clicking), that would be
Change the "resolve conversation" UI. I keep pressing it on accident because it's where I expect the "new comment" button to be.
I wrote a whole post about the reviews feature when it came out. Not much has changed since then (actually, it has gotten worse). In short, the feature doesn't work like I would like it too, and I find the default behavior of deferred comments to be extremely detrimental. If there were a way to completely disable reviews (for myself, I don't care about other people using the feature), I would.
See my blog post for full details on why I think the reviews feature is broken and actually makes things worse, not better than before. I've summarized a few things that could change below.
Make reviews non-deferred by default. This is the biggest thing. If I had to pick only a single item on this page to be changed, it would be this. The issue is if I start a review and walk away from it, but forget to "finalize" it with a review status, the review is never actually seen by anyone. The simplest way to fix this would be to simply make partial reviews public.
Make Cmd-Enter default to immediate comment. Barring the above change, Cmd-Enter on a pull request line comment should default to immediate comment, not deferred (review) comment. The problem with the Cmd-Shift-Enter shortcut is that it is inconsistent: on a normal comment, it closes the pull request, and on a reply comment, it does nothing. I shouldn't have to check what "comment context" I am in to figure out what keyboard shortcut to use. The worst part is if you accidentally start a review, it's a pain in the ass to undo that and just post a normal comment. The simplest way to fix this would be to swap the current meaning of Cmd-Enter and Cmd-Shift-Enter for line comments (and no, this wouldn't be a backwards incompatible change, it would be a regression fix; Cmd-Enter used to do the right thing).
Allow reviewing your own pull request. There's no reason to disallow this, and it would often be quite useful to, for instance, mark a work in progress PR as such with a "request changes" review. Obviously self-reviews would be excluded from any required reviews.
Unhide the reviews box. It should just be the same box as the comment box, unstead of buried on the diff tab (see my blog post).
Show review status in the pull request list as a red X or green check. This would make it easier to see which pull requests have reviews.
Allow new commits to invalidate reviews. That way they work the same way as any other status check. (I see that this is now an option for required reviews, which is new since my original blog post, but it still doesn't affect the status as reported on the pull requests list).
Allow requiring zero negative reviews to merge (but not necessarily any positive reviews). Requiring a positive review is pointless. The person merging can just add one real quick before they merge, but it is unnecessary extra work. On the other hand allowing people with push access to block a merge with a negative review would be very useful.
The web editor seems to have a search function, but I can't get it to actually work. Half the time Cmd-F pops open the browser search, which doesn't find text that isn't on screen. And when I press Cmd-G to actually do the search, it doesn't work (and there are no buttons to perform the search either).
Add basic syntax testing in the web editor for common languages to catch basic mistakes.
Please make the mobile site work with iOS 10. I don't see any reason why simple things like buttons (like the merge button or the comment button) shouldn't work on a slightly older browser. No, I am not a web developer, but I do use my phone a lot and I've noticed that literally every other website works just fine on it.
Add a way to disable the mobile site permanently. For the most part, the mobile site is useless (see below). If you aren't going to put full development effort into it, allow me to disable it permanently so that every time I visit github.com on my phone it goes to the desktop site.
Seeing as how the site (mobile or not) is almost completely unusable on every mobile device I own, it's hard to list other things here, but based on back when it actually worked, these are some of the things that annoyed me the most. Basically, I have found that virtually every time I go to GitHub to do anything on mobile, I have to switch to desktop mode to actually do what I want.
My apologies if any of these actually work now: as I said, github.com doesn't actually work at all on my phone.
Cannot search issues on mobile.
Cannot make a line comment that isn't a review on mobile.
Cannot view lines beyond the default diff in pull requests on mobile.
Show more than 2 lines of the README and 0 lines of the code by default on project pages. Yes mobile screens are small but it's also not hard to scroll on them.
Support Jupyter notebook rendering on mobile.
GitHub needs a better default color theme for syntax highlighting. Most of the colors are very similar to one another and hard to differentiate. Also things like strings are black, even though one of the most useful aspects of syntax highlighting generally is to indicate whether something is in a string or not.
Add MathJax support to markdown files. This would be amazingly useful for SymPy, as well as many scientific software projects. Right now if you want this you have to use a Jupyter notebook. MathJax support in issue/pull request comments would be awesome as well, though I'm not holding out for that.
Add "display source" button for markdown, ReST, etc. I mean the button that is already there for Jupyter notebooks. Right now you have to view markdown and ReST files "raw" or edit the file to see their source.
Add a link to the pull request in the blame view. Usually I want to find the pull request that produced a change, not just the commit.
The wikis used to support LaTeX math with MathJax. It would be great if this were re-added.
The ability to set push permissions for the wiki separately from the repo it is attached to, or otherwise create an oauth token that can only push to the wiki would be useful. Context: for SymPy, we use a bot that automatically updates our release notes on our wiki. It works quite well, but the only way it can push to the wiki is if we give it push access to the full repo.
Don't clobber special emails/email headers. GitHub adds special emails
like firstname.lastname@example.com and
firstname.lastname@example.com to email
notifications based on how the notification was triggered. This is useful,
as I can create an email filter for
firstname.lastname@example.com for
notifications on issues and pull requests created by me. The bad news is,
firstname.lastname@example.com, which is
added when I am @mentioned, clobbers
firstname.lastname@example.com, so that it
doesn't appear anymore. In other words, as soon as someone @mentions me in
one of my issues, I become less likely to see it, because it no longer
gets my label (I get @mentioned on a lot of issues and don't have the
ability to read all of my notification emails). Ditto for the
X-GitHub-Reason email headers.
Readd the "view issue" links in Gmail. (I forgot what these are called). GitHub notification emails used to have these useful "view issue" buttons that showed up on the right in the email list in Gmail, but they were removed for some reason.
Make the requests in the API docs actually return what they show in the docs. This means the example repo should have actual example issues corresponding to what is shown in the docs.
Allow giving deploy key access to just one branch. That way I can have
a deploy key for
gh-pages and minimize the attack surface that the
existence of that key produces. I think everyone would agree that more
fine-grained permissions throughout the API would be nice, but this is one
that would benefit me personally, specifically for my project
GitHub pages is one of the best features of GitHub, and in fact, this very blog is hosted on it. Very few complaints here, because for the most part, it "just works".
Moar themes. Also it's awesome that you can use any GitHub repo as a theme now, but it turns out most random themes you find around GitHub don't actually work very well.
The steps to add HTTPS to an existing GitHub pages custom domain are a bit confusing.. This took us a while to figure out for sympy.org. To get things to work, you have to trigger GitHub to issue a cert for the domain. But the UI to issue the cert is to paste the domain into the box. So if the domain is already there but it doesn't work, you have to re-enter it. Also if you want both www and the apex domain to be HTTPS you have to enter them both in the box to trigger GitHub to issue a cert. This is primarily a UX issue. See https://github.com/sympy/sympy.github.com/issues/105#issuecomment-415899934.
Automatically protected branches make the branch difficult to delete when you are done with it. My use-case is to create a branch for a release, which I want to protect, but I also want to delete the branch once it is merged. I can protect the branch automatically pretty easily, but then I have to go and delete the protection rule when it's merged to delete it. There are several ways this could be fixed. For instance, you could add a rule to allow protected branches to be deleted if they are up-to-date with default branch.
Add a way to disable the ability for non-admins to create new branches on a repo. We want all of our pull requests to come from forks. Branches in the repo just create confusion, for instance, they appear whenever someone clones the repository.
Related to the previous point, make pull request reverts come from forks. Right now when someone uses the revert pull request button, it creates a new branch in the same repo, but it would be better if the branch were made in the person's fork.
Allow me to enable branch protection by default for new repos.
Allow me to enable branch protection by default on new branches. This is more important than the previous one because of the feature that lets people push to your branch on a pull request (which is a great feature by the way).
Clicking a team name in the settings should default to the "members" tab. I don't understand why GitHub has a non-open "discussions" feature, but I find it to be completely useless, and generally see such things as harmful for open source.
Suggest people to add push access to. I don't necessarily mean passively (though that could be interesting too), but I mean in the page to add someone, it would be nice if the popup suggested or indicated which people had contributed the project before, since just searching for a name searches all of GitHub, and I don't want to accidentally give access to the wrong person.
Stop trying to make profile pages look "cute" with randomly highlighted pull requests. GitHub should have learned by now that profile pages matter a lot (whether people want them to or not), and there can be unintended consequences to the things that are put on them.
Explain what the axes actually mean in the new "activity overview". I'm referring to this (it's still in beta and you have to manually enable it on your profile page). Personally I'm leaving the feature off because I don't like being metricized/gamified, but if you're going to have it, at least include some transparency.
to the GitHub release. We want people to download those, not snapshots of
the repo.
The repository search function doesn't support partial matches. This is annoying for conda-forge. For instance, if I search for "png" it doesn't show the libpng-feedstock repo.
Show commit history as a graph. Like
git log --graph. This would go
a long way to helping new users understand git. When I first started
with git, understanding the history as a graph was a major part of me
finally grokking how it worked.
Bring back the old "fork" UI. The one that just had icons for all the repos, and the icons didn't go away or become harder to find if you already had a fork. Some of us use the "fork" button to go to our pre-existing forks, not just to perform a fork action. This was recently changed and now it's better than it was, but I still don't see why existing forks need to be harder to find, visually, than nonexisting ones.
Provide a more official way to request fixes to these cuts. I often ask on Twitter, but get no response. Preferably something public so that others could vote on them (but I understand if you don't want too much bikeshedding).
Today's day started with receiving an email from Google. Here is a snapshot:
This left a big smile on my face 😄
The past 3-4 months have been amazing and I have learnt a lot during the course of time. I would like to thank Aaron, Ondrej and the SymPy team for providing me with this opportunity, my mentor Amit Kumar for guiding me all through the phases and a special thanks to Chris who was not officially my mentor but was present all the time for reviweing my work and helping me complete the project successfully.
Here is what Amit has to say:
Though GSoC is completed I will be continuing my contribution in the developement of the software.
This post summarizes the work done on the Group Theory part of the combinatorics module during 2018 summers as a part of the GSoC programme
This post summarises the work that I have done during GSoC for SymPy. The links to the Pull Requests are in chronological order under each header. For following the progress made during GSoC, see my weekly posts.
This summer has been a great learning experience and has helped me get a good exposure of test-driven development. I plan to actively review the work that has went into this project and continue contributing to SymPy. I am grateful to my mentors, Kalevi and Aaron for reviewing my work, giving me valuable suggestions, and being readily available for discussions.
This is the list of merged Pull Requests.
convolution_ntt and a general method
convolution for identifying the type of convolution and handling the cyclic convolution case, and include docstring, doctests, unit-tests.
convolution_fwht and add support for keyword
dyadic in the general
convolution method, and include docstring, doctests, unit-tests.
linrec which allows evaluation of linear recurrences without obtaining closed form expressions, and include tests for the same.
subset keyword for flexibility of the implementation, and include docstring, doctests, unit-tests.
convolutions and
recurrences, refine the documentation for
discrete module.
discrete module for inclusion in Sphinx docs, which can be referred here.
discrete module to fix tests using floats instead of Rationals, adding warning about sequence size for
fft and other improvements.
.rewrite(exp) capability for instances of
Pow and fix bugs in
solvers module.
convolution method.
discrete.recurrences.linrec and possibly extending it for different types of recurrences as well.
fft and
convolution_fft efficient for both symbolic and numeric variants, as some discussion and benchmarking has been done for it and there is some work done by Colin for implementing a
ComplexFloat class in sympy/sympy#12192 which would be very helpful for the same.
I am Nikhil Pappu, an undergraduate Computer Science student at the International Institute of Information Technology, Bangalore.
Autolev (now superseded by MotionGenesis) is a domain specific language used for symbolic multibody dynamics. The SymPy mechanics module now has enough power and functionality to be a fully featured symbolic dynamics module. The parser parses Autolev (version 4.1) code to SymPy code by making use of SymPy's math libraries and the mechanics module.
The parser has been built using the ANTLR framework and its main purpose is to help former users of Autolev to get familiarized with multibody dynamics in SymPy.
The plan was to build a parser using ANTLR that could parse Autolev code to SymPy code. Overall, I think I was able to achieve most of what I had hoped for. I had faced some difficulties in some areas of the parser due to the very different nature of Autolev and Python. The parser has some issues as a result. I have specified all the details in the documentation I have written.
I made a parser for the Autolev language which is now a part of SymPy in the parsing module. I have written the code for the parser using the ANTLR framework. I have also included a bunch of tests for testing the rules of the parser code.
The majority of the work was a part of PR #14758. I made a second PR #15006 for the changes I had made after the main PR.
I have written documentation for the parser which is a part of these PRs: #15046, #15066 and #15067.
I have also written a PyDy for Autolev Users guide which is a part of PR #15077. This guide is meant to be a quick reference for looking up Autolev-PyDy equivalents.
As of now, a large number of codes of Dynamics Online have been parsed. Completing all the remaining codes of the book would make the parser more complete.
I would like to keep contributing to SymPy. I would be doing a lot of math in college especially related to data science so I would love to contribute in areas like Probability and Algebra among others. I would also like to help newcomers feel comfortable with the environment.
I would like to thank my mentors Ondřej Čertík and Jason Moore for believing in me and taking time out from their busy schedules to guide me throughout the project. I would also like to thank Aaron Meurer for looking over GSoC as the org admin and making sure that we all had a great experience working with SymPy.
Main PR: #14758
Updated parser code PR: #15006 and #15013
Documentation PRs: #15046, #15066 and #15067
PyDy for Autolev Users guide PR: #15077
Weekly Blog link: https://nkhlpappu.wordpress.com/
This week I continued the work with log solver and lambert solver. The log solver implementation is almost done with just few check for assumptions. Symbolic logarithmic equations should be dealt with proper assumptions. Such equations would give unsolved instance of
ConditionSet otherwise.
>>> a, b, x = symbols('a, b, x')
>>> solveset(a**x - b**(x + 1), x, S.Reals)
ConditionSet(x, Eq(a**x - b**(x + 1), 0), S.Reals)
# because the bases (here, `a and b`) should have a positive value > 0)
>>> a, b = symbols('a b', positive=True)
>>> solveset(a**x - b**(x + 1), x, S.Reals)
{log(b)/(log(a) - log(b))}
Discussions with Amit and Chris suggested that there should be some other way to handle vanilla symbols. There should be atleast a
ValueError or something else that would tell the user why this cannot be solved. Chris suggested of returning a
Piecewise as object for this scenario. Something like:
cond = True if fuzzy_and([a > 0, b > 0, Eq(im(f), 0), Eq(im(g), 0)]) else False
Piecewise((solutions, cond), ConditionSet(........), True))
Using Piecewise was not the greatest of the option as:
Though the assumptions were checked but it didn't provided information to the user that why did it not solved.
Also using
Piecewise had some problem causing recursion error, though it could be solved but it would make things unncessarily complicated.
solveset is not made to return objects other than
So we switched to a completely different approach. We tried using a different type of
ConditionSet: providing the information within it that is necessary for the equation to be solved. The approach was: Force the equation to get solved but return a ConditionSet (a different than ususal) with the required assumptions, like:
ConditionSet(x, And(a_base>0, b_base>0, Eq(im(a_exp), 0), Eq((im(b_exp), 0))), {solutions}). So now the above equation would return solutions something like:
ConditionSet(x, (a > 0) & (b > 0), Intersection(Reals, {log(b)/(log(a) - log(b))}))
So this approach has been applied in the PR as of now, only a few minor changes needs to be done. I will try to finish this by the end of the week.
Apart from this some work has been done in
lambert solver:
_is_lambert to identify lambert type equations.
solve's tests, to get an idea of the extent to which
solveset would handle such equations.
What's next:
I will try to wrap up the work of both the PR's. Lambert solver PR would need a bit more time for reviewing but nevertheless I will be continuing its work post GSoC. Implementing these two solvers will make
solveset fully functional to handle transcendental equations which is a major part of my GSoC propsal. There will be a few minor things left that I will try to finish post GSoC. Also since this is the last week for the coding period, I will be needing to submit a final report of my work, I will complete and submit it before the deadline.
The final week of Coding Period has completed.
This week, the work was mainly concerned with the documentation and refinements in the
discrete module.
I started by opening PR #14994 to update Sphinx docs for SymPy.
Kalevi and Aaron were kind enough to review the PR and help refine it for the final merge. The documentation for
discrete module is now part of the SymPy docs and can be referred here.
Late this week, I opened PR #15025 for improvements in the
discrete module.
Colin helped fix accidental floats in unit tests (which should have been Rationals). After the review, the PR was merged successfully.
Future work would include - addition of a user-facing public method for
linrec and making methods
fft and
convolution_fft efficient for both symbolic and numeric variants, as some discussion and benchmarking has been done for it and there is some work done by Colin for
ComplexFloat class in PR #12192 which would be helpful for the same.
Looking forward to the concluding phase, where I will be wrapping up GSoC and preparing the report for the final evaluation.
I have made some changes to the parser code to parse more files since #14758 has been merged. I have also made the changes suggested in that PR after it had been merged. I have opened a new PR #15006 for the updated parser code. I have also opened #15013 to include tests for physics functions which I didn't do in the initial PR. The GitLab repo autolev-test-examples is in good shape now and is part of the sympy user.
I am currently writing the documentation in which I shall include how to use the parser, gotchas, limitations, issues and future improvements. I shall also include a rewritten version of the PyDy for Autolev Users guide in it.
I shall then write the output tests (Tests to compare the outputs of Autolev against those of SymPy) for most of the test examples in the GitLab repo (I shall include these in a directory called output-tests in the GitLab repo). I think its good to put them here as I don't see the need to test these on Travis as changing the parser code won't affect these. Plus, they will be in a place where the test examples are which are what they will be based on. We could still test these on Travis if required even from here I suppose.
Finally, I shall wrap things up with the Final Report and Submission.
Last week, I created #14967 for implementation of plotting methods. Soon after pushing my commits, many of the jobs failed on Travis. It was strange as I was not able to reciprocate the errors locally.
After discussing it on Gitter, I got to know that it was due to the printing of plots using TextBackend in the doctest in absence of matplotlib. As matplotlib was present in my system, doctest used matplotlib backend instead of TextBackend locally, hence passing all tests. Kalevi suggested using unset_show to stop the printing of plots during doctest but apparently, unset_show didn't work for TextBackend. This was fixed by #14984 later that day and #14967 passed all the tests after former one was merged.
This week, I also started editing #14453 for documentation. It included a few beam problems along with their ascii diagrams.
So this week I started up with implementing and sending a PR for lambert solver #14972. Solving these equations can be achieved by
_solve_lambert routine of bivariate.py. It is really powerful and can solve a varied type of equations having a general form. Another routine comes into action, the
bivariate_type to solve majorly lambert type of equations when the former is unable to solve. These two routines can be handy for implementing such equations. As of now I have added
_solve_lambert() in the PR. I will add
bivariate_type once the log solver PR gets finalised. There are few equations that can be solved by posifying the variable that needs to be solved. A bit discussion is needed on this part.
Apart from this, a lot of work was done in the
log solver PR
_term_factors() is used again.
Logic for exponential identifying is modified to not identify lambert type equations
Few mores tests were added.
Chris advised to make identification helpers such that they identify their class even if they won't get solved by their respective solvers, the equation should not be passed to any of the other helpers for further solving. This wasn't the case before, the identifying helpers were implemented only for equations that their helpers could solve. So now this idea is implemented for both the exponential and logarithmic solver. Equations that these identifiers can't identify will be further solved as lambert type.
Almost all the work of the log solver PR is done. I will be finishing the work on lambert solver PR and complete in coming week. I hope both the PR's gets merged before the GSoC period ends.
This week, I started working on adding the final method to convolution module for Intersecting Product. PR #14954 dealt with the addition of
intersection_product method. Intersecting Product was implemented using Möbius Transform with superset enumeration (
mobius_transform(..., subset=False) and
inverse_mobius_transform(..., subset=False)). After minor documentation improvements, the PR was merged successfully. The proposed transforms and convolutions are now part of
sympy.discrete. The basic usage for the method is:
>>> from sympy import symbols, S, I, intersecting_product
>>> u, v, x, y, z = symbols('u v x y z')
>>> intersecting_product([u, v], [x, y])
[u*x + u*y + v*x, v*y]
>>> intersecting_product([u, v, x], [y, z])
[u*y + u*z + v*y + x*y + x*z, v*z, 0, 0]
Late this week, I started working on improving the documentation for SymPy's Sphinx docs (http://docs.sympy.org/dev/index.html) and other minor changes in the PR #14969. Also, issue #14964 was opened to discuss the possibility of using LaTeX in docstrings for SymPy documentation. The following changes were part of the PR:
Successive reviews and discussions were helpful in finalizing the Pull Requests.
Looking forward to the final week of Coding Period.
Hello Everyone. I have been working on getting the PR #14758 into shape and now it is finally merged. I have written my own tests for the PR so as to not include copyrighted files that belong to the creators of Autolev.
I am now working on a test-examples repo which serves as a showcase of the parser and also as a source of additional tests. The repo is private on GitLab as it contains copyrighted files. You can request access at the repo link above. Files from this repo can be copied over to the test_examples folder of parsing/autolev to use them as tests. From now, I will be working on adding more examples from the PyDy example repo, Autolev Tutorial, and Dynamics Online to this repo while improving the code of the parser to parse all these codes. I am also making note of things like errors, inaccuracies etc to include them in the Documentation.
I will open another PR once I have made enough number of changes to the parser code.
Here is my plan for the future of this project:
Till the end of GSoC:
Post GSoC:
This week I started working on implementing methods to plot Shear force, bending moment, slope and deflection diagrams. #14967 was created for it.
Mainly four methods were added to the Beam class:
Here is a sample notebook demonstrating how to use these plotting methods.
This week started with the merge of the PR #14736. Yehhhh!!!!!. So now
solveset will be able to solve a varied type of exponential equations. Next work is going on to build the logarithmic and lambert solver.
A lot of discussion has been taken place over the implementation of the logarithmic solver, there were mainly two points to consider:
Take for instance a logarithmic equation
log(x - 3) + log(x + 3) = 0, when solved the solutions would be
-sqrt(10) and sqrt(10), but
-sqrt(10) make the log term negative. So the question was what should we do for such a scenario? Should we add a check to remove these solution or just accept. it.
As of now as suggested by Kalevi and Aaron we should focus on the liberal interpratation for evaluating equations: if an expression can be written in its equivalent form and makes sense then we can consider solutions of this equivalent form. Therefore both the above solutions are acceptable.
The identification of logarithmic type is another question and is still yet to be agreed upon. At first the implementation was done by extracting each term of the expression and see if it has
log terms in it, this wasn't the best of the method as we are trying to identify a large class of logarithmic equation while solving is done only for a subset of those equations (only those that can be reduced by
logcombine). So Amit and Chris stressed upon making the logarithmic identification for equations that its solver would solve. So as of now I have made changes accordingly.
Another problem that this PR is facing is of the infinite recursion. The equations that both exponential and logarithmic can't solve but still their respective solver try to handle gets into infinite recursion. One way (though not appropriate) is to use
flags like in
solve, using this would remove the infinite recursion but is not the best way to handle, therefore I am looking into ways on how to get this fixed.
Apart from the work on log solver, I did some work on lambert solver- how the implementation would go, ran all the tests of
solve, differentiated the tests that
_solve_lambert could solve and that
bivariate_type would. I will be adding a PR for this in a day or so.
Next week goals:
Finish things with logarithmic solver
Sending a PR for lambert solver and try to finish its work as quickly as possible.
This week SymPy 1.2 was released, which included the
discrete module. The complete changelog for the SymPy 1.2 is here. I started the week by cleaning up
discrete module, improving the API of public
convolution method by attending to reviews by Aaron and Kalevi and fixing issue #14901 reported by Aaron in PR #14907.
The PR #14907 has been merged successfully and will be part of SymPy 1.2.1.
Late this week, I started working on the convolution module for inclusion of
The PR #14298 included the same with documentation, doctests and unit tests.
The implementation of
covering_product uses Möbius Transform with subset enumeration (
mobius_transform(..., subset=True) and
inverse_mobius_transform(..., subset=True)). As included in the PR, the usage for the same is:
>>> from sympy import symbols, covering_product
>>> u, v, x, y, z = symbols('u v x y z')
>>> covering_product([u, v], [x, y])
[u*x, u*y + v*x + v*y]
>>> covering_product([u, v, x], [y, z])
[u*y, u*z + v*y + v*z, x*y, x*z]
Looking forward to the next week, where I will be implementing
intersecting_product as the final method for the convolution module.
I have been working on improving the parser by parsing Dynamics online codes, planning out how to go about writing tests and other aspects of the project and getting the PR into shape.
I am currently working on writing tests to cover all the rules of the parser. I should be done with this in 2 days.
This is the plan I have for the third phase:
I started implementing Beam_3d class which can be used to find Shear force, Bending moment, Slope, Deflection and other few things for the Beam object. PR #14883 was created for this.
I implemented Beam_3d class using this paper as a reference. Actually, like Beam class, it uses a few sets of equations to find certain quantities:
Example for the API:
There is a beam of l meters long. A constant distributed load of magnitude q
is applied along the y-axis from start till the end of the beam. A constant distributed
moment of magnitude m is also applied along the z-axis from start till the end of the beam. Beam is fixed at both of its end. So, deflection of the beam at the both ends
is restricted.
>>> from sympy.physics.continuum_mechanics.beam import Beam_3d
>>> from sympy import symbols
>>> l, E, G, I, A = symbols('l, E, G, I, A')
>>> b = Beam_3d(l, E, G, I, A)
>>> b.apply_support(0, "fixed")
>>> b.apply_support(l, "fixed")
>>> q, m = symbols('q, m')
>>> b.apply_load(q, dir="y")
>>> b.apply_moment_load(m, dir="z")
>>> b.shear_force()
[0, -q*x, 0]
>>> b.bending_moment()
[0, 0, -m*x + q*x**2/2]
>>> b.solve_slope_deflection()
>>> b.slope()
[0, 0, l*x*(-l*q + 3*l*(A*G*l**2*q - 2*A*G*l*m + 12*E*I*q)/(2*(A*G*l**2 + 12*E*I)) + 3*m)/(6*E*I)
+ q*x**3/(6*E*I) + x**2*(-l*(A*G*l**2*q - 2*A*G*l*m + 12*E*I*q)/(2*(A*G*l**2 + 12*E*I))
- m)/(2*E*I)]
>>> b.deflection()
[0, -l**2*q*x**2/(12*E*I) + l**2*x**2*(A*G*l**2*q - 2*A*G*l*m + 12*E*I*q)/(8*E*I*(A*G*l**2 + 12*E*I))
+ l*m*x**2/(4*E*I) - l*x**3*(A*G*l**2*q - 2*A*G*l*m + 12*E*I*q)/(12*E*I*(A*G*l**2 + 12*E*I)) - m*x**3/(6*E*I)
+ q*x**4/(24*E*I) + l*x*(A*G*l**2*q - 2*A*G*l*m + 12*E*I*q)/(2*A*G*(A*G*l**2 + 12*E*I)) - q*x**2/(2*A*G), 0]
As this class is relatively new, it would require a few improvements in the future:
Beam_3d doesn't use
SingularityFunction, I was unable to find a way to represent point load/moments. So for now
Beam_3d only supports continous load (applied over the whole span length of beam).
For now, after discussing it with Arihant, we decided to raise NotImplementedError in such cases.
The second phase of Coding Period has concluded.
This week I worked on implementing Subset Convolution for
discrete module.
PR #14878 was opened for the same. The PR included unit tests, documentation, and correspondingly
subset keyword was added for public
convolution method.
After discussing the implementation details and references with Kalevi, the approach was finalized. The PR has been merged successfully. The usage for the same is:
>>> from sympy.discrete.convolutions import (convolution, convolution_subset)
>>> u, v, x, y, z = symbols('u v x y z')
>>> convolution_subset([u, v], [x, y])
[u*x, u*y + v*x]
>>> convolution([u, v, x], [y, z], subset=True)
[u*y, u*z + v*y, x*y, x*z]
>>> convolution([u, v, x], [y, z], subset=True, cycle=3)
[u*y + x*z, u*z + v*y, x*y]
Plan for this phase has executed well, and the second evaluation has been successful.
Looking forward to the final phase of Coding Period.
At the start of the week I worked on the leftovers of week 8:
log_singularities() that will help in determining logarithmic singularities,
Status of the PR's:
PR #14736 is ready to be merged.
PR #14792 is being worked on. Major tasks has been completed, just review and refining has to be done.
Apart from this I started working on the way Lambert type equations can be solved through
_transolve(). I looked into
_tsolve's way of handling such equations.
For solving Lambert type equations
_tsolve() largely depends on
bivariate.py. It takes help of the different utility functions implemented there.
Of them two important are
_solve_lambert() and
bivariate_type(). These two helpers help in getting the equations evaluated.
Equations that can be written in the standard form as:
A + B*x + C*log(D + E*x) = 0 has the solutions in terms of
Lambert function as:
D/E + C*B*W(t) with (B/C*E)*exp((BD - AE)/CE)
This is what
_solve_lambert() determines and accordingly returns the solutions, otherwise returns a
_solve_lambert() is unable to handle
bivariate_type() is tried. This function first tries to identify the type of composite bivariate and then substitutes
Dummy in place of them. For eq:
(x + y)**2 - 3 would become
_u**2 - 3 where
_u is the dummy variable. The idea is that solving the latter equation for
u and then equating the solutions to the former equation is equivalent for solving the original one.
While implementing in
_transolve this philosophy needs to be applied. As of now I have looked into different tests on how they behave. I will start implementing it next.
Next week's plan:
Finishing with the logsolver
Implementing lambert solver.
Before the start of the week Amit and I discussed on a few points on:
is_logarithmic() is an identifier helper for
_transolve to determine whether the expression is logarithmic or not.
_solve_log() is a solving helper that returns the equation in a tractable form for
solveset to better handle.
is_logarithmic() return?
While designing the method at first it returned a
logcombined equation if found to be logarithmic, but we agreed upon having consistency among all the identifying helpers to return either
True or
_is_logarithmic() should work?
Next question was how it should work. We can implement it in two ways either to make the
logcombined equation, if the expression reduces, it is obviously a logarithmic equation otherwise not. We also need to check whether the equation reduced has the variable to be solved in its
logcombine possessed a problem that it unknowingly manipulates the equation, like
log(x) - log(2*x) would reduce to
log(1/2) for which the routine would return
False as there are no symbol involved. So a more better way needs to be implemented.
_solve_log() will handle removing unwanted solutions?
Simply reducing the logarithmic equation to a tractable form for
solveset to handle would cause spurious solutions in the result. Therefore it becomes necessary to remove them. Take for example:
solveset gives the result of
log(x - 3) + log(x + 3) as
{-sqrt(10), sqrt(10)}, but
-sqrt(10) is not the solution in
Real domain. Therefore one way to remove it was using
checksol. Amit suggested on to have a look over the singularities and try incorporating the check in
Things that I did during the week:
Removed the
logcombine way of checking the equation. As of now the
_is_logarithm checks for every term to be logarithmic in terms of the variable to be solved, if so it returns
True otherwise
As per the current documentation of
_transolve this routine is improved to return a modified form of the equation that
solveset could better handle. Checking of the spurious solutions will take place in
solveset itself.
To handle this scenario I have added a check in
_solveset specifically for logarithmic equations to remove spurious solutions.
The idea is based on the fact that natural log in undefined for negative and zero value, therefore this method gets each term of the expression, substitutes each solution to every term one by one and if for any term the value isn't real that solution will not be included.
checksol() is not the appropriate way?
At first I thought of using the
checksol(), but it possessed a problem.
checksol unintensionally allows wrong solution to creep in. Take for example
log(3*x) - log(-x + 1) - log(4*x + 1),
solveset would give
-1/2 and 1/2 as the solutions but the former isn't a solution in real domain. Using
checksol would not remove this as
I*pi gets cancelled out during evaluating the expression therefore it returns
True, which is not correct.
Apart from this few changes have been done in the
_transolve PR:
I have added a method that would return all the terms present in the expression: make_expr_args()
Made the expresssion remain unevaluated when doing lhs - rhs within
Read this blog for better understanding of logarithmic solving.
This week I mainly focused on finding and solving a bug due to which continuum_mechanics gave ValueError on using units with the quantities passed. Initially, I created #14856, which included a workaround in the Beam class itself to handle that error. But Arihant suggested opening a separate PR as the error was occurring due to a bug in the separate module.
So, #14865 was created. is_commutative attribute was added in the Prefix class (setting Prefix.is_commutative to True removed PolynomialError). While doing changes in the PR, another bug appeared:
>>> from sympy.physics.units import meter, newton, kilo >>> from sympy.physics.units.util import quantity_simplify
>>> quantity_simplify(x*(8*newton + y)) x*(8*newton + y, 1)
This bug was solved with few changes. After #14865 gets merged, continuum_mechanics should work with quantities involving units.
This week I started working on adding Möbius Transform to the
discrete module using Yate's DP (Dynamic Programming) method for implementation as part of PR #14853. The proposed transforms are part of
sympy.discrete.transforms module.
After discussing with Kalevi, the methods implementing this transform were added with appropriate names. The keyword
subset is used as a boolean to choose whether enumeration is done over subsets or supersets. The usage for the transform is:
>>> from sympy import mobius_transform, inverse_mobius_transform
>>> seq = list(symbols('w x y z'))
>>> mobius_transform(seq)
[w, w + x, w + y, w + x + y + z]
>>> inverse_mobius_transform(_)
[w, x, y, z]
>>> inverse_mobius_transform(seq, subset=False)
[w - x - y + z, x - z, y - z, z]
>>> mobius_transform(_, subset=False)
[w, x, y, z]
The PR was merged successfully, after inclusion of docstring and unit tests for the transform.
Looking forward to another exciting week.
Planet SymPy is made from the blogs of SymPy's contributors. The opinions it contains are those of the contributor. This site is powered by Rawdog and Rawdog RSS. Feed readers can read Planet SymPy with RSS, FOAF or OPML.


text: So winter is approaching and we are currently in Fall/Autumn which can only mean one thing: the RomsCrew are going to decide to play Video Games! And why not slide in an excuse to do it by playing video games for charity. Yes that is correct, Extra life is happening


text:
Growth Habit: medium (4 x 4 feet)
USDA Zone: 7b
Exposure: filtered to full sun
Growing Conditions: evenly moist, well drained acidic soils
Primary Color: red
Bloom Time: early-season
Comments: Dark, blood-red flowers on top of long slender leaves which are heavily coated with stiff bristles. Midrib of the leaves is coated with a thick layer of indumentum. I've had a long history with this plant as I first saw it in Ted Van Veen's book, Rhododendrons in America, in the late 60's. It remains one of my favorites.


text:
Gujarati bride
You are cordially invited to Gujarati Matrimony site. Marriage or matrimony in itself as a word portrays the significance of togetherness. Gujarati Matrimony site proudly, is a site that offers you this spirit of togetherness with high simplicity as well technology loaded product. As we all are very well aware, that the Gujarati community is very particular and always endeavors for excellence; we at Gujarati Matrimony cheer more such meticulousness particularly when one has to find a life partner for his or her life. Keeping this thought in mind, the faultlessness needed by our site, we at Gujarati Matrimony propose completely dedicated services full filling needs of Gujarati community all over the globe. Gujarati Matrimony brings to you Gujarati Matrimony dedicatedly to assist you to find your perfect companion.
Gujarati Matrimony's main aim is and will always be to assist find you best suitable matrimonial gujarati bride and grooms profiles for you. At our Gujarati Matrimony site, competence is the key element and making certain to provide best results to all our site users.
Gujarat is a state located in the western part of India. Gujarat is a very important state of India. Kutch, Saurashtra and Kathiawar, Halar, Panchal, Gohilvad, Jhalawar are Gujarat's , territorial cultural organs. Their folk culture and literature contract Rajasthan, Sindh and Punjab, Maharashtra and Madhya Pradesh with. The huge Sea coast before the start of the era in the history of foreign nations come from land and sea are permanently settled, subsequently, twenty-eight tribal castes in Gujarat. Due to the diversity of people's social, like-like the state has paid the folk cultures.
Most of the population believes in Hinduism in Gujarat, while the number of Islam, followers of Jainism and Zoroastrianism, too. Here at the beginning of the 21st century because of the growing sectarian tensions riots.
The history of Gujarat is approximately 2,000 BC years old. It is believed that Lord Krishna left Mathura settled on the west coast of Saurashtra, which called Dwarka, the gateway. In subsequent years, Maurya, Gupta, Gujjars and many other dynasties Pratihara ruled this territory. Gujjar Chalukya (Solanki) reign of kings was the era of progress and prosperity in Gujarat. Despite the looting of Mahmud Ghazni Gurjar rulers and well-being of the people were able to maintain prosperity. Here at gujarati matrimony please visit and search for gujarati bride along with gujarati grooms.


text:
Letters to the Editor
Russia: Trump denials like 'Hamlet'
With all the denial and accusations of a "witch hunt" coming from the White House in regard to the alleged relationship with Vladimir Putin and the Russians, I am reminded of a line from Shakespeare's Hamlet.
Hamlet asks his mother, Queen Gertrude, what she thinks about the protestations of a woman in a play. The queen replies, "the lady doth protest too much, methinks," which, roughly translated, suggests that the lady, in strongly denying something, is hiding the truth.
If President Trump has nothing to hide and if all is innocent, as he contends, then why protest? Why not welcome the investigations, cooperate with them so as to get them over with and get on with the important business of governing the country?


text:
UAS Regulations PART 101 and PART 102
Drones Are Being Tested in the Fight Against a Tuberculosis Epidemic in Papua New Guinea
Sarah Nilsson, JD, PhD, MAS
602 561 8665
You can also fill out my online form.
Legal disclaimer
The information on this website is for educational purposes only and DOES NOT constitute legal advice. While the author of this website is an attorney, she is not your attorney, nor are you her client, until you enter into a written agreement with Nilsson Law, PLLC to provide legal services.
Steward of


text:
How to Enable & Use Night Mode Browsing in Google Chrome. Steps by Steps, How you can use night Mode Browsing in Google Chrome and how to enable Night Mode in Chrome?
Night Mode Browsing in Google Chrome
Billions of people online use Google Chrome as a web browser. And of course, it is also a default browser for most of us. There are several extensions available to the chrome users on web stores. Night mode browsing in Google Chrome is one such feature that helps you to browse the internet at dark night. This extension makes the usage of chrome browser more eco-friendly. There is very less amount of stress in your eyes and you can work easily during the night.
Turn On Night Mode in Chrome Browser
The view of the reflection of the screen letters is very calm and quiet. During the night the stress on eyes increases due to the low intensity of light in the surroundings. Prolong working in night time makes your eyes muscle weaker, and after some time you can face eyesight problems. Many working people have to work at night due to work situations are always facing this problem.
How Can You Use Google Chrome Night Mode Browsing?
The procedure to activate the night mode browsing in Google chrome is very easy. There are various extensions available that work to convert chrome into night more. Among various Chrome night mode extensions, there are few ones mention below
- Hacker vision
- Dark Reader
- Turns off the light
- Night mode pro
- High Contrast
These night vision apps will help you to have healthy eyes while working late at night.
Check this also: Google Flight Booking App Download
We are discussing each Feature in detail below:
The hacker vision extension is an app, you can find in chrome web store. Download it and click to add a button to attach it to the list. Confirm the Google account details and access this service. Once activated you can switch to night vision and can get easy at work. There is also rollback option available in case you want to switch back into normal light mode.
Dark Reader
Dark Reader is powered by new chrome engine and features the special way to change bright screen into relaxing, delaminated theme. Web pages react to it and also turn in the same delaminated dark version. Steps are as same as of the hacker vision but you need to look at the way of transforming into night mode is bit different.
There are other variants of color available for you for example brightness, contrast grayscale, and sepia. Change fonts as you want with size and category.
Turn off the lights
Open the extension available in the web store. A type of lamp button is available and by clicking it to change to the dark theme. This app automatically focuses on videos to provide good watching experience. You can change an intensity of dark, semi-dark whatever suits your eyes. Know to be a good for night mode browsing in Google Chrome.
Night Mode Pro
This add-in extension is designed to change the luminosity of the screen. This gives more relaxation to the eyes when you work at night duration. Most people find it less stressing in long hours of night work. In order to protect your eyes from getting worse, this could help you.
High Contrast
There are several high contrast color are available that makes it easier to read at night time. And you are allowed to change intensity as you want and what suits you. This one called as perfect Chrome night mode extension.


text:
|Click Here to Login
« Princess Noor bint Asem bin Nayef of Jordan and Amr Zedan: June 21-22, 2018 | Princess Anne & Captain Mark Philips 1973 »
Our communities encompass many different hobbies and interests, but each one is built on friendly, intelligent membership.
» More about our Communities
Our Marine websites focus on Cruising and Sailing Vessels, including forums and the largest cruising Wiki project on the web today.
» More about our Marine Communities


text:
MELBOURNE, Australia (AP) The latest Wednesday from the Australian Open (all times local):
11:07 a.m.
Light rain is falling at Melbourne Park, delaying the start of play on side courts at the Australian Open on Wednesday.
Tournament officials said play would not start on those courts until at least 11:30 a.m. Ball boys and girls were sponging the courts off.
Melbourne Park has three stadiums with retractable roofs - Rod Laver Arena, Margaret Court Arena and Hisense Arena. Play began as scheduled on those courts, including the opening match on Rod Laver between fifth-seeded Maria Sharapova and Aliaksandra Sasnovich.


text:
Couponmom is a directory of deals and discount coupons. You can find great deals for your state or store each week. It's an interesting platform to save money.
Venture Slogan: The easiest way to save.
Couponmom's own description: "…Review the Grocery Deals list for your state or store each week. Even if you do not have the coupons from prior weeks, it will give you an idea of the kinds of deals you can expect in future weeks as your coupon supply grows. Buy the Sunday newspaper each week (an annual subscription makes financial sense) and save each week's entire circular, writing the date on the front…"
"…Keep the circulars in some sort of filing system (lying flat in a box in order of date or hanging in files) and cut out the coupons you need when you make your weekly shopping list with the Grocery Deals list for your state. You can also cut out the coupons you know you'll use each week and file them in a small coupon organizer for convenience. Be sure the save the rest of the circular, because in future weeks many items will go on sale that can be free (or almost free) when you use the coupon. If you don't use that item, you can donate it to charity and help feed the hungry at virtually no cost…"
"…If your store is not listed, or if your state does not have a Grocery Deals list yet, you can use its Grocery Coupon Organizer to create your own Grocery Deals list for any store.
Even if you do not use grocery coupons, you can save dramatically on your groceries by using our lists as a planning tool to find sale items and loss leaders (products sold below cost to attract shoppers)…"
Venture Link: couponmom.com
Source: Great Startups


text:
We know that life is getting expensive. Therefore, we now have volume discounts on all items. This discount can be as high as 10%.
Product information
Product of vegetable oil, contains 98% fat, of which 40% linoleic and linolenic acid. Omega 3 and 6 polyunsaturated fatty acids, which can not itself create the body.
Content and weight
200 grams. 10 G Unit / units.
Ingredients: Vegetable oils and fats, potassium chloride, potassium phosphate, dry milk constituents, emulsifier (soy lecithin), flavor enhancers (calcium glutamate, natriumribonucleotiden), flavors, dextrose, coloring (beta carotene), vitamin A and D.
Allergy information
- Contains soy.
- green Dot
- nutritional values
These values apply to the unprepared product. Per 100 grams. RDA *
* Recommended Daily Allowance (Reference intake of an average adult (8400 kJ / 2000kcal).)
Saturated Fat 31 g
Fat 98 g
Sodium 0.01g
Energy 880 kcal
Energy 3600 kJ
Carbohydrate 0.6g
Which monounsaturated 21 g
44 g of which polyunsaturated
Salt 0.025 g
Which sugars 0.6 g
Volume Discounts


text:
The current Dollar rally began late in 2009 and was driven initially by some strong US economic material. But even when that data turned a little mixed, the Dollar continued to rally.
If are not marketing, than you aren't able to find motivated sellers. If you can't find motivated sellers, than restrict get good deals on real estate, and when you can't get great deals on real estate, than your www.bloomberg.com business will most likely fold up real great! The truth is, if you love to be successful to be a Real Estate Wholesaler or just as an actual Estate Investor in general, you want to know how get great bundles. This is what separates the top investors through your rest.
Many people do not agree that federal intervention is a good thing but Being successful it's just possible selection. With the economy struggling this program fills a gap allow hopefully help you put the US economy back the actual right track.
I'll inform you of this big mistake once you get started. First a little more on why I still like gold. Classes . January, gold was trading around 0 an whiff. Five weeks later it was trading over ,000 an oz .. Now gold's retraced a bit and is trading around 0 an oz. a perfect time to buy more (or establish a cutting edge position).
The consumer in America knows almost nothing about dividend-paying whole life assurance us economic data . It is all a couple of getting interested people educated about fantastic idea.
The other investing methodology is called "greater fool theory." Tabs on investor will buy promote according to who are going to pay them an increased price for the purpose they bought yesterday. Definitely is no object in the event you there is often a willing buyer. This type of investor plays into everyone psychology. Think Dot Com bubble and also the current industry bubble. John Maynard Keynes was an effective "greater fool" investor. He bought at the outset of cycles, and sold as the herd moved in.
Over 2,000,000 people drink this product because from the health many benefits. Over 3 million are drinking and in e-commerce. It's not just regular people like you and all of us. It's athletes like John Papelbon for the Boston Red Sox, race car driver Geoff Bodine, retired football player Deron Cherry, Al Harris from the packers, Terrence Pennington of your Atlanta Falcons, and much bigger. These athletes aren't drinking analyzed to some extent because tend to be being paid to. All it the way it works, most of which are actually working in the commercial.
In other Nymex trading, heating oil mounted 7.7 cent to .93 per gallon and gasoline futures slipped 0.3 cent at .67 per quart. Natural gas futures were down 2.3 cents to .00 per 1,000 cubic ft.


text:
As tempting as it is to invest in initial coin offerings (ICOs) right now, the last thing you want is to lose your money to a crypto-scammer.
By now, almost every investor is aware of major cryptocurrencies like Bitcoin and Ethereum, and how they've delivered almost unheard-of returns to early investors. In 2017 alone, the Bitcoin price is up more than 740%; the Ethereum price is up more than 4,000%.
The past year has brought an explosion of new cryptocurrencies, most of which arrive in the form of an ICO.
Some ICOs have raised stunning amounts of money in the blink of an eye. In August, Filecoin set the current record by raising $252 million in 30 minutes.
This year, more than 200 ICOs have attracted more than $3.2 billion of investor money.
But unlike the IPO concept on which they are modeled, ICOs are virtually unregulated.
And that's fertile ground for scam artists…
Why Initial Coin Offerings Are Riskier Than Other Investments
For one thing, no regulatory oversight means the people behind an ICO don't need to follow strict disclosure requirements.
And because ICOs sell their tokens directly to the public, they don't need Wall Street investment banks or stock exchanges. Taking Wall Street out of the equation may sound appealing, but it removes another crucial layer of protection for retail investors.
A scam company would be exposed long before it reached its IPO date.
That lack of scrutiny makes it easy to launch an ICO designed solely to extract money from investors eager to get in on the ground floor of a fresh cryptocurrency.
It also means that if you fall into a scammer's trap, you have little recourse to recover lost funds. Money lost to crypto-scammers is usually gone for good.
But you don't have to pass up the extraordinary gains possible in cryptocurrencies out of fear. You just need to know how to tell legitimate ICOs from the risky ones.
Here are the red flags you should look for…
How to Spot an ICO Scam
- The Business Plan – or Lack Thereof: While ICOs don't need to disclose anything, they almost all set up a website where you'll find a white paper and some of the basic information. The white paper is probably the best place to start looking for clues about whether an ICO is legit. If there are a lot of grandiose claims but few specifics, beware. Also, pay close attention to how the money that's raised in the ICO will be used. The tokens created should have an integral role in the business plan, not just be a mechanism for raising funds. A study in October by Token Report found that only 20 digital tokens out of 226 issued via ICO were being used as part of the company's network.
- The Team: Knowing who's behind the ICO is key. Do they have a reputable background? What projects have they worked on in the past? They should have a history on social media. Scam ICOs often create fake identities. Just this week, the originators of an ICO called Confido vanished with $375,000 of investor money. In the aftermath, jilted investors found many of the identities of the team members had been faked. Another trick scammers use is to post the photos and bios of well-known cryptocurrency personalities on their website – even though they have no connection to the ICO. Check their social media to see if they're talking about the ICO.
- Impossible Promises: Another major warning sign that an ICO may be a scam is too-good-to-be-true claims. It's very unlikely, for instance, that a new token will be "bigger than Bitcoin." Also watch out for outsized claims of what the crypto token will do, such as "change the way" some sector operates. Some even go so far as to suggest their new coin will help solve climate change or reinvent the Internet.
- A Barrage of Buzzwords: Digital currencies are complex enough that it's easy for scam ICOs to cover their true intent with a lot of cryptocurrency jargon. Watch out for a lot of impressive talk about blockchains, decentralization, tokens, trustless databases, ecosystems, and platforms. These are legit terms, but a scam ICO will throw them around without actually explaining how its cryptocurrency is supposed to work or what makes it unique.
- The Escrow Account: Most ICOs use an escrow account to hold customer funds during the initial sale of tokens. Only when the tokens are released to the buyer is the money transferred to the ICO. The safest way to set up a crypto escrow account is with a "multi-sig" wallet that requires multiple people to sign off on a transaction. Ideally, one or more of these people will be a neutral, trusted third party. Scammers will set up escrow accounts where only one or two team members control the escrow money, making it easy to steal customer funds. Scrutinize the white paper for these details.
Unfortunately, scam ICOs aren't the only bad actors in the cryptocurrency universe. Some scammers base their ploys on tricking people into surrendering their legitimate cryptocurrencies.
Often these scams take the form of a spoof website designed to look like that of a legitimate ICO. People fooled into using these fake websites to participate in an ICO end up sending their money directly to the scammer. If you're going to send money on a website, check – and double-check – the website address.
Other scams send e-mails claiming to be from an ICO operator. These often will advise the victim to send funds to a particular address to participate in an upcoming ICO. But the address they provide is to a wallet they control, not the official ICO address.
Investing in ICOs can be lucrative, but as you can see, it's fraught with danger. And for now, you have to be your own policeman.
— David Zeiler[ad#mmpress]
Source: Money Morning


text:
The office staff and I have noticed an increase in student tardies since the weather has become colder.
We want children to acquire life skills that help them to be successful in life. Consistently "being on time" is one of those important skills. Students, who arrive after instruction begins, may create a learning distraction for the entire class. Tardiness can bedetrimental to academic progress for an entire class … not just for the student who arrives late!
Do a few minutes REALLY Matter?
ABSOLUTELY! Every grade level has important tasks to accomplish each day. At the end of the day, teachers are getting students organized and ready for the next school day...so it is equally important that kids are not leaving early. Students who leave before the end of the day may also be counted partial day absent.
The first bell rings at 8:10 a.m. which is the signal that students may go to their rooms. The 8:20 bell is the tardy bell.
The tardy bell rings at 8:20 a.m. Four tardies will be converted to 1 day unexcused absence.
Outdoor recess guidelines are below. Students may only stay during recess with a doctor's note.
Reading to Bailey Bulldog
Every Wednesday the Word Wall Wizards in each room are reminded to add their new words to their class word wall. I challenged each class to send me a picture of the students adding words and I would enter their class in a contest Sonic Slushies for their entire class. Mrs. Kitchen's 2nd grade class won the drawing they have voted on blue raspberry slushies to have this week.
The winter weather season is here, so parents are encouraged to stay connected with the district in several ways to learn of school cancellations.
When the chance for severe or inclement weather looms, we will only post the cancellation of school, athletic events and other activities. We will not post when school, athletic events and activities are proceeding as scheduled.
If school is canceled due to snow or bad weather, the information will be available in these ways:
- Blackboard notification to parents and staff via text and email information on file
- Local television and radio stations
- District website — http://www.olatheschools.com
- Facebook — go to "Olathe Public Schools"
- Twitter — look for "Olathe Schools"
- Channel 18 (Comcast and Time Warner)
- By calling the district information line, 913-780-8000
The new Blackboard notification system replaces the previous Olathe Alert and City Watch systems because of streamlined capabilities to send messages within minutes versus hours. Any parent who is in the district's system, and who has included a cell phone number, will receive a text message in case of the cancellation of school. If there has been a change in a parent's phone number or email address since enrollment, please notify the child's school.
No Early Dismissal
If school is in session when deteriorating weather conditions are present, regular dismissal time will be observed rather than dismissing students early from school. District administrators are mindful of safety issues such as transportation, particularly for those students who normally ride the bus or are driven to and from school; lack of supervision at home because of an unscheduled dismissal; and the uncertainty of sending children away from a protected school environment and out into hazardous weather conditions.
Facility Usage/Building Rental
If school is canceled for the entire day, all facility usage/building rentals will also be canceled.
If school has been in session all day but evening district activities are canceled, facility usage/building rentals will also be canceled.
Athletics and Activities
The final decision about whether to cancel school activities will be made at the district level. Administrators understand the importance of these activities, but the safety of students is always of greater importance.
If school has been canceled for the entire day:
- All middle school and elementary school activities (practices, games, and other activities) will be canceled.
- With district-level approval, high school activities may be allowed to take place. This includes practices, contests and travel to events outside the city.
- Updates on the status of scheduled events will be communicated by building administrators, coaches/sponsors when final decisions have been made.
All Olathe Elementary schools will have kindergarten roundup on the same date and during the same time for the 2017-18 school year. Kindergarten roundup will be on Thursday, February 23, 2017 from 1:00 – 6:00 pm at each school.
Each year, the Ravenwood PTO puts on a holiday luncheon for our amazing staff. This year, we will serve the lunch on THURSDAY, DECEMBER 15. We will take care of the main meal, but we are asking that Ravenwood families provide desserts and drinks for the luncheon. Any help that you can provide will be greatly appreciated by all. Your kids will feel so proud to donate to a great cause-spoiling our teachers and staff! Cash donations would be appreciated by Tuesday, December 13. Desserts and drinks need to be delivered to Ravenwood no later than Thursday, December 15 at 10 AM. Thanks in advance for your consideration.
Remember EVERY NIGHT is a RESTAURANT NIGHT at Buffalo Wild Wings in Olathe - just tell them you're on the Ravenwood A-Team!
And mark your calendars for our upcoming Restaurant nights:
1/11 - Papa Johns (101 S Parker St)
1/24 - Old Shawnee Pizza


text:
Salted Caramel chocolate tart
-Gluten free, dairy free and delicious
I found this recipe on Eat Drink Paleo; it is great not only because of the end product but also because you can use all three parts of the recipe for other things.
(I used the base for other tarts/puddings – pumpkin for example)
(I used the middle as a raw pudding base for paleo banoffee pie but you could just eat it on it's own)
(I used the excess chocolate topping to create raw dairy free chocolate, by putting the left over mixture in an ice cube tray and placing in the fridge)
For the base
- 150g cups ground almonds
- 75g cup hazelnuts
- 2 tbsp. coconut oil melted or soft
- 1 egg
- 1 tbsp. maple syrup or honey
- 1 tsp. vanilla extract or essence
For the caramel filling
- 150 g pitted dates (about 20 Medjool dates, soaked in boiling water for at least 10 minutes)
- 75g coconut cream (coconut milk was used in the eBook)
- 1 tbsp. soft or melted coconut oil
- 1 tsp. vanilla extract or essence
- 1 tsp. sea salt or Himalayan pink salt
- 2 tbsp. crushed almonds
For the chocolate topping
- 100 g coconut oil
- 6 tbsp. raw cacao powder
- 1 tbsp. raw honey
- 1 tsp. vanilla extract
Preheat oven to 180 °C/ 355 °F. Grease a tart tin
Start with the base. The recipe uses raw hazelnuts but I decide to do a little toasting beforehand to give them richer flavour. Heat a small frying pan and add the hazelnuts. Cook over medium heat for 3-4 minutes, swirling frequently to prevent burning, until lightly browned on all sides. Remove and cool for a few minutes.
Place the hazelnuts in a food processor. Reserve 2-3 tablespoons for later. Grind and process into fine meal, for about a minute. Add the ground almonds, coconut oil, egg, maple syrup (you can use any other natural sweetener) + vanilla. Blend again until the mixture comes together.
Scoop the mixture out and make it into a large ball. Place and flatten between 2 sheets of baking paper (about 50x50cm). With a rolling pin, roll out the base to about 3mm thick (mine was more like 5cmm). When rolling, start from the middle and roll to the edges in different directions. Peel the top layer of baking paper off then flip the base over the tart tin. Be gentle.
Just fill in any gaps with your fingers. Make sure the area where the sides and the base meet is filled, a little thicker if possible. Place a round layer of baking paper over the base and fill with baking beads. Bake in the oven for 10 minutes, remove the baking beads and bake for a further 10 minutes or until golden brown. I turned the oven to 170°C for the second 10 minutes. Set aside to cool, in the tin.
Now for the filling: Drain the water from the soaked dates. In the food processor, whiz the dates, coconut oil and vanilla until they foam a thick paste. Add the coconut cream or milk and salt, whiz again until really smooth (about a minute, scrapping the sides as you go).
Spread the caramel mixture over the base and place in the freezer for about 20-30 minutes. You can sprinkle the crushed hazelnuts over the base before adding the caramel but I sprinkled mine on top of the chocolate layer.
Now to make the chocolate topping: In a bain marie (a bowl placed over simmering water), melt the coconut oil, honey and vanilla. Stir until combined. Sift in the raw cacao powder (I just added it in without sifting) and whisk continuously until smooth. I'd say about 20-30 seconds; you don't want to overcook it. Pour the chocolate topping over the caramel and spread with a spatula. Sprinkle with crushed hazelnuts. Place in the freezer for 5 minutes.


text:
Kimchi-Style Butternut Squash and Shiitake
1/2 pound shiitake mushrooms, stems removed
1 medium butternut squash, peeled and seeded
1 tablespoon sorrel, chiffonade
¼ cup This Little Goat Went to Korea sauce
Toss mushrooms in oil and salt and roast at 350 degrees for 10 minutes. Cool and cut in quarters.
Shave butternut squash into ribbons using a peeler. In a mixing bowl add squash and mushrooms. Toss with This Little Goat Went to Korea sauce and garnish with sorrel.