Covering stereotype threat and imposter syndrome

This morning, Chris and I met with Victoria from CRLT to talk more about how to cover the topics of stereotype threat and imposter syndrome. As a reminder, we were thinking of covering these relatively briefly at the beginning of all workshops.
The ideas we had were:

To do one or more activities related to confronting our biases.
a. One option would be to ask people to draw someone who is a competent R user.
b. Another option would be to have people do the Gender-Science Project Implicit test that is available from here: https://implicit.harvard.edu/implicit/selectatest.html We would have them to do this at home, and then might have a way for them to anonymously report their results (perhaps via a poll or google doc).

Give a summary of stereotype threat. This would probably be in the form of a handout with a discussion highlighting key points.

Talk about things that can be done to counter stereotype threat. For me, this was interesting to think about, because I've thought about what I can do as an instructor, but not what I can do for myself. Keys will probably be to reinforce a positive personal narrative and to encourage a growth mindset.

Have time for reflection. We were thinking of doing this the second morning, as a way of providing continuity and emphasizing the importance of this topic. Some possible reflection activities include:
a. thinking of a time when you were discouraged/demotivated based on societal norms/expectations,
b. thinking of a time when you did something that you thought you couldn't do.
We weren't sure of how to share these -- possibly in small groups.

Finally, we thought we would cover imposter syndrome, which is related but different, and which is something that many workshop participants will likely identify with!

All of the above is open to discussion. I just wanted to get the ball rolling on the discussion. At some point, once we've thought about this more, we can maybe propose it as a mini-lesson. I can imagine that, depending on how it works, this might be of interest to the bigger SWC/DC community.

I like this idea a lot.
I wonder whether there's a way to do it without making it seem like something extra, rather can we make it integrated into the introductory content. I'm thinking of the activity Greg had us do in the teacher training when we talked about how we introduce ourselves and how that affects our ability to connect with students.
Do you think we could come up with an activity that is analogous to that? For instance, we could have them think about the differences between two groups of people that do the same thing but have different names. I'm think along the lines of the windows/mac, python/R, vi/emacs, bioinformatics/computational biologist debates. In these contrasts, (IMHO) the differences are mostly cosmetic and matters of personal preference. But (IMHO) they do more to alienate people and set up an unfortunate hierarchy.
The goal would be two-fold - first:  make everyone feel welcome and like they belong in the class and second: drive home the stereotype threat concept and how we can generalize that to other areas including gender, race, ability, etc.

I particularly like the idea of having participants complete the Gender-Science Project Implicit test ahead of time. This is a great time-saver and should allow us to illustrate, right off the bat, the imperative in combating stereotype threat. Based on the ideas so far, I'd suggest an outline like:

Some kind of intial engagement Re: Pat's point... "introduce ourselves and how that affects our ability to connect with students"--Have participants share one experience where they felt unwelcome/ intimidated in a learning environment (Re: Meghan, "thinking of a time when you were discouraged/demotivated based on societal norms/expectations") via EtherPad (anonymously)?
Highlight some things shared on EtherPad (particularly any detailing the experience of women and minorities).
Share results of the Gender-Science Project Implicit test
"Give a summary of stereotype threat." (Should do this only after the test results and introduction exercise, I feel)
Open discussion: What can we do to counter stereotype threat?
Define imposter syndrome.

I like the ideas discussed above. As Pat suggested above, if we could incorporate these ideas into the introduction it would feel more integrated and less adjunct. That said, I'm less versed in how to present/discuss some of these concepts, so personally I would be amenable to either Meg (or another designate) leading this section, or leading it cooperatively with another. (Of course, I would be willing to solo given support/guidance, but that approach seems like a missed opportunity.)
Arthur, thanks for this outline. The initial engagement exercise where we share moments when we felt uncomfortable/unwelcome is interesting and was effective in the instructor training and I can imagine it being really productive and engaging. However, it seems like a tricky opening play:  learners/instructors are sharing something potentially personal and upsetting, I'm concerned that it doesn't necessarily emphasize the positive narrative out of the gate. It's easier for me to imagine that dialogue being more effective later in the first day or perhaps the second day.

However, it seems like a tricky opening play: learners/instructors are sharing something potentially personal and upsetting, I'm concerned that it doesn't necessarily emphasize the positive narrative out of the gate. It's easier for me to imagine that dialogue being more effective later in the first day or perhaps the second day.

@cgates That's a fair point. We're doing this the first 30 minutes of both days? We could have learners and instructors share "moments when we felt uncomfortable/unwelcome" at the start of the second day instead of the first?
How could we engage the audience on the first day instead?

Could we do an anonymous moment share? I've done this with other questions where people might not want to announce their answer to a crowd.
We could have everyone in class mill around reading them for a few minutes, then discuss commonalities among them, and/or how to address some of them (either as an instructor, or for yourself)

I like this! To make it potentially more anonymous, could we set up a blank etherpad where people would not include their names and encourage them to write their comments there? That might also have the advantage of getting people used to using etherpad and might not be as disruptive as having people get up and down and moving around the room in a short period of time.
Pat

On Aug 4, 2015, at 4:38 PM, Amanda Charbonneau<EMAIL_ADDRESS>wrote:
Could we do an anonymous moment share? I've done this with other questions where people might not want to announce their answer to a crowd.
We could have everyone in class mill around reading them for a few minutes, then discuss commonalities among them, and/or how to address some of them (either as an instructor, or for yourself)
—
Reply to this email directly or view it on GitHub https://github.com/UMSWC/Administration/issues/7#issuecomment-127754353.

Nice. I like an exercise that prompts interaction with the etherpad. Given the choice, I would actually lean toward stickies; in my experience the physical movement/interaction promotes individual and group engagement in a way that the computer doesn't. (My $0.02.)
cg

I tend to agree with Chris about the physical objects vs the computer. It would work on etherpad, but I think seeing the same sorts of experiences written in a multitude of hands is more striking than that same list on etherpad. However, even if we did stickies, I think we could incorporate the etherpad as the way to group the ideas and discuss them.
I suppose it depends on what else you want the mini-session to do. Getting up and moving papers around will definitely be more time-consuming than an etherpad list.

Thanks for all the feedback! There are some great thoughts in here. I've tried to incorporate them in what I'm proposing below.
Prior to workshop:
Instructors will send everyone the link to the Project Implicit Gender-Science test that is available from here: https://implicit.harvard.edu/implicit/selectatest.html
Instructors should ask students to do the test and keep track of their result.
Day 1:

<5 min: Instructors introduce themselves, introduce idea that we'll all be interacting a lot over next two days. Instructors should stress that we want to make sure everyone feels comfortable.

5 min: Students could each draw a picture of what a competent R (or Python, if that's the focus of the workshop) user looks like. Also ask students -- if they feel comfortable -- to write on a separate post-it note what their result was on the Project Implicit test. [The drawing part might make some people feel a little silly, but I think that kind of helps with the icebreaker aspect. Thoughts? Mine would be a stick figure, reflecting my complete lack of artistic ability!]

5 min: Instructors can briefly group the pictures into major groupings (e.g., long-haired vs. not; glasses vs. not; gender groupings if seem apparent from pictures) and summarize those. Instructors should also summarize results of Project Implicit test, stressing that we all have biases regarding these sorts of things.

5 min: Instructors can then explain idea that we all have mental images of groups of people. These are really useful in some cases, meaning we don't have to start from scratch every time we meet a new person. But it also means we have stereotypes about what certain kinds of people look like. Because of negative stereotypes of certain groups (some common ones, e.g., are that women are not good at math as men, or that older people are not as good at using technology and computers), members of those groups underperform in high-pressure situations.

Why are we talking about this here? Part of why we're talking about this because knowing stereotype threat exists helps counter its effects, making it so that people in the negatively stereotyped groups are less affected by it. One study (Johns et al. 2005 Psychological Science) found that performance of women on a math test was significantly improved by telling students “it’s important to keep in mind that if you are feeling anxious while taking this test, this anxiety could be the result of these negative stereotypes that are widely known in society and have nothing to do with your actual ability to do well on the test.” We're also talking about this because we want to make sure we do our best in this workshop to not do or say things that will trigger stereotype threat. Please be conscious of letting everyone speak, and realize that, for some people, speaking will be harder. And, if you feel like you don't have something to contribute, please realize that you do, and that stereotype threat may well be impacting how you feel about your ability to contribute!

5 min: In the etherpad, write:
a. one thing you can do to try to counter stereotype threat that you might experience related to this workshop.
b. one thing you think classmates can do to try to counter stereotype threat or imposter syndrome in themselves.
c. one thing you think classmates can do to try to avoid triggering stereotype threat in others.

Instructor then summarizes, making sure to note two key things people can do to counter stereotype threat in themselves: reinforcing a positive personal narrative, and encouraging a growth mindset (that is, the idea that the ability to program/code/do stats is something that can be learned, not an innate thing that someone is good or bad at).

Finishing up: Instructor can point out that, if students are interesting in learning more about this, we've linked to some useful references on the etherpad. [I will need to work on assembling these. I have two blog posts that might be useful:
https://dynamicecology.wordpress.com/2014/04/28/stereotype-threat-a-summary-of-the-problem/
https://dynamicecology.wordpress.com/2014/04/29/countering-stereotype-threat/
Clearly there are other resources, too. Suggestions welcome!]

Day 2:

Come back to idea of stereotype threat. Ask students to write on post it note (or anonymously on an etherpad) describing
a. a time when you were discouraged/demotivated based on societal norms/expectations,
b. a time when you did something that you thought you couldn't do.

I'm not sure how to wrap things up, and suggestions would be welcome. Maybe just another quick summary of stereotype threat/imposter syndrome?

Thanks for all the feedback! There are some great thoughts in here. I've tried to incorporate them in what I'm proposing below.
Prior to workshop:
Instructors will send everyone the link to the Project Implicit Gender-Science test that is available from here: https://implicit.harvard.edu/implicit/selectatest.html
Instructors should ask students to do the test and keep track of their result.
Day 1:

<5 min: Instructors introduce themselves, introduce idea that we'll all be interacting a lot over next two days. Instructors should stress that we want to make sure everyone feels comfortable.

Five min: Students could each draw a picture of what a competent R (or Python, if that's the focus of the workshop) user looks like. Also ask students -- if they feel comfortable -- to write on a separate post-it note what their result was on the Project Implicit test. [The drawing part might make some people feel a little silly, but I think that kind of helps with the icebreaker aspect. Thoughts? Mine would be a stick figure, reflecting my complete lack of artistic ability!]

Five min: Instructors can briefly group the pictures into major groupings (e.g., long-haired vs. not; glasses vs. not; gender groupings if seem apparent from pictures) and summarize those. Instructors should also summarize results of Project Implicit test, stressing that we all have biases regarding these sorts of things.

Five min: Instructors can then explain idea that we all have mental images of groups of people. These are really useful in some cases, meaning we don't have to start from scratch every time we meet a new person. But it also means we have stereotypes about what certain kinds of people look like. Because of negative stereotypes of certain groups (some common ones, e.g., are that women are not good at math as men, or that older people are not as good at using technology and computers), members of those groups underperform in high-pressure situations.

Why are we talking about this here? Part of why we're talking about this because knowing stereotype threat exists helps counter its effects, making it so that people in the negatively stereotyped groups are less affected by it. One study (Johns et al. 2005 Psychological Science) found that performance of women on a math test was significantly improved by telling students “it’s important to keep in mind that if you are feeling anxious while taking this test, this anxiety could be the result of these negative stereotypes that are widely known in society and have nothing to do with your actual ability to do well on the test.” We're also talking about this because we want to make sure we do our best in this workshop to not do or say things that will trigger stereotype threat. Please be conscious of letting everyone speak, and realize that, for some people, speaking will be harder. And, if you feel like you don't have something to contribute, please realize that you do, and that stereotype threat may well be impacting how you feel about your ability to contribute!

Five min: In the etherpad, write:

a. one thing you can do to try to counter stereotype threat that you might experience related to this workshop.
b. one thing you think classmates can do to try to counter stereotype threat or imposter syndrome in themselves.
c. one thing you think classmates can do to try to avoid triggering stereotype threat in others.
Instructor then summarizes, making sure to note two key things people can do to counter stereotype threat in themselves: reinforcing a positive personal narrative, and encouraging a growth mindset (that is, the idea that the ability to program/code/do stats is something that can be learned, not an innate thing that someone is good or bad at).

Finishing up: Instructor can point out that, if students are interesting in learning more about this, we've linked to some useful references on the etherpad. [I will need to work on assembling these. I have two blog posts that might be useful:
https://dynamicecology.wordpress.com/2014/04/28/stereotype-threat-a-summary-of-the-problem/
https://dynamicecology.wordpress.com/2014/04/29/countering-stereotype-threat/
Clearly there are other resources, too. Suggestions welcome!]

Day 2:

Come back to idea of stereotype threat. Ask students to write on post it note (or anonymously on an etherpad) describing
a. a time when you were discouraged/demotivated based on societal norms/expectations,
b. a time when you did something that you thought you couldn't do.

I'm not sure how to wrap things up, and suggestions would be welcome. Maybe just another quick summary of stereotype threat/imposter syndrome?

This is excellent! I worry that you're trying to say everything in one go.
How about moving 5&6 from day 1 to day 2? I worry that there's too much on
day 1. I think 4 offers an opportunity to wrap things up and launch the
workshop. Then 6 would offer a wrap on day 2.
Pat
On Aug 23, 2015, at 16:09, Amanda Charbonneau<EMAIL_ADDRESS>wrote:
Thanks for all the feedback! There are some great thoughts in here. I've
tried to incorporate them in what I'm proposing below.
Prior to workshop:
Instructors will send everyone the link to the Project Implicit
Gender-Science test that is available from here:
https://implicit.harvard.edu/implicit/selectatest.html
Instructors should ask students to do the test and keep track of their
result.
Day 1:

<5 min: Instructors introduce themselves, introduce idea that we'll all
be interacting a lot over next two days. Instructors should stress that we
want to make sure everyone feels comfortable.
2.
Five min: Students could each draw a picture of what a competent R (or
Python, if that's the focus of the workshop) user looks like. Also ask
students -- if they feel comfortable -- to write on a separate post-it note
what their result was on the Project Implicit test. [The drawing part might
make some people feel a little silly, but I think that kind of helps with
the icebreaker aspect. Thoughts? Mine would be a stick figure, reflecting
my complete lack of artistic ability!]
3.
Five min: Instructors can briefly group the pictures into major
groupings (e.g., long-haired vs. not; glasses vs. not; gender groupings if
seem apparent from pictures) and summarize those. Instructors should also
summarize results of Project Implicit test, stressing that we all have
biases regarding these sorts of things.
4.
Five min: Instructors can then explain idea that we all have mental
images of groups of people. These are really useful in some cases, meaning
we don't have to start from scratch every time we meet a new person. But it
also means we have stereotypes about what certain kinds of people look
like. Because of negative stereotypes of certain groups (some common ones,
e.g., are that women are not good at math as men, or that older people are
not as good at using technology and computers), members of those groups
underperform in high-pressure situations.
Why are we talking about this here? Part of why we're talking about this
because knowing stereotype threat exists helps counter its effects, making
it so that people in the negatively stereotyped groups are less affected by
it. One study (Johns et al. 2005 Psychological Science) found that
performance of women on a math test was significantly improved by telling
students “it’s important to keep in mind that if you are feeling anxious
while taking this test, this anxiety could be the result of these negative
stereotypes that are widely known in society and have nothing to do with
your actual ability to do well on the test.” We're also talking about this
because we want to make sure we do our best in this workshop to not do or
say things that will trigger stereotype threat. Please be conscious of
letting everyone speak, and realize that, for some people, speaking will be
harder. And, if you feel like you don't have something to contribute,
please realize that you do, and that stereotype threat may well be
impacting how you feel about your ability to contribute!
5.
Five min: In the etherpad, write:
a. one thing you can do to try to counter stereotype threat that you
might experience related to this workshop.
b. one thing you think classmates can do to try to counter stereotype
threat or imposter syndrome in themselves.
c. one thing you think classmates can do to try to avoid triggering
stereotype threat in others.
Instructor then summarizes, making sure to note two key things people
can do to counter stereotype threat in themselves: reinforcing a positive
personal narrative, and encouraging a growth mindset (that is, the idea
that the ability to program/code/do stats is something that can be learned,
not an innate thing that someone is good or bad at).
6.
Finishing up: Instructor can point out that, if students are interesting
in learning more about this, we've linked to some useful references on the
etherpad. [I will need to work on assembling these. I have two blog posts
that might be useful:
https://dynamicecology.wordpress.com/2014/04/28/stereotype-threat-a-summary-of-the-problem/
https://dynamicecology.wordpress.com/2014/04/29/countering-stereotype-threat/
Clearly there are other resources, too. Suggestions welcome!]
Day 2:

Come back to idea of stereotype threat. Ask students to write on post it
note (or anonymously on an etherpad) describing
a. a time when you were discouraged/demotivated based on societal
norms/expectations,
b. a time when you did something that you thought you couldn't do.
2.
I'm not sure how to wrap things up, and suggestions would be welcome.
Maybe just another quick summary of stereotype threat/imposter syndrome?
—
Reply to this email directly or view it on GitHub
https://github.com/UMSWC/Administration/issues/7#issuecomment-133914208.

My only concern with moving Day 1 5&6 to Day 2 is if it means some people are dealing with more stereotype threat during day 1 (that is, the first half of the workshop) than they would if we covered that. Thoughts?
Also, to explain @ACharbonneau's copying of my post: she was trying to help me work out a number formatting issue after I asked for help on twitter. Thanks, Amanda!

I'm not sure I follow... It seems like you have a nice summary after 4 already that you could use to tie things up for Day 1. then on Day 2 you could have them do the activity you already planned and then have them do the activities 5 and 6 with 6 being a summary for the overall activity. What before may have taken 30 and 10 min on the two days may move to 20 and 20 min, right?

Yes, the timing would work out better in terms of having things be more even. But my hope was that maybe spending the extra 10 or so minutes that first day would make it so we could reduce the amount of stereotype threat people face that first day of the workshop. Does that make sense?

Gotcha.

I see @duffymeg 's point. We could split the difference and keep point 5 (countering stereotype threat) on Day 1 and move point 6 (more resources) to Day 2.
My only comment on the proposed content is with regards to Day 1, point 2 (draw "competent R programmer"). Maybe it's just because I have a strong social contract--I think, as a participant, I would consciously avoid stereotypes in my drawing. Would this reduce the impact of the exercise? Perhaps we could expand/ modify the exercise to ask people to describe, e.g., Who are Computer Science majors at this school? Who is going to Silicon Valley to work for Facebook and Twitter? These questions point not only to stereotypes but to actual disparities in the recruitment of minorities and women.
Alternatively, a discussion of the recruitment and retention problem in STEM could be the final point on Day 2's intro, as we don't currently have anything there.

Instructors will send everyone the link to the Project Implicit Gender-Science test that is available from here: https://implicit.harvard.edu/implicit/selectatest.html
Instructors should ask students to do the test and keep track of their result.

If we want them to do this before the workshop they would need this link today. Alternatively, we can introduce the topic on Wednesday and assign the exercise as homework (my preference, actually). Note that there actually 14 distinct IAT tests, so I'm thinking we should either pick only 1 or 2 or have the participants pick 1 or 2.
cg

@arthur-e Yes, I also wondered the same thing about having them draw. But, even if they don't draw a stereotyped drawing, maybe having to think about that will still drive home the message? I'm totally open to other suggestions.
@cgates: I was thinking we should tell them to do the Gender-Science IAT. Whether they then spend the rest of the evening doing all the others is up to them. ;) I'm fine with either sending it today or assigning it as homework.

On further reflection, I'm attracted to the idea of focusing on the picture first day (followed by clustering and discussion of stereotype threat as a phenonemon), having participants execute IAT on Wednesday night and discussing results on Thursday.
Note that if the instructors are clustering the drawings we will be exposing our own implicit biases. Wonder if we should split the group in two and let them cluster and present?
I'm happy to defer on the "demoralized exercise" for now. I think I'm afraid of that exercise because:
a) I'm worried it could de-energize the growth mindset orientation,
b) it's tricky to execute that with 20 folks in the time allotted and I do not want to rush that exercise,
c) I worried I will be mentioned by name (oh - is that my impostor syndrome showing?)
Thoughts?
cg

Hi Jared,
Several of us at the U of M have recently launched a partnership with SWC to offer a number of workshops over the course of the year. As part of this, there are a decent number of instructors on campus that are comfortable teaching R. Is anyone out there interested in teaching a workshop on September 28 and 29?
Pat

Begin forwarded message:
From: maneesha<EMAIL_ADDRESS>Subject: UMich Software Carpentry Workshop, Sep 28-29
Date: August 25, 2015 at 2:53:25 PM EDT
To: Pat Schloss<EMAIL_ADDRESS>Jared Lyle<EMAIL_ADDRESS>This email is to introduce Jared Lyle of the Inter-university Consortium for Political and Social Research and Pat Schloss, who is also at University of Michigan and has worked with Software Carpentry on several workshops.  Pat has offered to help secure some instructors so I wanted to put you two in touch directly.
Right now we have a couple of leads - one instructor who's in the area but can only do the 28th, and one who is in Seattle so would need funding for travel/accommodations.  Pat, if you have any other leads please share with me & Jared.
Any other questions, please let me know.
Best,
Maneesha

Here’s additional information about the ISR group that is interested in a workshop...

Begin forwarded message:
From: Jared Lyle<EMAIL_ADDRESS>Subject: Re: UMich Software Carpentry Workshop, Sep 28-29
Date: August 25, 2015 at 3:52:03 PM EDT
To: Pat Schloss<EMAIL_ADDRESS>The dates are firm and we have a room reserved at the Institute for Social Research http://home.isr.umich.edu/.  We're interested in version control (Git), data management (R), and task automation (Unix).
ICPSR http://www.icpsr.umich.edu/ is a social and behavioral science data archive.  The workshop is connected with our biennial meeting of 'Official Representatives' (also known as 'ORs').  ORs are people at our member institutions' campuses who can help local data users with questions about accessing and reusing data.  Some of the ORs have extensive training in data management and analysis.  Others have minimal training.
Thanks,
Jared
On Tue, Aug 25, 2015 at 3:30 PM, Pat Schloss<EMAIL_ADDRESS><EMAIL_ADDRESS>wrote:
My pleasure - can you give me some background on what you all are looking for? Also, are the dates pretty firm? Do you have a room already?
Thanks,
Pat

On Aug 25, 2
015, at 3:29 PM, Jared Lyle<EMAIL_ADDRESS><EMAIL_ADDRESS>wrote:
Thanks, Pat.
Jared
On Tue, Aug 25, 2015 at 3:23 PM, Pat Schloss<EMAIL_ADDRESS><EMAIL_ADDRESS>wrote:
Hi Jared,
Several of us at the U of M have recently launched a partnership with SWC to offer a number of workshops over the course of the year. As part of this, there are a decent number of instructors on campus that are comfortable teaching R. Is anyone out there interested in teaching a workshop on September 28 and 29?
Pat

Begin forwarded message:
From: maneesha<EMAIL_ADDRESS><EMAIL_ADDRESS>Subject: UMich Software Carpentry Workshop, Sep 28-29
Date: August 25, 2015 at 2:53:25 PM EDT
To: Pat Schloss<EMAIL_ADDRESS><EMAIL_ADDRESS>Jared Lyle<EMAIL_ADDRESS><EMAIL_ADDRESS>This email is to introduce Jared Lyle of the Inter-university Consortium for Political and Social Research and Pat Schloss, who is also at University of Michigan and has worked with Software Carpentry on several workshops.  Pat has offered to help secure some instructors so I wanted to put you two in touch directly.
Right now we have a couple of leads - one instructor who's in the area but can only do the 28th, and one who is in Seattle so would need funding for travel/accommodations.  Pat, if you have any other leads please share with me & Jared.
Any other questions, please let me know.
Best,
Maneesha

I just want to saw that whatever @cgates did in today's workshop is great. He's really nailing the whole thing so far but, in particular, the presentation of the "Draw a competent R/ Shell/ whatever programmer" went really well.

Participants draw themselves on one sheet of paper and write three words to describe "themselves and their drawing."
Participants draw a "competent Shell programmer" on another.
With a partner, trade the "competent Shell programmer" drawing and write three words to describe your partner's drawing.
Does your partner's drawing look like your drawing of yourself? What's different? What's similar?
You have an image in your head of what members of the group of people who are "competent Shell programmers" look like. If you think you are different--not a member of the group--that may lead you to think you don't belong; that you can't be a competent Shell programmer. But you can! Stereotype threat, etc.

Just a really great job today.

Hooray! Thanks for the update, @arthur-e! I'm sure @cgates is doing a great job. I like that way of implementing it! How are people responding to being asked to draw?

One participant drew @cgates for the "competent Shell programmer." (=3) There was some confusion about Step 4 (as listed above)... Does Partner A compare Partner B's "competent Shell programmer" to his/her own self-portrait or to Partner B's self-portrait?
Definitely heard some participants, before anything started, marginalize their own abilities, jokingly or otherwise (e.g., "I'm just too old."). After the exercise, people seemed to be more confident.

@michberr and I will be co-teaching the upcoming SWC workshop in the Department of Human Genetics on October 19 and 20th.  I am wondering, are there any exercises from the workshop in August that should be implemented again?  Were the ideas that @ACharbonneau mentioned performed in the August workshop?  If so, how did they go?  Thoughts here would be appreciated!

We only did an abbreviated variation on the drawing exercise @ACharbonneau suggested; @arthur-e described the actual experience very well above.
I have to admit, that I was less comfortable facilitating these exercises than presenting the traditional SWC curriculum (and I was not practiced at the SWC curriculum to begin with). I think they worked well, but that exercise would have worked better with a followup at the end, and possibly with permission a posting of some of the "best-of" images to the etherpad at the conclusion of the workshop. I would invite feedback from @ACharbonneau, @arthur-e, and Shweta (ramdas@umich.edu).
Good luck on upcoming workshop. Happy to chat if you have other questions.
cg

I'm not sure I have much to add. I think that the individuals in our course fell on a distribution where most of the people had a medium confidence level coming in, a few were quite experienced and confident, and a few were very inexperienced.
The two-thirds of the class that fell into the medium and upper confidence levels coming in seemed to either gain a bit more confidence, or at least maintain their incoming confidence level.
In my opinion, the third (or so) of individuals who came in feeling very inexperienced tended to have a different trajectory. They got a confidence boost at first, but they seemed to quickly become disheartened. One of the pitfalls of starting with "you too can become a competent programmer" is that it doesn't always capture the "with a lot of hard work" part of the process...so when learning doesn't turn out to be easy, it can all backfire. There were a few participants who would get a little behind and then just give up, and I heard them say lots of things like "I really am just too old for this" and "I just can't do this" throughout the course.
This isn't to say the stereotype threat bit wasn't good. Like @arthur-e mentioned, most people responded in the way you'd like. I just think it's important to make sure that when you're inspiring people to go outside their comfort zone, that you're also setting realistic expectations.


Some needless memory operation slows down the quantized llama/mistral

I notice that when conversation history is long, the candle version of ggml is much slower than llama.cpp. I think it's because of those memory copy(in Tensor::cat, reshape and so on) on kv cache. So I have such a small try:
cargo run --release --example quantized -- --which 7b-mistral-instruct -n 300 --seed 1 --prompt "<s>[INST] use python to write a code, compare the difference between two folder. if there is same file, use diff to compare the difference between two file [/INST]
"

and the code change is:
let k = self.repeat_kv(k)?;
//let v = self.repeat_kv(v)?;

let att = (q.matmul(&k.t()?)? / (self.head_dim as f64).sqrt())?;
let mask = mask.broadcast_as(att.shape())?;
let att = masked_fill(&att, &mask, f32::NEG_INFINITY)?;
let att = candle_nn::ops::softmax_last_dim(&att)?;
// Convert to contiguous as matmul doesn't support strided vs for now.
let y = Tensor::cat(&(0..32).map(|idx| {
    att.i((.., idx, .., ..)).unwrap().matmul(&v.i((.., idx/4, .., ..)).unwrap()).unwrap()
}).collect::<Vec<_>>(), 2)?;
let y = y.contiguous()?;
//let y = att.matmul(&v.contiguous()?)?;
//let y = y.transpose(1, 2)?.reshape(&[b_sz, seq_len, n_embd])?;
let y = self.attention_wo.forward(&y)?;

On my computer(CPU: R5-5600, DDR: 2*16G 3200 MHz), this change can speed up from about 4.95 token/s to 5.50 token/s!
Although it is still slower than llama.cpp, but there is a lot of optimize that hasn't been done(such as k). I'm not so good at it, so I really hope that there could be somebody rewrite this code to make it as fast as llama.cpp

Out of curiosity, what is the speed that you get on the same config with llama.cpp? I agree that there is something inefficient here but I would have thought it makes even more of a difference.

Out of curiosity, what is the speed that you get on the same config with llama.cpp? I agree that there is something inefficient here but I would have thought it makes even more of a difference.

more that 8 token/s


Bug: Bash completion for install/list does not return all candidates

Bug report
For the install and list commands, candidate completions return:

Only the first candidate, if you have entered no prefix yet
No completions, if you enter a prefix

This is also true for version number completions of sdk install <candidate>, for the same root cause.
I'll have a PR with a proposed fix shortly.
To reproduce
Use SDKMAN! in a Bash shell with sdkman_auto_complete=true, and try Tab-completing as follows:
$ sdk install <TAB>
$ sdk install activemq
# => Should suggest all candidates

$ sdk install jav<TAB>
$ sdk install jav
# => (No suggestions). Should complete "java"

$ sdk install java <TAB>
$ sdk install java 11.0.11.hs-adpt
# => Should suggest all versions

System info
$ uname -msrv
Darwin 20.6.0 Darwin Kernel Version 20.6.0: Wed Jun 23 00:26:31 PDT 2021; root:xnu-7195.141.2~5/RELEASE_X86_64 x86_64

$ bash --version | head -1
GNU bash, version 5.1.8(1)-release (x86_64-apple-darwin19.6.0)

$ sdk version

SDKMAN 5.12.4

Hi @ches,
funny enough, the current version works fine for me

I'm also on Mac (x86_64) and use the exact same Bash version as you.

No rush! BTW, this is a preemptive step to adding the new libexec folder for native binaries 😬

Thanks for contributing!


Twitter/X bugs

Describe the bug
A clear and concise description of what the bug is.
在此处描述问题
On twitter homepage works fine, but list is still broken after last fix, even with csp solution. Also, on violentmonkey video playback is nonfunctional.
Browser And Version
Which Browser Do You Use? And Browser Version
你使用什么浏览器与版本？
Firefox
Log
Press F12, Open Browser Console. Export or Copy Console Log.
打开浏览器控制台，导出或复制控制台日志，粘贴到此处。
Screenshots
If applicable, add screenshots to help explain your problem.
如果可以，请提供安全的图片

Cannot reproduce this issue, can you show a picture of the specific situation and the console logs?


[Bug]: Fill patterns show a repeating white triangle

What happened?
When I load a layer with a fill_pattern, the layer renders with repeated white triangles that become more prevalent as you zoom in.
Steps to reproduce:

Use rbd-add-fsn-hotspot-layers branch
REACT_APP_COUNTRY=rbd yarn start
Load layer: Food security and nutrition hotspots > Food security and nutrition analysis > Food security hotspots
See the series of white triangles that appear within the striped pattern for Priority 1a values
Zoom in further to see more prevalent triangles

Which country / deployment are you running?
RBD; https://github.com/WFP-VAM/prism-app/pull/1283
Add a screenshot (if relevant)

When further zoomed in:

Fixed in #1283


AOS not working with tabs and sliders

This is:

Question

Specifications

AOS version: 2.3.1
OS: win 10
Browser: chrome

Detailed Description
AOS not working with tabs and sliders

i'm facing same problem aos works only if the component is inside the first active tab, if the component is inside other tabs it fails to animate.

It works for me in a slider. Are you sure it's not just animating before you change to another tab or does the element not appear at all therefore the animation is not triggered?

I have the problem when AOS is used in tabs that are other than active when
the website loads initially.
Example. Consider a website has 3 tabs.
When the website loads assume it shows 1st tab content. AOS works fine in
that 1st tab. If i use AOS in 2nd or any other tab, it won't animate if i
move to that tab. But the block displays properly.
On Sat, 17 Jul, 2021, 3:30 PM Tom Lorimer, @.***> wrote:

It works for me in a slider. Are you sure it's not just animating before
you change to another tab or does the element not appear at all therefore
the animation is not triggered?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/michalsnik/aos/issues/683#issuecomment-881870617, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ATVMQWQE52OP2AROR4OMQ5LTYFIDHANCNFSM45XHAG2Q
.

Same. Does anyone have a workaround?

i tried with Aos.init(); Aos.refresh(true); Aos.refreshHard(); data-aos-anchor=".other-element". But everything is not working.
Until I found this: https://stackoverflow.com/questions/51768579/how-to-make-aos-not-working-with-slick-slider
note:

I have the same issue.
I thought it'd be a possible solution by putting AOS.refresh() into onClick property of each of the the tab buttons, but after clicking on another tab the y axis of animation trigger points upon scroll gets messed up, and upon clicking back into the default active tab, it stays messed up.
Would be really great to hear any possible solutions/workarounds to this issue!


Migrate to Terraform Plugin Framework

Overview

Motivation:

There are few defects, most notably #336, that we hope to fix once we move to the Plugin Framework
The framework is the official future way of Terraform plugin development

Possible Implementation

Testing

Context

Your Environment

@dimuon is there anything pending here?

@d-carmo , I'm going to release a new version of the provider soon, after this the ticket can be closed I believe.

Closed by https://github.com/elastic/terraform-provider-ec/pull/567


[BUG] Memory leak occurs while measuring the text using font stream

Description
Memory keep on increasing while measuring the text using font stream
Code
for (int i = 0; true; i++)
{
    Console.WriteLine(i);
    // Memory leak occurs while measuring the text using font stream.
    MeasureTextUsingFontStream();
}

// Measure the text using font stream
static void MeasureTextUsingFontStream() {
    using (var stream = File.OpenRead(@"../../../arial.ttf")) {
        using (var typeface = SKTypeface.FromStream(stream)) {
            using (var paint = new SKPaint { Typeface = typeface }) {
                // Issue doesn't occur if we commented the below line.
                var width = paint.MeasureText("Hello, world!");
                paint.Dispose();
            }
            typeface.Dispose();
        }
        stream.Dispose();
    }
    GC.Collect();
    GC.WaitForPendingFinalizers();
}

Note: You can use any available TTF font to replicate this problem.
Expected Behavior
Allocated memory should be disposed properly
Actual Behavior
Memory allocation increasing rapidly without any disposal
Basic Information

Version with issue:  2.88.3
Last known good version: None
IDE:  Visual Studio
Platform Target Frameworks:

Windows Classic:  Windows 10

**IDE:**
Microsoft Visual Studio Professional 2022 (64-bit) - Preview
Version 17.6.0 Preview 1.0
OS:
OS		- Windows 10 Pro
Processor	- Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz   2.71 GHz
Installed RAM	- 16.0 GB (15.9 GB usable)
System type	- 64-bit operating system, x64-based processor

PASTE ANY DETAILED VERSION INFO HERE

Screenshots
Measuring the text using font stream: (Memory keep on increasing here)

Measuring the text using installed font: (Memory disposed properly here and it's maintained in same level)

Reproduction Link
Please use the attached sample to replicate the same problem,
SkiaSharpTesting.zip

Could you try to create the typeface outside the loop? You will most likely not see any increase in memory usage. Skia is caching glyphs data and is only clearing the cache if it reaches some defined memory usage level.

Gillibald, Thanks for the update.
Yes, as you mentioned memory leak doesn’t occur if we create the typeface outside the loop.
But for our requirement, we need to create a typeface for every looping. So, is there any possibility to forcibly dispose the memory by using any API’s?

@Gillibald & @mattleibow - Any solution for this?
It would be very helpful for us.

But for our requirement, we need to create a typeface for every looping

Why do you need it though?

@FoggyFinder - Please find the below requirement details,
We are working on the Word document to PDF conversion project, and we are using the SkiaSharp library to measure the width and height of the text by using an embedded font stream in the document.
While converting multiple (more than 100) Word documents to PDF in for loop, memory keeps on growing until the loop ends due to creating more number of SKTypeface for each Word document. Since each Word document may have a different set of embedded font streams, it’s not possible to create SKTypeface commonly (outside of the loop).
To avoid this memory leak problem, we expected to dispose the SKTypeface allocated memory after completing each conversion. Could you please help us to solve this memory problem?
Note: At certain stage, app crashed with out of memory problem.

@FoggyFinder & @Gillibald  & @mattleibow - Any help would be much more appreciated.

SkTypefaceCache is not exposed in skia sharp, but the purge can be called via SkGraphics:
SKGraphics.PurgeFontCache();
You can also set your own limits in the cache via
SKGraphics.SetFontCacheCountLimit
SKGraphics.SetFontCacheLimit

I had same memory leak issue when using SKTypeface.FromFile.  Using SKGraphics.PurgeFontCache(); does not solve my issue.
At the end I solved memory leak by encapsulating and caching output of SKTypeface.FromFile in a static class.
public static SKTypeface? GetTypefaceFromFile(string filename)
{
    return typefaceCache.GetOrAdd(filename, filename => SKTypeface.FromFile(filename) ?? null);
}


Typo in Arcadia Science Computational Training Introduction to conda for software installation and environment management

Under section "installing Conda on an Apple Machine"
curl -JLO https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
bash Miniconda3-latest-MacOSX-x64_64.sh

should read
curl -JLO https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
bash Miniconda3-latest-MacOSX-x86_64.sh

Closed by #59


Mustache object not exported via commonjs

it seems mustache.js exports only a to_html method via commonjs.
I think the Mustache Object should be exported too.

if (typeof module !== 'undefined' && module.exports) {
    exports.name = Mustache.name;
    exports.version = Mustache.version;

    exports.to_html = function() {
      return Mustache.to_html.apply(this, arguments);
    };
}

The 0.5 branch (currently on master) exports name, version, compile, parse, and render.


Replace Airbrake with Sentry

Set your SENTRY_DSN environment variable and the gem will capture and
send exceptions to the Sentry server.
Raven only runs when SENTRY_DSN is set

 [TARIFF16] Setup Sentry on CF branch for all apps


driver/rmt: Bidirectional use case (IDFGH-67)

One of my use cases for rmt is to have an RX and a TX channel connected both to one single pin for implementing bidirectional protocols like Dallas' 1-wire. The TX channel initiates a transaction while RX channel stands by, triggers on activity and samples the incoming bit stream.
This worked reasonably well until gpio driver: Clear GPIO matrix output config when setting pin as input was applied. The situation is now as follows:

rmt_set_pin() calls gpio_set_direction() either for input or output
gpio_set_direction() enables the desired direction but strictly disables the opposite path.
A call to rmt_set_pin() for the RX channel undoes a previous rmt_set_pin() for the TX channel and vice versa. There's no way to have both directions enabled at the same time.

From my point of view the GPIO matrix and input enable handling within rmt_set_pin() should be less intrusive: Just route input path to RX channel or route TX channel to output drivers. But do not interfere with the opposite direction.

So add RMT_MODE_RXTX? Or do you also want the ability to set an rx and tx from different channels to the same pin?

The latter: Connect an rx and a tx channel to the same pin.
I'm not aware that a single rmt channel could handle both at the same time.

The RMT module contains eight channels; each channel has a transmitter and receiver, of which one can be active per channel.

Good point

biderection configuration is now supported by the new RMT driver if you enable the io_loop_back flag of rmt_tx_channel_config_t and rmt_rx_channel_config_t. This feature is also widely used internally in esp-idf test code (to simplify the test runner setup). You can find the example here and here


Issue in RDS cdk vpc subnets

I think I spotted a bug here.
https://github.com/serverless-stack/sst/blob/master/packages/sst/src/constructs/RDS.ts#L444
This code isn't allowing the vpcSubnet configuration with having set a vpc.
This disables the developer from setting the subnetType.
Should the code not be
if (props.vpcSubnets)...?

Sorry, missed this! It's hard for me to recall back on where I was, but I believe the answer is yes, I was attempting to use the default VPC settings while providing a Subnet config.

We are transition this repo to https://github.com/sst/v2 and are closing this issue for now. If it is still relevant please reopen it there - sorry for the trouble


Releases

@KeeganShaw-GIS @tarcadius Soroush
Scheduled releases to the model in the public branch?
I'm keen to push all developments public as soon as possible - but there is an organizational issue whereby people coming by and cloning the code base will have all sorts of different versions of the model. Some of which might not work.
Rallying behind a release approach could focus energies on polishing something for public use - while maintaining freedom to explore research avenues in a development version of the code base.
Thoughts on this?

I totally agree. I think we need to have a conversation about this. @KeeganShaw-GIS  - can you add it to the next next agenda (next week's) so that Tom can be there? The first step is to clean things up in the public branch. The one downside that we should talk about is that a "release" risks letting other parties run away with divergent versions of the model if releases aren't released sufficiently frequently, right? Thinking of the HW repo here. Or if HW wants to propose changes, would it push them to IM3S as part of a future release? Having 3 repos is hard!

@tbarchyn. Also agree. We discussed this briefly last week I proposed using Git Issues/projects and milestones to define different versions. For instance, V2 could be released June 30th, and would include all new method modules / global parameters / and general code improvements.

@tbarchyn @KeeganShaw-GIS
Is this issue closed?

Sure


Update Wiring Wiring template

Also, update the version for the VSIX, since it's been stale for a while.

Hi @msalehmsft, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!

It looks like you're a Microsoft contributor (Mahmoud Saleh). If you're full-time, we DON'T require a Contribution License Agreement. If you are a vendor, please DO sign the electronic Contribution License Agreement. It will take 2 minutes and there's no faxing! https://cla.microsoft.com.

TTYL, MSBOT;


Fluid registry issue with Mariculture and TSteelworks: Value Already Present: limestone.molten

http://pastebin.com/RU6GBDia
It was not a crash. And interestingly, with both mods installed, I can easily start the server or start a single player world. I cannot, however, join a server. Removing TSteelworks does fix this issue, but I'd rather not if I can help it.
I also submitted this to Ephys here.

This might sound silly but test it without CustomItems mod. I used to fiddle around with Limestone in that mod in the pack you get this from.

My molten limestone is registered as quicklime. So this has nothing to do with me. What forge version are you using btw.

Forge 1448. I've heard that this particular issue may be related to a change to Forge in 1407?

Forge 1421 changed fluids, I have submitted a pull request for the 1.3.0 and 1.2.4 branches for fix the issue and make Mariculture work with forge-1.7.10-<IP_ADDRESS>0-1.7.10.


Error in ng generate component

Bug Report or Feature Request (mark with an x)
- [ x ] bug report -> please search issues before submitting
- [ ] feature request

Versions.

Angular CLI: 1.5.0
Node: 6.11.5
OS: darwin x64
Angular: 5.0.0
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router

@angular/cli: 1.5.0
@angular-devkit/build-optimizer: 0.0.32
@angular-devkit/core: 0.0.20
@angular-devkit/schematics: 0.0.35
@ngtools/json-schema: 1.1.0
@ngtools/webpack: 1.8.0
@schematics/angular: 0.1.1
typescript: 2.4.2
webpack: 3.8.1

Repro steps.

ng generate component foo

The log given by the failure.

ERROR in src/app/foo/foo.component.ts(7,18): error TS2304: Cannot find name 'ViewEncapsulation'.
Desired functionality.

The generated component refers to ViewEncapsulation without importing it.  Either it should be imported, or it should not appear at all. Right now it is:
import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'app-foo',
  templateUrl: './foo.component.html',
  styleUrls: ['./foo.component.css'],
  encapsulation: ViewEncapsulation.None
})
export class FooComponent implements OnInit {

  constructor() { }

  ngOnInit() {
  }

}

So the line:
encapsulation: ViewEncapsulation.None

should probably go, or the import at the start should be:
import { Component, OnInit, ViewEncapsulation } from '@angular/core';

BTW, why should it be ViewEncapsulation.None?
Mention any other details that might be useful.

Related 8374

I think the bug is that viewEncapsulation is set at all.

#8374

This is a bug, the generated code does not even have a correct import.
Also encapsulation: ViewEncapsulation.None should be by no way the default.

fixed via https://github.com/angular/devkit/commit/a8a6559649c8815b2b24561bd6ef00e4e4ad4ab8

angular/devkit@a8a6559 takes care of importing ViewEncapsulation when necessary.
The issue of using ViewEncapsulation.None by default still remains.
Some background:
I believe using None as the default value for ViewEncapsulation was an issue since the beginning, but was cancelled out in most cases by another bug (which was fixed in angular/devkit@6d7a7ea57, revealing the original issue).
AFAICT, the default value needs to be changed from None to Emulated in the following files:

schematics/angular/application/schema.json
schematics/angular/component/schema.json

@gkalpak  I completely agree to this!
This was done by purpose:  https://github.com/angular/devkit/blob/6d7a7ea5709c31d839d98ecad4bb174c34a476e9/packages/schematics/angular/component/index_spec.ts#L65
But I'm confused why we want to have this breaking change?
Nobody would expect None as the default. Since it's not the default Angular-behavior. This should be fixed very soon, or a lot of people will have a hard time to realize this fundamental change.
@Brocco can you explain this to us? I'm confused!

This issue has been reported several times and is currently being tracked via #8398 closing this issue.
Duplicate of #8398

Woops, my bad, LOL... reopening. 😀

Error while generating component. Please help me
The "c" alias is already in use by the "--collection" option and cannot be used by the "--change-detection" option. Please use a different alias.
ng -v
Your global Angular CLI version (7.1.4) is greater than your local
version (1.7.4). The local Angular CLI version is used.


⚠ GitLab Server has degraded performance

In 738e874, GitLab Server (https://gitlab01.its-telekom.eu) experienced degraded performance:

HTTP code: 200
Response time: 11813 ms

Resolved: GitLab Server performance has improved in 0f7abe6.


Mapped type in generic function can cause unbound generic to leak

Bug Report

🔎 Search Terms
unbound type parameter generic leak

🕗 Version & Regression Information
This is the behavior in every version I tried, and I reviewed the FAQ
⏯ Playground Link
Workbench Repro
💻 Code
// @declaration

export const obj = <A,>(shape: { [K in keyof A]: A[K] }) => shape

// .d.ts shows correct type
export const box = <B,>(t: B) => obj({ value: t });
//           ^?
// Type looks correct

// .d.ts shows const x: { value: B }
export const x = box(5)
//               ^?
// Shows unbound B

// .d.ts shows const x: { value: B }
export const y = x
//           ^?

// Shows unbound B

🙁 Actual behavior
The type of x is { value: B }, where B is an unbound generic that leaked from box
🙂 Expected behavior
The type of x is { value: number }
Related Issues
#31326, #31402
/cc @samholmes

Fixed by #42449


Issue reported on discourse

https://discourse.julialang.org/t/unable-to-find-fit-in-catboost-mljcatboostinterface/123818

Thank you @tylerjthomas9 for taking this on.


init template with react ?

I was wondering if there is a way to init a new project with React instead of Vue ?
Thank you

And svelte! I wonder if there is a way to hook into the vite template ecosystem that way providing support for: vue, react, svelte would be easy?

i have it working myself with react but its really hacky. so it is possible. i just don't have the time to genericize it.

@Luberry hey Dylan.  Can you start a new vue template and overlay your hacks in one commit and send it to me?  Maybe I can spend some time to make it right.  I'd rather use react as a front-end

https://github.com/guark/react

Thank you @melbahja in my research I found another competitor of this library and seems to be more maintained and more features possibly
https://wails.io/

Anyone can close this


BUG:show add to cart notification but quantity is zero

In this i can improve it by first select size and quantity and then it show add to cart solution otherwise it show notification for not selected (Or set Quantity to by default 1 and also default select size because without this you cant set into cart )

Congratulations, @panam1916! 🎉 Thank you for creating your issue. Your contribution is greatly appreciated and we look forward to working with you to resolve the issue. Keep up the great work!We will promptly review your changes and offer feedback. Keep up the excellent work! Kindly remember to check our contributing guidelines

We can do one thing by efault we start quantity feature with 1

This will be a functional issue and will be worked upon later. @panam1916


[AutoDiff upstream] parsing for @differentiable function type

Adds parsing for a type attribute @differentiable, which is optionally allowed to have argument @differentiable(linear).
The typechecker currently rejects all uses of @differentiable with "error: attribute does not apply to type". Future work (https://bugs.swift.org/browse/TF-871 https://bugs.swift.org/browse/TF-873) will update the typechecker to allow this attribute in places where it is allowed.
Resolves https://bugs.swift.org/browse/TF-822.

@swift-ci please smoke test


Complex template not working

Thanks for this lightweight library.
Not sure if this is intended to be used this way, but reporting it anyway for future readers as it's not mentioned in the docs.
Consider the following template
const template = `<ApplicantFirstName>{{it.firstName}}</ApplicantFirstName>`

When we use the following, it.firstName is replaced by ''
Eta.render(template, { firstName: "ABC" }, { tags: ["{{", "}}"])

output is:
`<ApplicantFirstName></ApplicantFirstName>`

Package & Environment Details

Environment: Node
Version: latest

Hey @trojanh, thanks for the report! Actually, your template should look like {{=it.firstName}} instead of {{it.firstName}}.
The issue stumped me for a while -- I'm so used to the syntax of template engines that use {{ ... }} like Squirrelly and Handlebars that I forgot Eta needed the = after the opening tag :rofl:!
Thanks for taking the time to create the issue -- let me know if you have any questions :+1:

Thanks @nebrelbug , I think I must have overlooked this.
Any way if you really feel this is so easy to mistake, we must add some highlight for this. I had checked all the docs but I missed this silly thing. 😅
I think you have done great job keeping this library lightweight yet so feature rich and also well documented 🙏
I would love to help you with anything.

@trojanh no problem, glad I could help!
Yeah, highlighting would be super helpful. I've also considered making a linting plugin that would loop through the parse results and identify likely errors.
Thanks so much! I've really enjoyed creating Eta.

I would love to help you with anything.

Thanks! If you want, you could write a tutorial explaining how to use Eta or talking about the benefits of Eta (I'd point users to it from the docs). Otherwise, just using Eta, asking questions, and filing issues is helpful!


Add Jump-in function

I don't know if this project is still maintained, but I find it very useful.
I just think that a function to "jump in" (i.e. access the nearest following matching pairs) would be very nice.
The following code seem to work (not fully tested yet) :
(defun evil-args--forward-opener (&optional count)
  (let ((openers-regexp (regexp-opt evil-args-openers))
    (closers-regexp (regexp-opt evil-args-closers))
    (openers-and-closers-regexp (regexp-opt (append evil-args-openers
                            evil-args-closers)))
    (end -1)
    (count (or count 1)))
    (save-excursion
      (while (> count 0)
    ;; search forward for an opener
    (if (not (re-search-forward openers-and-closers-regexp nil t))
        ;; not found (do nothing more)
        (setq count 0)
      ;; found
      (backward-char)
      ;; if looking at a closer (stop)
      (if (looking-at-p closers-regexp)
          (setq count 0)
        ;; if looking at an opener
        (setq end (+ (point) 1))
        (forward-char)
        (setq count (- count 1)))
      )))
    (if (> end 0) (goto-char end))))

;;;###autoload
(defun evil-jump-in-args (count)
  "Move the cursor in the next enclosing matching pairs."
  (interactive "p")
  (evil-args--forward-opener count))

Sorry I haven't been very responsive on this repo.
I am not clear on whether this suggestion offers functionality that can't be achieved by searching forward for the delimeter with 'f' or '/'? Perhaps you can provide an example of where you see this being useful?


Secure access to "sensitive" columns

Is there a simple way of controlling access to columns marked as "sensitive" ? I mean a centralized place where you can manage (grant/deny) access to "sensitive" columns.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 9ca439af-510f-303c-e72c-424b78ac0ac7
Version Independent ID: 616d8cf5-1631-1179-0c59-f8b4f6c1f7bb
Content: Azure SQL Database and SQL Data Warehouse data discovery & classification
Content Source: articles/sql-database/sql-database-data-discovery-and-classification.md
Service: sql-database
Sub-service: security
GitHub Login: @vainolo
Microsoft Alias: arib

As of today the sensitivity of a column does not affect access control but it is something we are actively investigating. Thanks for the feedback

@SuperSing As Conveyed there is no option currently to give access to users of sensitive columns at a centralized place. But this could be a brilliant addition to the product. So please use the below User Voice link to submit your idea and help enhance the product.
https://feedback.azure.com/forums/217321-sql-database
Your feedback is important and is needed to further develop the product.

@SuperSing
We will now proceed to close this thread. If there are further questions regarding this matter, please respond here and @YutongTie-MSFT and we will gladly continue the discussion.


should be has

should be has,

Thank you for the report. This is fixed from the next server reboot! :)


Reverted & rejected txs

Right now adds rejected txs to transaction list. TODO: implement py devnet's logic with discarding them. Add reverted transactions to block and not leave them in pending state

Can be used for reference: https://github.com/0xSpaceShard/starknet-devnet/pull/518

Turns out with the merge of blockifier in #193 the path for this has been largely paved


Make config.yaml settings for VPC tests can be set using env vars

Also unify transforming env vars with prefix -> dictionary code
Should make testing things like https://github.com/dcos/dcos/pull/849 easier.
This could also be useful to replace the test_add_config file stuff.
Note: This needs to either land before https://github.com/dcos/dcos/pull/846 and have that updated, or if it lands updated to update the new TEST_ADD_ENV_ in it.

LGTM

https://teamcity.mesosphere.io/viewLog.html?buildId=441058&buildTypeId=ClosedSource_Dcos_IntegrationTests_CloudIntegrationTests_DcosOssCcmIntegration_2&tab=buildLog#_focus=583 -- not working currently (dcos_overlay_enable was supposed to be set to false...)


⚠ Bofrost.at has degraded performance

In a981e9c, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1257 ms

Resolved: Bofrost.at performance has improved in 02fafc8.


keep_het parameter not working

Describe the bug
The config parameter keep_hets is currently not working. It seems keep_hets was recently updated from bool type to a list of strings, where it contains the specific residue name of a HETATM residue such as keep_hets=["HOH"]. However, after updating the parameter, it doesn't include the specified residues in the graph. The tutorial installed the newest version of Graphein-1.7.6 and I haven't had a chance to back test the other versions to see when the keep_het functionality broke but will updated this ticket when I have a chance.
To Reproduce
This can be seen in the tutorial example of 3EIY, which contains 112 waters. However, when we run:
from graphein.protein.graphs import construct_graph
config = ProteinGraphConfig(keep_hets=["HOH"])
g = construct_graph(config=config, pdb_code="3eiy")

None of the waters are included in the graph. If we print the nodes with g.nodes() and look that the last residues we see that no waters were included:
['A:ALA:171', 'A:ASN:172', 'A:PHE:173', 'A:LYS:174', 'A:LYS:175']

Expected behavior
If I understand correctly, the expected behavior of keep_hets would be for the waters to now be included in the graph representation.
Screenshots
Here is a screen shot of the representation of 3EIY, where we can see only the protein residues included.

Desktop (please complete the following information):
This reproduced using the google Collab notebook with graphein-1.7.6 installed.
No other modification where made to the tutorial.

Hi @davidkastner, good catch. This is a slightly tricky issue to resolve.
I think the omission of the water nodes comes from here: https://github.com/a-r-j/graphein/blob/6dae5ff114a40410566f6fea4e558b2b9a6ba580/graphein/protein/graphs.py#L199
Where we select on CA atoms to count as nodes. For heteroatoms it can be tricky to consistently and universally define what the node should be. I think a good heuristic could be the CoM for the ligand for coarsened graphs.
We looked into this quite extensively for Protein-Ligands graphs (see #164 , mainly here: https://github.com/a-r-j/graphein/blob/d81fc2f77b3562f61f70f257ddf509d5102b8bf6/graphein/protein_ligand/graphs.py).
What's your application? Using graphein.protein.tensor.data.Protein should work reliably if it's ML-based.

Hi @a-r-j. I see the problem and agree it would be challenging to generalize! For my purposes, the atom representation will  work well as I am building graphs for QM cluster models extracted from proteins. As the QM cluster models are small in size, the extra information afforded by the atom representation will be useful. I appreciate your response and will close the issue as resolved but hopefully it will be a useful point of reference for others.


File assembly fails when UDP packets arrive out of order

Sam,
I try to start himawari-rx.bat, and use TSDuck to receive TS stream by this command:
tsp -I dvb --adapter 0 --delivery-system "DVB-S2" --lnb "5150000000" --frequency<PHONE_NUMBER> --modulation QPSK --symbol-rate 2586148 --fec-inner "3/5" --roll-off 0.2 --polarity "horizontal" -P mpe --pid 0x03E9 --udp-forward --log -O drop
It works, and receive many HRIT files. Then I can use "xrit-img.py" to generate some PNG pictures successfully, but some pictures just parts.
My himawari-rx.conf is keeping default:
[rx]
path = received
format = xrit
# List of channels to ignore (e.g. "B09", "IR2")
ignored_channels =

[udp]
ip = <IP_ADDRESS>
port = 8001

But I found sometimes himawari-rx reports that "missing some parts" or "part before info", like this:

I notice that "part before info" always happend before "missing some parts" at receiving the same file, and sometimes just reports "missing some parts", that makes the file failed to receive.
I also try to use EBSpro to start the "UDP Stream-server" at port 7000 with UDP, and start TSDuck by this command:
tsp -I ip 7000 -P regulate --bitrate 2586148 -P mpe --pid 0x03E9 --udp-forward --log -O drop
It works, too. But "missing some parts" or "part before info" still happend.
Then I keep the "UDP Stream-server" running, and start TSDuck with:
tsp -I ip 7000 -P regulate --bitrate 2586148 -P mpe --pid 0x03E9 --log --output-file "udp.dump" -O drop
After about 30 minutes, I terminate TSDuck and start himawari-rx by this command:
python himawari-rx.py --config himawari-rx.ini --file "udp.dump" -v
Finally I success to receive all parts of the pictures, and it has no "missing some parts" or "part before info" errors. Then I success to generate all PNG pictures completely that I have received by using "xrit-img.py".
Then I stop the "UDP Stream-server", and start TSDuck by this command:
tsp -I dvb --adapter 0 --delivery-system "DVB-S2" --lnb "5150000000" --frequency<PHONE_NUMBER> --modulation QPSK --symbol-rate 2586148 --fec-inner "3/5" --roll-off 0.2 --polarity "horizontal" -P mpe --pid 0x03E9 --log --output-file "udp.dump" -O drop
And also after about 30 minutes, I terminate TSDuck and start himawari-rx by this command:
python himawari-rx.py --config himawari-rx.ini --file "udp.dump" -v
It has no "missing some parts" or "part before info" errors, too. Then I also success to generate all PNG pictures completely that I have received.
According to UDP "do not establish end-to-end connections between communicating end systems", I guess that sometimes when the network traffic is very busy, UDP packets could be arriving out of order, or drop.
If the UDP packets that send to himawari-rx is dropped,  but TSDuck doesn't know, then himawari-rx would reports "missing some parts".
If the UDP packets arriving out of order, himawari-rx can't rebuild the whole part, then it will lost the parts which send before "info" part, so it reports "part before info" and "missing some parts".
I suggest that himawari-rx can add TCP receive mode, and find a way to use TSDuck for send TS streams with TCP, or use another software to replace TSDuck to send TS streams with TCP, then maybe the problem can be solved.
Thanks again for you helpfull software!

I'm testing this software these days with @yanderen2

Hi, thank you very much for testing himawari-rx!
I had a feeling that packets arriving out of order would be an issue when receiving directly from the real C-band downlink. The reason most files fail is that currently the demuxer will discard any file parts which arrive before the file info packet. This can be changed but will require some re-writing of the File class.
The reason I've used UDP is that the actual packets transmitted by JMA via JCSAT-2B are multicast UDP packets. All TSDuck is doing is rebroadcasting them on the LAN for himawari-rx to receive. I do not think TCP is the answer to this problem, I should just fix the software to better handle packets which arrive out of order.
I will make these changes then push a pre-release update to GitHub and reply to this issue so you can test my changes.
Thank you again for your excellent testing!

Thank you very much for your patient reply!
I'm looking forward to your improvements for the software.

Hi, I have rewritten parts of the decoder to now accept file parts arriving before the information packet. I also came across another issue in the file assembly code which was causing the decoder to hang and miss UDP frames, which would cause the next file to fail.
I have now published v0.1 to GitHub. Please download himawari-rx.zip and let me know if the issue is fixed! Thanks.

Hello, thanks for the improve of the decoder!
I have tested the decoder by version v0.1.1 again with TSDuck, then I found it works well most time, but sometimes still have the PART BEFORE INFO and MISSING PARTS issues.
Like this:

First I start himawari-rx and use bitrate 2586148 for TSDuck:
tsp -I file "154.0E_4148.678_H_2587_(2020-12-27 16.04.28)_dump.ts" -P regulate --bitrate 2586148 -P mpe --pid 0x03E9 --udp-forward --log -O drop
It works well and has no issues at the first time. But when I test it again, the issues caused, and the files would not be received when MISSING PARTS happend.
Then I test it again and again, I found the issues caused is not very often, but is still an issue.
I think there are 2 problems needed to solve:

Any file parts arrived before the file info packet.
Some file parts arrived after the file end packet.

Then I read the script of this decoder, and found the changes of def parse_file_contents(self, p) in assembler.py. I found self.files[p.uid] = File() after if not self.file_exists(p), it is a great idea to solve problem 1!
I think problem 1 is solved so the issues caused not very often.
But the problem 2 is still an issue.
For this problem, I have an idea for reference:
First to write the imcomplete files to disk when the end parts arrived, but still keep the informations of them and marked with "imcomplete file" (with completed parts informations in it).
Then if any parts of "imcomplete file" received after the "imcomplete file" wrote to disk (if there is any missing part between two parts, just fill it with "\x00"), just read the file from disk and add the new parts to it (at the right position of the file), then write it to disk again, and update the marks of completed parts of the "imcomplete file" informations.
If all parts of the file is received at any time, the file would finally be wrote completely to disk (if the file is compressed and the config "format" is "xrit", then decompress it automatic before write to disk), and then just remove the "imcomplete file" informations which is receive completed.

Hello, thanks for the improve of the decoder!
I have tested the decoder by version v0.1.1 again with TSDuck, then I found it works well most time, but sometimes still have the PART BEFORE INFO and MISSING PARTS issues.
Like this:

First I start himawari-rx and use bitrate 2586148 for TSDuck:
tsp -I file "154.0E_4148.678_H_2587_(2020-12-27 16.04.28)_dump.ts" -P regulate --bitrate 2586148 -P mpe --pid 0x03E9 --udp-forward --log -O drop
It works well and has no issues at the first time. But when I test it again, the issues caused, and the files would not be received when MISSING PARTS happend.
Then I test it again and again, I found the issues caused is not very often, but is still an issue.
I think there are 2 problems needed to solve:

Any file parts arrived before the file info packet.
Some file parts arrived after the file end packet.

Then I read the script of this decoder, and found the changes of def parse_file_contents(self, p) in assembler.py. I found self.files[p.uid] = File() after if not self.file_exists(p), it is a great idea to solve problem 1!
I think problem 1 is solved so the issues caused not very often.
But the problem 2 is still an issue.
For this problem, I have an idea for reference:
First to write the imcomplete files to disk when the end parts arrived, but still keep the informations of them and marked with "imcomplete file" (with completed parts informations in it).
Then if any parts of "imcomplete file" received after the "imcomplete file" wrote to disk (if there is any missing part between two parts, just fill it with "\x00"), just read the file from disk and add the new parts to it (at the right position of the file), then write it to disk again, and update the marks of completed parts of the "imcomplete file" informations.
If all parts of the file is received at any time, the file would finally be wrote completely to disk (if the file is compressed and the config "format" is "xrit", then decompress it automatic before write to disk), and then just remove the "imcomplete file" informations which is receive completed.

I found another issue, is that some files are just dropped without any notice in the decoder when receiving.
And I also found the reason possibilly, is that at def parse_file_complete(self, p) in assembler.py, these lines:
    def parse_file_complete(self, p):
        """
        Parse file complete packet (type 255)
        """

        # Ignore packet without associated file object
        if not self.file_exists(p): return

        # Check file info has been set
        try:
            self.files[p.uid].name
        except AttributeError:
            # Removed complete file with missing info
            del self.files[p.uid]
            return

It means when the file end packet arrived before the file info packet, the decoder would drop the whole file directly, without any notice or data wrote.
This is the problem 3 that I've nerver found before.
And my idea is:

if not self.file_exists(p) then create this file, write the empty file to disk, and mark the file as "imcomplete file".
del self.files[p.uid] modify to mark the file as "imcomplete file", and keep the informations until the file info packet arrived. When an "imcomplete file" is receive completed, just write it to disk (or if the file is compressed and the config "format" is "xrit", then decompress it automatic before write to disk) and remove the "imcomplete file" informations of it.

And don't worry about the memory of the computer, I also have an idea, is that add a time mark on each "imcomplete file" information, then remove the "imcomplete file" informations that is waitting for a long time (probbly has packets dropped really).
For example, if himawari-8 transmits files every 10 minutes, then the decoder would remove all "imcomplete file" informations which is marked 10 minutes ago.

I found another issue, is that some files are just dropped without any notice in the decoder when receiving.
And I also found the reason possibilly, is that at def parse_file_complete(self, p) in assembler.py, these lines:
    def parse_file_complete(self, p):
        """
        Parse file complete packet (type 255)
        """

        # Ignore packet without associated file object
        if not self.file_exists(p): return

        # Check file info has been set
        try:
            self.files[p.uid].name
        except AttributeError:
            # Removed complete file with missing info
            del self.files[p.uid]
            return

It means when the file end packet arrived before the file info packet, the decoder would drop the whole file directly, without any notice or data wrote.
This is the problem 3 that I've nerver found before.
And my idea is:

if not self.file_exists(p) then create this file, write the empty file to disk, and mark the file as "imcomplete file".
del self.files[p.uid] modify to mark the file as "imcomplete file", and keep the informations until the file info packet arrived. When an "imcomplete file" is receive completed, just write it to disk (or if the file is compressed and the config "format" is "xrit", then decompress it automatic before write to disk) and remove the "imcomplete file" informations of it.

And don't worry about the memory of the computer, I also have an idea, is that add a time mark on each "imcomplete file" information, then remove the "imcomplete file" informations that is waitting for a long time (probbly has packets dropped really).
For example, if himawari-8 transmits files every 10 minutes, then the decoder would remove all "imcomplete file" informations which is marked 10 minutes ago.


Align -optimize flags with current release of GNU compilers

Original issue: https://charm.cs.illinois.edu/redmine/issues/151

We provide a generic wrapper for various backend compilers in charmc, and a flag -optimize that's meant to provide good optimization settings for any given backend without breaking things. Every new compiler release brings new optimization settings along with it. We haven't necessarily kept up with these releases and the options they bring to the table.
We should make sure that the flags we pass GNU compilers under -optimize are appropriate for the most recent few releases (probably 4.4-4.8, given how long they stay in service), in terms of performance, reliability, and compatibility.

Original date: 2018-04-25 05:47:01

The GCC documentation doesn't specify very many optimization options that aren't enabled by default at -O3 and which don't relax semantics. I did find a couple:
-fipa-pta
Perform interprocedural pointer analysis and interprocedural modification and reference analysis. This option can cause excessive memory and compile-time usage on large compilation units. It is not enabled by default at any optimization level.
-flto
Enable link-time optimization. Already have an open issue for that here: https://charm.cs.illinois.edu/redmine/issues/1817


Summary/Count Statistics

I switched from delayed_job_web to this gem for a variety of reasons, and the one thing that I miss is some summary of how many jobs are queued up. When there are a lot, there isn't any pagination even, so it's unclear from the interface how many there are.
Any thoughts on adding that?

That, and a "rerun all failed jobs" option.


Run npx against the ts code instead of the compiled code

Today, we are pushing the compiled code (in dist/) to the repo so that npx can run this code using the shebang + bin value in package.json. It would be great to instead run the ts code directly with npx so we can stop pushing build files.

One way I can think of is programmatically compiling typescript and then running it. The other is to require users to have ts-node and typescript installed.

Yup some of these came up as potential solutions in that initial ts conversion PR. I was against the user requiring packages to run the npx script in favor of it just working out of the box, so something along the lines of the former would be preferred.

I was thinking over the problem we're trying to solve, at least in regards to the 2 solutions we're mulling over - compile at runtime and execute vs execute precompiled file, I think I actually prefer the latter (what we already have).
Pros:

Less code we need to add to do this runtime compile step (both our earlier unsuccessful PRs)
Smaller dependencies means faster npx start up = better UX

Cons:

We have to push dist/

Off the top of my head, pros outweigh the cons here imo. Curious to hear what you think.

As far as I have tried and seen, it is actually impossible to compile and execute because it modifies the program files from within the program which you can't really do.

Another solution would be to just not use Typescript for the utility script and only use it for the core bot files and the command widget, because using Typescript in that will affect the user more, though I don't see that as a solution we would really want.

I suppose that's another option.
I'm okay keeping this as is considering everything we've discussed. I don't think we're gonna get anywhere on this so unless you have objections, I'll close this issue

You can close the issue then.


ERROR when train for bev_det task

Hi! Thank you for your awesome contribution.
After I finished training Occ task I tried for BEV detection task, but I got following error:
...error...
File "/home/user/OccNet-main/projects/mmdet3d_plugin/bevformer/dense_heads/bevformer_head.py", line 451, in loss
    device = gt_labels_list[0].device
AttributeError: 'list' object has no attribute 'device'

I print the content of gt_labels_list like these:
 [tensor([8, 0, 2, 0, 0, 1, 0, 0, 0, 0, 8, 4, 0, 0, 0, 8, 0, 0, 0, 0, 0, 1, 0, 1,
        0, 1], device='cuda:0'), tensor([8, 0, 2, 5, 5, 0, 0, 1, 0, 0, 0, 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0,
        1, 0, 0, 1, 0, 1], device='cuda:0'), tensor([8, 0, 2, 5, 0, 5, 0, 0, 1, 0, 0, 0, 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 5, 0, 0, 0, 0, 1], device='cuda:0')]

It's true that 'list' object has no attribute 'device', could u help me?
Thanks

Solved by this conda env:
conda create -n occnet python=3.8 -y
conda activate occnet

pip install torch==1.9.1+cu111 torchvision==0.10.1+cu111 torchaudio==0.9.1 -f https://download.pytorch.org/whl/torch_stable.html

Other steps same to docs/install.md.
pip install setuptools==59.5.0

python tools/train.py ./projects/configs/bevformer/bev_tiny_det_occ.py \
    --launcher none \
    --gpus=1


Rollover tests are flaky

Build failed:

test (macos-12)

Originally posted by @bors[bot] in https://github.com/itchysats/itchysats/issues/2819#issuecomment-1232642331
This test requires frequent retries on CI - we should investigate whether our code is wrong or the test should be improved

It's interesting that it fails during the setup of the test (during a rollover). Intuitively it seems like this could happen for other tests in which we roll over.

If we assume that it is not related to this specific test then this ticket is s duplicate of #2815

If we assume that it is not related to this specific test then this ticket is s duplicate of #2815

It's unrelated to that one - issue posted by @holzeis shows inability to install global subscriber (likely otel-tests related). I haven't seen that one on the CI yet

It's interesting that it fails during the setup of the test (during a rollover). Intuitively it seems like this could happen for other tests in which we roll over.

I can confirm that I was able to see this error in a different rollover test locally!
failures:
    liquidation::given_rollover_when_oracle_attests_long_liquidation_price_can_liquidate
    rollover::given_rollover_completed_when_taker_fails_rollover_can_retry

I have managed to get more of relevant logs:
TL;DR: Msg1 one for the rollover does not seem to arrive to the other party, and the rollover fails.
Curiously, I can only see this behaviour under load (when running the whole test suite) - not when the test runs on its own.
2022-09-01T09:45:28.703969Z  INFO xtra_libp2p_rollover::current::taker: Rollover proposal got accepted order_id=71275183-8880-4515-9bee-bac4d0d99b9f
2022-09-01T09:47:07.964784Z ERROR tokio_extras::time: Future timed out err=deadline has elapsed
2022-09-01T09:47:08.007924Z  WARN fallible task handle_error{err=Expected Msg1 within 60 seconds}: model::cfd: order_id=71275183-8880-4515-9bee-bac4d0d99b9f peer_id=Some(12D3KooWPFiN2wPNUakjsGwxz16yRWXewwEmD43rMWN85ptA9P1c) Issuing event: RolloverFailed with: Expected Msg1 within 60 seconds: deadline has elapsed
2022-09-01T09:47:08.072740Z  WARN fallible task handle_error{err=Empty stream instead of Msg2}: model::cfd: order_id=71275183-8880-4515-9bee-bac4d0d99b9f peer_id=Some(12D3KooWSqZL6TmAx4pHFB2fS1id1yPXeVRF6y386QjrAP5JEhoy) Issuing event: RolloverFailed with: Empty stream instead of Msg2
[daemon-tests/src/rollover.rs:64] &maker_cfd.state = Open
[daemon-tests/src/rollover.rs:64] &taker_cfd.state = Open
thread 'liquidation::given_rollover_when_oracle_attests_long_liquidation_price_can_liquidate' panicked at 'assertion failed: `(left != right)`
  left: `01e6742ffa6c2e7714b8b787ab7dfb2e55439729484a019399f2320efa751a9b`,
 right: `01e6742ffa6c2e7714b8b787ab7dfb2e55439729484a019399f2320efa751a9b`: The commit_txid of the taker should have changed after the rollover', /Users/mariusz/coblox/source/itchysats/daemon-tests/src/rollover.rs:66:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread 'liquidation::given_rollover_when_oracle_attests_long_liquidation_price_can_liquidate' panicked at 'Any { .. }', daemon-tests/tests/main/liquidation.rs:52:1

Msg1 one for the rollover does not seem to arrive to the other party, and the rollover fails

How is the Msg1 sent in the tests?

I'm afraid I don't understand the question - it's part of the rollover protocol, and we trigger it from all actor tests

I'm mostly wondering the mechanism by which it is sent. It is my understanding that in the app itself, libp2p is used to send Msg1 over the network. Is this still the case for the tests, or is it mocked somehow?

Yes, it's proper libp2p - we choose ports at random at do it expertly same as in prod. We mock wallet, Oracle, quotes etc

I recorded https://github.com/itchysats/itchysats/issues/3027 as separate issue which is related to this ticket, but it is a distinct problem so I opened a separate ticket for it :)

This project is unmaintained


install folx told symlink source is not there

Hi,
I try install folx but told：
$ brew update
Updated Homebrew from d9cc3152 to d2b3ad0b.
==> Updated Formulae
python	 python3
$ brew cask install folx
==> Downloading http://mac.eltima.com/download/downloader_mac.dmg
Already downloaded: /Library/Caches/Homebrew/folx-latest.dmg
Error: It seems the symlink source is not there: '/opt/homebrew-cask/Caskroom/folx/latest/Folx 3.app'

Mac： 10.10.1

Thanks for the report. The issue was fixed in #9322.


Do not highlight function arguments in Python

I feel like arguments to functions should not be colored (especially with the same color as the function itself!), as this can lead to confusion.
For example, here's some code to demonstrate the issue:

At a glance, it is unclear that prev_x is a variable while babylon() is a function.

I have found the fix to the problem... removing "source.python meta.function-call" from line 1004 in /themes/nord.json.
If you would like I can submit a PR sometime this weekend.

@Al2Me6 Sorry for the long stale state.
Thanks again for your report and fix :+1:
It works fine so I've created PR #113 to get this into the next release version.


Progress reporting introduces large performance hit

I recently discovered that one of my algorithms which I thought was long running (~7min), was actually quite fast when I disabled the progress reporting (15s!!!). This doesn't particularly surprise me since the indicators need to call std::flush to update the output stream, and doing so repeatedly with small intervals is not very efficient.
I wanted to open a discussion about if and how this might be mitigated in the library. I'm trying to think of solutions that don't involve threads, since that's not necessarily portable across platforms.
My initial idea would be to add an option UpdateType with values Eager or Interval. The former would update the stream as soon as progress is updated (the current behavior). The second would only update if a specific time interval (another option, UpdateInterval) has elapsed since the previous update. This should improve performance for all processes which tick faster than the specified interval. However, for processes which tick slower than the update interval, you'll probably end up with some sort of update aliasing, which I think would manifest as irregular updating? In that case, though, I don't know why you wouldn't just use Eager mode. Also, this probably would not be useful for the Indeterminate Progress Bar.
And in case this needs to be said, if this or some other idea seem reasonable and within scope, I'd be happy to contribute them.

Not incurring a big performance hit to report progress is a definite requirement (for me at least). I do not think you even need to have an UpdateType option. I think we could get by with a single option UpdateInterval : chrono::duration . When it is 0, then you update all the time. When it is non-zero, then you use an additional data member, last_update_time and chrono::steady_clock::now() to see if it is time to update.
Have you experimented with any changes to reduce the performance hit yet? I am not that familiar with the indicators implementation, so I would be glad to work with you on this. As I said, I cannot use a progress reporting mechanism that is going to incur a significant performance penalty or block a thread in any way. So I either need to do something to indicators or keep looking for a new solution.

As my algorithm was fast enough that I could just remove the progress usage in my codebase, this became low priority for me and I haven't tested anything, preferring to wait to get some sort of feedback on the interface design.
I like the chrono::duration idea. It simplifies the interface in an intuitive way. One thing I'm noting now to help me remember during implementation, the progress output should always get printed for the final tick/set_progress/mark_as_completed call.
I'm under a deadline for the next few weeks, so I probably won't get to look at this seriously for a little bit longer. If you wanted to take a stab at it, the code is pretty self explanatory. I'd probably start by adding a check to print_progress() in include/indicators/block_progress_bar.hpp.

I was running into the same issue.
I have an indicator with max progress in the millions/billions. So I was printing the progress a lot even when there was not much visual change.
I have another idea to reduce the printing load that is not time based. Which should be faster since getting the time is a system call.
My solution aggregates progress in larger chunks and adds a progress granularity option. A granularity of 100 means printing every 1%, granularity of 1000 means printing every 0.1%.
When the max, min progress and granularity is set the indicator calculates the amount of progress that has to be made until it prints again.
When the progress is set it simply compares to the needed amount.
An implementation can be seen in this branch specifically this commit.

Weirdly, this issue just popped up for me again in my code within the last week. Guess it's a good time for people running long running tasks.
From a UX perspective, I personally think I'm more interested in having the bar update the eta after it reaches a specified printing interval rather than waiting for it to report on a percentage. Particularly with long running tasks, the user always thinks it's hung. Is it hung at 1% or just taking a long time to get to 2%? Updating something in the progress bar helps that. I haven't profiled it, but I also think getting the system time is probably marginal compared to the current time spent flushing the buffer.
Anyway, I also see the merit in your approach. Not sure how compatible the two ideas are given the current code, but seems at least possible.

In my case, I got the performance back by calling set_progress only when I needed to:
int current_pct = static_cast<float>(current_progress) / static_cast<float>(total) * 100;
if (current_pct > previous_pct){
    progress_bar.set_progress(current_pct);
}
previous_pct = current_pct;

It would be nice if the framework could have similar logic internally.


I have a valid ICO but it wont load

ERROR:root:Some trouble with the icon (E:\SilverAlerts\icon.ico): (0, 'LoadImage', 'No error message is available')
As stated above, that is the error message i get
toaster.show_toast("No Mans Sky", "Silver Deposit Ready", icon_path=r"icon.ico")
Thats the line

same - did you find a solution?

Mine is inside assets folder, not in root, so my path is assets\notify.ico
Here is the code snippet:
def notify(title, msg):
    toaster = ToastNotifier()
    toaster.show_toast(title,
                       msg,
                       icon_path='assets/notify.ico',
                       duration=2,
                       threaded=True
                       )

Hope this helped!

this doesn't work for me :( here's what i get :
ERROR:root:Some trouble with the icon (C:\Users\osty2\Documents\python\pyproj\mains\doing\atendance-app\notification-test\assets\1.ico): (0, 'LoadImage', 'No error message is available')

this doesn't work for me :( here's what i get :
ERROR:root:Some trouble with the icon (C:\Users\osty2\Documents\python\pyproj\mains\doing\atendance-app\notification-test\assets\1.ico): (0, 'LoadImage', 'No error message is available')

Could you share the code in here or in pastebin or the link to your github repo if it's public? ☺

Could you share the code in here or in pastebin or the link to your github repo if it's public? ☺

from win10toast import ToastNotifier
def notify(title, msg):
    toaster = ToastNotifier()
    toaster.show_toast(title, msg, icon_path='assets/1.ico', duration=2, threaded=True)

notify(title='hi',msg='msg')

from win10toast import ToastNotifier
def notify(title, msg):
    toaster = ToastNotifier()
    toaster.show_toast(title, msg, icon_path='assets/1.ico', duration=2, threaded=True)

notify(title='hi',msg='msg')

import win10toast
toast = win10toast.ToastNotifier()
toast.show_toast("BiliBili Live Danmaku Notify", "test", "test.ico")```

Error:
```ERROR:root:Some trouble with the icon (D:\home\Desktop\wg\temp.ico): (0, 'LoadImage', 'No error message is available')
WNDPROC return value cannot be converted to LRESULT
TypeError: WPARAM is simple, so must be an int object (got NoneType)```


Does the element explorer work for non angular pages?

If so, could you explain how to make it work? I'm currently getting the following error:

list(by.id('username'))
There was a webdriver error: undefined undefined

I have tried this with the version 5.1.2 of protractor and am experiencing elementExplorer not workign for non angualr applications. I keep getting there error "E/protractor - Could not find Angular on page https://www.meetup.com/LeedsJS/?_cookie-check=9f3Ali7VJ-b1u1sm : retries looking for angular exceeded" even though I have browser.waitForAngularEnabled(false)
All works fine without elementExplorer flag


Hitting "Esc" does not close the exposé if Browser has keyboard-focus

Instead the menu opens:

Again, we tried to reproduce this bug on all Windows, MacOS and Linux systems. Unfortunately, we didn't succeed...