Filter rolloff only accepts numeric input

Cannot use a string to set filter rolloff, string has to be evaluated to an integer.

Do you have an example of where we would need to use a string instead of a number? Currently the documentation defines it as a number. I'm not sure why it would be better to use a string instead.

An example would be helpful!
Trying to use the value of an HTML dropdown
<select id="hpr0"	value="=-24">
    <option selected="selected" value="-12">-12</option>
    <option value="-24">-24</option>
    <option value="-48">-48</option>
</select>

	$("#hpr0").on("change", function(){
		cymbal["highPass0"].rolloff = parseInt($("#hpr0").val());
	});

I thought it might not be hard to add something that checks and sees if the string is "-12" "-24" or "-48" before rejecting it, and that it might vibe with the flexibility that score currently offers.

that's a pretty good use case, but it seems just as simple to have it parse the string before passing it to the filter rolloff (like you did) as it would be to do that internally. plus there's a sort of inconsistency of passing in a string and getting back a number.
for example:
filter.rolloff = "-48";
filter.rolloff; //returns -48 (as a number)

I think this sort of thing makes more sense for the score because the Time typedef encompasses both strings and numbers. if rolloff takes a number and a string, then the most consistent thing would be to allow all numeric values in Tone to also accept a string in the form of a number; i'm not quite convinced that this would be necessary or useful at this point.

Good point!
I suppose since rolloff doesn't take continuous values it seemed to make sense it would parse strings since -12, -24 etc. seem to represent names more than numbers. Doesn't sound worth it.

that's true. so it would merit an enumeration type rather than a numeric value...
thanks for the dialogue around API considerations.
I'm convinced.


chore: bdd-spring-1572919720 to 0.0.1

chore: Promote bdd-spring-1572919720 to version 0.0.1

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approvers:
If they are not already assigned, you can assign the PR to them by writing /assign  in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


Video Discussion Feedback - Meltano Exploration - Founder Redesign Proposal and Brain Dump

Migrated from GitLab: https://gitlab.com/meltano/meltano/-/issues/1325
Originally created by @derek-knox on 2019-11-26 22:33:07

The goal of this video (https://www.youtube.com/watch?v=Dr0_yUBWvWk&feature=youtu.be) is to help answer one thing:
Is this the minimal experience our founders need and want?
I created this issue as a recorded SSOT for shared thoughts and discussion.

View 3 previous comments from the original issue on GitLab


Fix gf180mcuC xschemrc

The current xschemrc for gf180mcuC (likely also the other versions A/B/D) does not seem to work properly, see https://github.com/iic-jku/iic-osic-tools/issues/9.
The proposed fixes to xschemrc can be found in the referenced issue.

Thanks for the hint, I opened an issue over there: https://github.com/google/globalfoundries-pdk-libs-gf180mcu_fd_pr/issues/112

I think we can close the issue then here.


Re-entry problem

This PR adds a test to show crashing behavior. I have a solution ready, but wanted to discuss options first.
The Problem
new_callback (and by extension wrap_callback) take a closure, whose state has to be stored somewhere. Currently, it’s stored in a RefCell that is leaked via Box::leak. However, the closure is FnMut, which means the closure’s state needs to be mutated. RefCell::borrow_mut allows this to work by deferring the borrow checks to runtime.
However, in a re-entrant scenario (closure is invoked from JS, closure calls back in to JS and JS calls back into the same closure), the runtime borrow checker of RefCell will panic. This is, in my opinion, unexpected.
Solution
The solution I have tested is to change the closure from FnMut to Fn. That way, we can ditch the RefCell and just use Box::leak to get a *'static const F. If a developer wants to mutate state, they can still resort to RefCell or Mutex or similar mechanisms to do so.
If we change the existing APIs, it is arguably a breaking change. Adding new APIs that use Fn instead of FnMut seems clunky but allows backwards compatibility.
Open to other suggestions.

This is unfortunately one of the most fragile pieces of the bindings. It's also a bit unfortunate that currently we require leaking and 'static lifetime; I attempted to fix some of this by trying to attach the lifetime of the callback to the context. That approach is probably the one I'd suggest we go after here, but it's definitely more involved than your suggestion.
I think that breaking changes are fine, especially if it means fixing issues like this one; in that sense, in the spirit of prioritizing correctness first, I agree that your approach is probably the best to fix the issue here. Do you mind pushing your fix?

@saulecabrera pushed!

Please don't forget to update the CHANGELOG file and crate version before merging

Changelog is updated. What version should we do? v4 for breaking change? Or is this small enough to warrant a 3.1.0-alpha.2?

Yeah 4.0.0-alpha.1

Now that https://github.com/bytecodealliance/javy/pull/618 has landed, I believe we no longer have this issue, I'll go ahead and close this PR.


What are the differences between "cls_outputs" and "pred_class_logits" in embedding_head?

As the title, what are the differences between them?
Are they the same when the classifier is linear?

There is no difference when using softmax classifier, but they are different when using margin-based softmax, such as arcface and circle softmax.

So what are the exact differences between them?
Thanks.

There is a suggestion:
replace the  function cross_entropy_loss parameter name pred_class_logits to cls_outputs

I will take your suggestion.


/report Problem

Hey,
if i try to /report (http://<IP_ADDRESS>:8000/report) i get this Error.
Anybody know whats wrong ???

Are you sure you have
REPORT_SINCE = datetime(2016, 7, 29)
In your config.py?

Same issue. REPORT_SINCE = (2016, 7, 29) is present.

@Glennvd thx you helped me... now it works.
I didn´t had the "datetime" in that line
-> REPORT_SINCE = datetime(2016, 7, 29)
and this line was also missing
-> # coding: utf-8 from datetime import datetime
With that config it works now:
coding: utf-8from datetime import datetime
DB_ENGINE = 'sqlite:///db.sqlite'
MAP_START = (##.######, #.######)
MAP_END = (##.######, #.######)
GRID = (1, 3)
CYCLES_PER_WORKER = 3
LAT_GAIN = 0.001
LON_GAIN = 0.0015
AREA_NAME = u'test'
ACCOUNTS = [
('#####', '#####', 'ptc'),
('#####', '#####', 'ptc'),
('#####', '#####', 'ptc'),
]
TRASH_IDS = [13, 16, 19, 21, 41, 96]
STAGE2 = [3, 6, 9, 12, 15, 18]
REPORT_SINCE = datetime(2016, 7, 29)


README.md typo

missing $ on ExtremeNet_ROOT in call to git clone

Thanks for pointing it out! We have fixed this.


The Simulation

What we need is a simulation, just like an RL environment. This will be an episodic environment, and it will represent 1 week. It will not take the form of an MDP, as you saw in the video. Rather, we'll be simulating something where the MDP is only implicit. Here are some things to know about the simulation:

Region: Our 'region' will be represented as a 2D plane. x varies from 0 to 1 and y varies from 0 to 1. Within this region, ride requests will appear, drivers will be present to meet ride requests and money will be made as rides are completed. We can say that .1 = 1 mile.
Time. Time will be represented discretely as each minute over 1 week. So minutes are indexed as 0, ... ,60247 - 1. If this turns out to be computationally expensive, we may lower the granularity later, to say, every 5 minutes or so.
State. The state of the problem is region + time.
Riders: We have R riders. These are entities that have their own price elasticities and they produce ride requests. The reason to have riders and not just ride requests is because we will want a long term price effect in here. Something to the effect of.. "if a rider is shown many expensive rides, they will produce fewer ride requests in the future". Also, accepting expensive rides may change their future price elasticities. We should also use buckets of riders who have different behavior. Maybe we have riders who are party-time goers. Others are commuters.
Ride requests: Riders emit ride requests. Requests appear at a moment in time. They have a starting destination and an ending destination. They take a certain amount of time to complete when matched, which will be a simple function of the straight line distance. These need to be randomly generated and the distribution parameters should depend on the parameters of the group of riders from which the rider is from. Also, ride requests should appear according to a within-day seasonality (rush hour, lunch, evening, night). I'd find some public transport data that is suggestive of this. You don't need to incorporate the data directly; it could just be informative. Also, there should be a weekly seasonality. Friday should be different from Monday which should be different from Saturday, etc.. Friday and Saturday night should be exceptional.
Drivers: Drivers sit idle in some region. It could just be a sub-block from the region (e.g. y in [.1,.2], x in [.4, .5]). They start idling at some random moment in time (but it should have some distribution - e.g. drivers shouldn't be just as likely to idle at 2AM as they are at 1PM). You don't need to consider groups of drivers, like we did with riders. If a request appears in their region and it hasn't been claimed by another driver, they need to drive towards the ride requests and perform the trip. Then they are in the new region of the ride request destination. Travel can be done at some constant speed. The driver also has their own supply elasticity.
Pricing:  The price of a ride is: price_of_ride = c + p_per_min * ride_minutes + p_per_mile * ride_miles, where c is some constant. The policy is f and the goal is to learn f: c , p_per_min, p_per_mile = f(x_ride_request_start, y_ride_request_start, time_of_week). For every completed ride, Lyft makes .3*price_of_ride.
Acceptance: Given a ride_request and the availability of drivers, we match the ride_request with any driver in the grid, if there is one. (Note: I say 'any' b/c matching is a difficult process. Even just doing the nearest driver may involve some heavy computing, and I don't want to do that. Just match within the grid) With a match, we calculate the ride price. The ride_request is accepted by the rider given a sigmoid conversation probability, which takes 2 parameters, indicative of their price elasticity. Call them a and b. acceptance probability = sigmoid(a + b*price_of_ride). b is negative. elasticities are implicit in this representation. Don't worry about producing elasticities explicitly. We can just talk about ride's price sensitivity in terms of their a and b's. We will also have a driver acceptance probability, which is like sigmoid(a + b*price_of_ride) as well. b here would be negative. A ride is accepted if both the rider and driver accept the match. Second thought, this is a bit too simple. Drivers really care about their earnings per hour and riders value longer trips more. So in this model, long rides wouldn't happen (because riders would see them all as too expensive most likely). So, we may need to evolve this a bit.
Reward: Lyft's reward for the week is the sum of .3*price_of_ride across all completed rides. This is an undiscounted reward.

Learning
The goal is to optimize reward. Over many simulated weeks, we should see Lyft's reward improve. So f should depend on some parameters theta, and then we should do stochastic gradient descent, a la 'policy gradient methods'. Since there's a lot of sampling in this simulation, gradient-descenting through that might not be easy. To do this, we could 1) use the reparameterization trick (which I can explain) or 2) allow the model to know the drivers and rider elasticity parameters. This way we could construct a differentiable log likelihood that is equivalent in expectation to the reward of the simulation. This is totally cheating, but it's akin to something you might do in reality (e.g. estimate elasticity parameters via experiments and then use this routine, accepting that the routine is just a model of the real environment).
Other considerations
The simulation needs to be as fast as possible. So try to compute everything you can in large arrays. This might be complicated by somethings being necessary sequential/dependent on the past. Things like the movement of the driver after a rider is accepted. I could see that being something we remove, for the sake of speed. Also, we should be using PyTorch for autograd.
Bonus stuff

It might be interesting to make the drivers RL agents as well. What happens in the steady state when both drivers and lyft optimize profit? Given how much there is in the above, I don't suspect we'll get to this.

To Do
@liux3372 What would help is for you to tell me how you would do this. Tell me about the Python classes you'd create, what they'd do and how everything we could together to create a learned policy. I'd like us to converge on an implementation plan before you start executing.

Thank you giving an initial requirements, here are several questions in terms of the setup.

What are the common practices for the distributions of number of riders and number of drivers based on time of the week and time of day.
Is there any paper or real data for reference?

Shall I sample delta R and delta D for every 15mins or so. R and D will add any delta R or delta D sampled(could be negative) and R will decrease based on finished trips.

What would be a good number for max_R and max_D at any given time?(Then we can do vector operations instead of using a loop)

We may add the current distance between the driver and the rider when calculating the acceptance probability for drivers(so that drivers that are more far away tend not to accept)

If a rider’s request was rejected by a driver, shall we randomly ask for another driver?(maybe assume one such request takes 1min, and if there is no driver acceptance in 5mins, the rider leaves away)

If a rider rejects a price, will the rider disappear?

Add the rush hour surcharge to encourage drivers?

Do we use databases? (To store trips, riders and drivers etc.) or it that too complicated.

Let’s align on the system design then we will worry about how to do SGD like you mentioned in the Learning section.

Hey @liux3372, answering your Q's.
'What are the common practices for the distributions ...?'
We don't need to reference papers for this. Just use your intuition. We could say there are R = 1000 riders. 50% are commuters, 20% are party goes and 30% are sporadic. Let's say rider 'r_abc' is a commuter. Then we have a few random values to determine. First, how many requests did 'r_abc' make in the week? That could be a sample of Poisson(lambda). Then, for each ride requests, what time did the ride request appear? Since they are commuters, they should be more likely to take rides between 6-10AM and 4PM-6PM during the week. You could do this by mixing a uniform distribution across all minutes of the week with a gaussians that have humps centered on the commuting hours. Another thing we need a distribution over is the destination. You could make it uniform, but it might be nice to have a circular region in the grid represent 'the city', and so commuters are more likely to go towards to the city. If the grid has some irregularity (e.g. city and airport), that will make for interesting plots at the end. We are trying to create complexity for the RL agent to learn around.
For drivers, there are no buckets of drivers. Drivers sit in a subgrid (e.g. x=[.1, .2], y=[.4,.5]) and wait for ride requests. They can have a random but not-necessarily uniformed distribution over the subgrids. Also, their idle-waiting time should be random, like an exponential random var.
Shall I sample delta R and delta D for every 15mins or ... ?
I see where you're going, but I'd say no. R and D are the number of riders and drivers, so I'm happy to consider those things fixed. If prices are too high, that can make rider less likely to produce ride requests (via some distribution parameter mentioned above). If drivers make too little per hour, maybe they will idle for less time? Idk exactly at the moment.
What would be a good number for max_R and max_D at any given time?
I'd say R = 1000 and D = 100 to start is fine. I like how you are thinking in terms of vector ops up front. We will want to pre-compute the simulation as much as possible in batches of random variables.
We may add the current distance between ..
Smart! I hadn't thought about this. We may factor this in later, but I wouldn't worry about it yet. If matches are far apart, drivers will spend time driving without getting paid, which means their earnings per hour will be low. And maybe that will have some feedback on the simulation (e.g. short idle times later in the week)
Note: Any long term effect actually happens within the same week. Riders/Drivers have no memory between weeks, which makes our life easier.
If a rider’s request was rejected by a driver, shall we...
 Just assume the driver stays idle and the rid request disappears (e.g. they take out an uber ride instead). Whatever you build, the match action should be fast. That's why I'm thinking 'any driver in the subgrid of the ride request'
If a rider rejects a price, will the rider disappear?
No, the rider doesn't disappear. But maybe the rider will be less likely to produce a ride request later in the week?
Add the rush hour surcharge to encourage drivers?
That could be something we add later, but no need at this point.
Do we use databases? (To store trips, riders and drivers etc.) or it that too complicated.
No, the data wouldn't get that big I don't think. Because we will simulate a week, update the policy, throw the data away, re-simulate, update the policy, etc... At the end, we will have a learned policy and then we'll run a few extra simulations to evaluate/inspect its performance.
Some other comments

The sequential nature of this simulation may slow thing down substantially. One in-between option is that riders and drivers update their future behavior only after each day. That way, we could pre-compute most of a full day, then have next-day distributional parameters update, sample the next day, and so on..

a few things to be mentioned for our catchup:
Things I have done(may do more testing and visualization):

I have simulated a week of rider requests which can be done by a second. Each request will be pushed to a min heap by their creation timestamp, then the heap will process the requests, see if both riders and drivers accept then create a trip(by setting the driver to busy and let the driver come to the pickup location) then finally finish a trip(set the driver to idle and put the driver on the drop-off location).

There are 100 drivers and 1000 riders. Each driver has an initial address sampled from the customized probability density function which represents two cities and one airport on the map. Each rider has a home address, additionally each commuter has a work address.
I use rejection sampling to create drivers and riders during initialization.

The ride request follow the below pattern:

Commuters only take ride between home and work addresses on each work day’s rush hours.
Party-goers take a ride between home address and other person’s home address at nights
For sporadic, 50% of time the rider takes a rider from home to a random location, 50% of time is the other way around.

For each round of simulation, each rider follows a Poisson distribution for the number of requests this week.
Different types of riders have a different lambda parameter.
Each request day and request type(leave or return) are sampled without replacement. And according to the request type, the request hour will be sampled with a candidate list of values for each rider type. The request minute is sampled uniformly from 0 to 59.

Things to be done next:

Simulate drivers moving behavior and idle time(needs confirmation)
How to update the policy based on states and actions

Things to be done later:
Rush-hour surcharge
Factor the distance between driver’s location and rider’s source destination on the acceptance probability
Try to optimize in a vector space(instead of using a loop)
Define drivers as agents too

@liux3372 Some follow up things from our car:

You want to simulate the demand side for 1 day in a large batch of arrays. It should be very fast. Similar when all the ride requests appear, their location and their destination. These samples comes from the different ride groups, which are different distributional parameters.
You want to sample the supply side for 1 day in a large batch. It should give you the start times of each drivers idling, how long the idle for (an exponential) and where they are idling.
The matching operations, where we go from the supply and demand batches to the rides, should be fast. To do this, you bucket rider and driver positions to 1 of 16 grid squares, created by dividing each size into 4. Match ride requests with idle drivers by matching on their grid cell. Then just do an arbitrary/random matching within the grid cell.
The pricing function can be deterministic for now. We'll optimize it later.
After one day, we should be prepare for the next day distributional parameters to be updated. E.g., if the ride requests were often reject because they were expensive, maybe fewer ride requests will be taken out the next day?

@liux3372 Also, can you create a PR with your code? No need to merge it yet but I'd like to have a look

I see what you're saying. Do the match every 30 minutes.
We can at least sample the demand side in one day. Say D is a pytorch tensor representing all the demand samples of one day. It could have shape (RR, 5), where RR is a random variable giving the number of ride requests for the day. D[:,0] gives all the times of the ride_requests, D[:,1] gives the x_start, D[:,2] gives the y_start, D[:,3] gives the x_end and D[:,4] gives the y_end. We should be able to generate D very quickly, in either one or five calls of a random sampler.
Similarity, say S0 gives the supply information at the start of the 0-th half hour interval. So we have S0, ..., S47 for the day. These S's, as you were anticipating, need to be produced in sequence. Also S0 first dimension should have length 100, since that's how many drivers there are. S1 will have a short first dimension, since some drivers will be busy. S2 will have less than 100, but it could be more than S1, because some drivers become available again.
Matching should happen at the start of each half hour interval, like M0 = match(D, S0). For this, I'd discretize all ride request starting positions to 0, ..., 15 to represent their grid cell. Do the same for all driver idling positions. Then I think we'd have to loop over each grid cell and then perform the match. The match operations should all be vectorized. That's what was afforded to us by doing the discretization.
I'll let it to you to figure out how M0 impacts S1. That is, how matches of the first half hour impacts the available drivers in the second half hour. It's important that M0 impacts where the drivers are idle in S1. This is where we get some cross-cell dependency.
We should be aware of a few loops we have:

Many, many simulations. A million if we're lucky.
In each simulation, we loop over 7 days.
In each day, we loop over 48 half hour intervals.
In each half hour interval, we loop over 16 cells.

Other thoughts:

If we have to loop over these half hour interval, then the days don't afford us anything. We might as well loop over 48*7 time windows, and update everything. (Actually, I'm not totally sure of this)
When we loop over the 16 cells, that we should be parallelizable. Maybe we'll whip out some fanciness for that.

Hopefully this makes sense. It's always possible there's some crucial detail of the simulation I'm not anticipating.

@Duane321 apologize if this is too long.
To give a mid-week update and see if I'm doing the right things. Feel free to review and comment.
Riders are simulated as a torch vector of (num_riders) * (request_times, start_locations, end_locations)
Each start_locations is a (x, y) position sampled uniformly on the 0-1 grid. (Let's do the cities and airports later)
Each rider will has a lambda for a Poisson distribution to sample the number of requests every day. Those lambdas will be updated based on the number of rejects happened during the week by riders.
Each request_time is sampled either from a normal distribution with mean of the morning peak hours, afternoon peak hours, evening party hours or uniformly to represent different rider types. I take 250 for each types of riders for simplicity (e.g. the first 250 rows in the vector shows the riders who will take rides on a normal distribution with mean of 8 * 60 and std of 60 minutes).
Drivers are simulated as a torch vector of (num_drivers) * (idle_starttime, idle_duration, driver_positions)
Each idle_starttime is sampled with 80% on daytime (7 AM to 10 PM) and 20% the rest of time, with each hour will be picked  equally likely.
Each idle_duration is sampled from an exp distribution with 1.0 / mean_idle_time as the parameter where mean_idle_time is initially set to 180 minutes. Those mean_idle_times will be updated based on the number of rejects happened during the week by drivers.
Each driver_positions are placed on the sub-block 0 to 15 uniformly and each driver's initial position will be randomly assigned within each sub-block.
In terms of matching(work-in-progress), for every 30-min interval, iterate through each sub-block, for rider requests mask on the request timestamp, which has to stay within [idle_start_time, idle_start_time+idle_duration] and the sub-block id; for drivers, update their idle_start_time to the request_time+trip_duration and sub-block id, randomly pick a valid driver(if no valid driver, cancel the request right away), do the match(based on acceptance probs for both parties).
If we have to loop over these half hour interval, then the days don't afford us anything. We might as well loop over 48*7 time windows, and update everything.
We sample number of requests and drivers idle times every day based on their rejects during the week, and we do the matching every 30mins to handle each request and set drivers status(idle or busy).
To update each drivers locations for each day, I intend to create a tensor of (num_driver) * (sub_blocks) for a driver location mapping table. We do matching by taking masks on this table to get drivers in each sub-block. Every time there is a trip happening, the driver's row will be updated to the destination in the table.
I'll keep working on how to parallelize on the sub-blocks.
note, if there are so many requests not able to find even a valid driver, we may consider add more total drivers.

Hey, good work! Just some comments:

Riders are simulated as a torch vector of (num_riders) * (request_times, start_locations, end_locations)

Do you mean ride requests? We need to keep separate the idea of the pool of riders and the requests they produce.

Each start_locations is a (x, y) position sampled uniformly on the 0-1 grid. (Let's do the cities and airports later)

Yes!

Each rider will have a lambda for a Poisson distribution to sample the number of requests every day. Those lambdas will be updated based on the number of rejects happened during the week by riders.

Yes!

Each request_time is sampled either from a normal distribution with mean of the morning peak hours, afternoon peak hours, evening party hours or uniformly to represent different rider types. For simplicity, I take 250 riders each type (i.e. the first 250 rows in the vector are the riders who will take rides on a normal distributed time with mean of 8 * 60 and std of 60 minutes).

This sounds right. It'll help me to see this in a plot. For a type of rider, show me their distribution of requests over the data. That is, if this rider makes a requests, what time is it likely to be in? Note that this given a request is made, when does it happen? How many requests happen is dictated with that Poisson, as you mentioned.

Drivers are simulated as a torch vector of (num_drivers) * (idle_start_time, idle_duration, driver_positions)
Each idle_start_time is sampled with 80% on daytime (7 AM to 10 PM) and 20% the rest of time, with each hour will be picked equally likely.
Each idle_duration is sampled from an exp distribution with 1.0 / mean_idle_time as the parameter where mean_idle_time is initially set to 180 minutes. Those mean_idle_times will be updated based on the number of rejects happened during the week by drivers.
Each driver_positions are placed on the sub-block 0 to 15 uniformly and each driver's initial position will be randomly assigned within each sub-block.

Great, yes!

In terms of matching(work-in-progress), for every 30-min interval, we iterate through each sub-block. For rider requests, we mask on the request timestamp, which has to stay within [idle_start_time, idle_start_time+idle_duration] and the sub-block id; for drivers, we randomly pick a valid driver(if no valid driver, cancel the request right away), do the matching(based on acceptance probs by both parties), and update their idle_start_time to request_time+trip_duration and sub-block id to the destination's sub_block id for those accepted trips.
To update each driver's locations every day, I have an extra vector of (num_driver) * (sub_blocks) to indicate a driver's location. We do matching by taking masks on this vector to get drivers in the same sub-block.
And there is another vector of (num_driver) * (status) to show if a driver is valid(i.e. not on a trip).

This sounds right. I haven't thought about the matching algo at a granularity where I could debug this, so just give it a shot and let me know if anything trips up.

We sample number of requests and drivers idle_start_time and idle_duration every day based on their rejects during the week, and we do the matching every 30mins to handle each request and set drivers status(idle or busy).
I think by doing this way, we simulate the reality quite well and we are able to handle the computing complexity.

Sure, sounds reasonable.

note, if there are so many requests not able to find even a valid driver, we may consider adding more total drivers.

Yes, we will discover that many of these arbitrary values need to be tuned later. We need to anticipate that tuning by making sure things aren't super slow. (We can do a very slow run at the end, with things are properly set).

Thanks @liux3372
This all makes sense. I have some opinions, but I'm not interacting with the simulation, so some of them could be uninformed. I'd rather get to seeing the simulated run first, record the data and make plots. At that moment, it'll be easier for me to spot issues and make suggests. If it's slow, we can save speedups for later. (e.g. maybe we hold off on parallelization until we understand the bottlenecks better?)

@Duane321 pls review the PR when you are available.
at the moment, I created a simulation to record the matched trip happing every day.
What I am going to do next:

have a dump of every demand, supply, and trips for each week, test runtime for 100K weeks.
think of ways to speed up with pytorch if it takes too slow
visualize the data(make another class to analyze it downstream)

e.g. bar plots of number of riders does a driver do per day; density plots of trip start time distribution, trip duration distribution, ride mile distribution; bar plots of acceptance probabilities for riders and drivers, etc.

What we can do later:

set up elasticity (could start interviewing people in the industry).
build at two ways or more to learn the optimal pricing function.
have a dynamic pricing function.

Please lmk if that makes sense, feel free to make comments.


Imports Result in Undefined

These ES6 imports (example: import Linkify from 'linkifyjs/react';)  dont seem to work with create react as they are always undefined.
React v. 17.0.1

Oops, this was a publish error in the latest v3 beta, fixed now in beta.2. Sorry about that.


Installation problems on 3.1.9

I created a clean conda env with JupyterLab 3.1.9 and installed jupyterlab-comments, but I don't see any of the UI elements for the extension. No messages in the browser console. Has anyone tried this combination?

I built the package wrong for 0.1.1. 0.1.2 should install correctly--please let me know if the issue persists.

Just tried this combination; it seems like 0.1.2 fixed the issue in regards to our extension.
To actually get things started with JupyterLab=3.1.9 I had to downgrade the jupyter-server due to a conflict with nbclassic (documented here).
A tangential issue I've noticed is that extensions do not appear in the extensions tab of the UI.


Error page with permissions

I have an error : if I check edit_posts and uncheck the others permissions for the User role.
When I try to access to http://domain/public/posts/4/edit
I can see the post, but when I want to save my modification, I have the error NotFoundHttpException in Handler.php line 131 : No query results for model [App\Post] 4.
In my application I wish to not permit to show a list of posts for an user, but with a given url I want to permit user to edit a certain post.
Can you help me ?

just edit line 1 : ('edit_users') to ('edit_'.$entity)
and line 2: ('delete_users') to ('delete_'.$entity)
i try to pull request to fix that inconsistent


Add Commuter Rail

We have rapid transit yes, but what of the commuter rail?

^, especially with the seemingly never-ending Haverhill / Lowell changes.


Incorrect last commited offset.

Hi, I am trying to publish messages to kafka and process them on demand rather than subscribing and continously receiving messages. Till now I have managed the following

brod:start_client
brod:start_producer
brod:produce_sync : publish messages

The above works fine. Then I try to get the last commited offset for the partition I published to using brod:get_offsets but it always returns the offset of the lastest message that I published. So my question is how do I get the last commited offset and how to I read the message from a particular partition (brod:fetch ?) and ack it later (brod:consume_ack?).

Hi @kansi .
You can only commit offsets to Kafka if you use consumer groups and receive messages continuously. Meaning, standard brod api for consumers.
It is possible to do what you want, but for this you need to use a custom offset storage, e.g. a file or a database.
Code to get message at the latest offset may look like this:
{ok, Pid} = brod_client:get_leader_connection(brod_client_id, Topic, Partition),
{ok, [Offset]} = brod_utils:fetch_offsets(Pid, Topic, Partition, latest, 1),
ReqFun =
    fun(MaxBytes) ->
        kpro:fetch_request(Topic, Partition, Offset, _MaxWaitTime = 30000, _MinBytes = 0, MaxBytes)
    end,
{ok, [#kafka_message{} = Msg]} = brod_utils:fetch(Pid, ReqFun, _MaxBytes = 1024000, Offset).

brod:fetch_offsets is to resolve -1 (latest) -2 (earliest) (or a timestamp) to kafka offset.
brod:fetch is used primarily in brod-cli. not recommended for regular Eralng applications to use
brod:consume_ack is used by subscriber to tell brod_consumer that the message has been consumed, and it's time to fetch/poll more messages from Kafka
To commit offsets to kafka, you should use a consumer group
You can also commit/persist offsets locally by the message-set subscriber, then provide {begin_offset, CommittedOffset + 1} in consumer config for brod:start_consumer

@id I tried exectuing what you suggested i.e.
{ok, Pid} = brod_client:get_leader_connection(brod_client_id, Topic, Partition),
{ok, [Offset]} = brod_utils:fetch_offsets(Pid, Topic, Partition, latest, 1).

But it still returns the offset of the lastest published message rather than the last commited offset. In contrast if I try to use consumer groups it gets the correct offset but then I have no control of which partitions I choose to read from and I also cannot fetch messages on demand.
@zmstone could you suggest how I can specify which partitions to read from when creating a consumer group ? If that is not possbile directly (which I think is the case) could you point to the code that tries to get the partitions and alocated them to the group members.

@kansi if you want to get last committed offset (when using Kafka as offsets storage), you have to subscribe to _consumer_offsets topic, receive and parse messages manually, and record in your app state offset for your consumer group.
Kafka's consumer groups are not designed for the use case you described. It will be a lot of work to get it working.

First of all, brod_utils:fetch_offsets is brod:get_offsets equivalent,
it is to resolve semantic offset (latest | earliest etc) or timestamp to real kafka offsets.
It has nothing to do with consumer group committed offsets.
There is NO API to fetch consumer group committed offsets.
The committed offsets fetch request is only implemented as a part of the consumer
group membership management protocol.
Currently brod only supports 'roudrobin' partition assignment strategy.
i.e. Consumer group leader assigns partitions evenly across all members.
e.g. if consumer 1 and 2 both subscribe to the same topic having N partitions,
when both members are active (the group is balanced), the even/odd partitions
will be assigned alternatively to each member.
2 ways to control partition assignments:

Use {partition_assignment_strategy, callback_implemented} in group config, and implement assign_partitions/3 callback.
Implement the brod_group_member behaviour to have your own partition assignment strategy.
brucke is another group member behavior implementation example

Nonetheless, if you just want a place to store the consumed offsets,
(but not to have a different assignment strategy)
you can always use only one consumer in a group (make a unique group-ID),
then the topic (all partitions) will be always assigned to the same subscriber.

not an issue.
consumer should either track last offsets by themselves or use consumer group.


it fails to install over a vlan tagged lacp bond

TASK [ovirt.hosted_engine_setup : Parse libvirt default network configuration] *********************************************************
fatal: [voyager]: FAILED! => {"changed": false, "msg": "network default not found"}

Libvirt default network is used to temporary bootstrap the engine VM over a NAT network but it's not related to the device selected for the management bridge.
Can you please share the relevant logs?

I'm not sure what the installer is trying to do, so I don't know what are the relevant logs.
Attached is the output of the playbook -v
hosted_engine_deploy_localhost.log

the default libvirt network is absent.
I tried
net-define /usr/share/libvirt/networks/default.xml
then running your playbook again, no go.

Looks like the vm is trying to reach the network services from the libvirt default network. That's not going to work; it's going to get accesses denied all over the place. Can you list the resources it needs so we can allow it to reach them? perhaps make that part of the requirements?

@serverplumber no external access is really required at setup time, if not we have a different issue.

@arachmani , @eslutsky can you please review?

closing the issue, lack of information/logs.


exporter to interface creates network

Issue description:
using an exporter to export to a network unifies two networks
What happens:
using an exporter to export to a network unifies two networks
What you expected to happen:
having the networks still separate
Steps to reproduce:

crate two separate networks N1 and N2
let an exporter from N1 export to an interface of N2
one of the controllers drops, because the networks become one

Version (Make sure you are on the latest version before reporting):

Minecraft: 1.10.2
Forge: <IP_ADDRESS>5
Refined Storage: 1.2.18

Does this issue occur on a server? yes

Not a bug, use a buffer chest or something.


country_select save name as value

is there any way I can save the name as the value or disply name in the view when showing the Country name in the user profile.
Thank you

@Frank004 How did you go about this? I need help urgently. Ain't working for me.


VS Code Configuration Improvements Tracker

To Do

[x] Install flake8 extension
[x] Show whitespace at the end of lines (VS Code setting)
[x] Explore using trunk for all linting (VS Code and GitHub Actions) using ROS native ament lint
[ ] #39
[x] #55
[x] #64

Both extension and whitespace setting done, under PR 110
https://github.com/UBCSailbot/docs/pull/110

Devon has approved and merged to main

I realise my PR 110 was for docs and I forgot to upload my local branch for sailbot_workspace with settings changes, hvae done that and PR made https://github.com/UBCSailbot/sailbot_workspace/pull/68

only one issue left which can track itself, closing the tracker


refactor: simplify CertificateExpiryMonitor to remove queue

Issue #, if available:
Description of changes:
Remove overly complicated Queue which wasn't adding any value.
Why is this change necessary:
How was this change tested:
Any additional information or context required to review the change:
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

@sushantAtAws
I just made another update which just adds GGExtension to all test classes that were missing it. That's the only chage.


Re-enable fuzzer CI build

https://github.com/chipsalliance/caliptra-dpe/pull/360 Disabled the libfuzzer build check due to a compilation issue. Let's revisit this compiler error and see if we can get this check re-enabled.

This went away with https://github.com/google/zerocopy/commit/49749b7dbd6c8723c7cb20546987331d16407e20. Once this commit is released we can pull it in and re-enable the fuzzer.


gipy: new release : bugfix for negative coordinates + experimental powersaving

hi,
i took more time than expected but here is a new release.
it fixes the bug which was reported last time.
i also played a bit with powersaving ideas however since i met the hard reboots i mentioned on the forum i had to pinpoint the problems in a very manual way and it took me way more time than i expected.
i had no time to try a large trip but i used it a few times to go to work (15km) and it seems ok.
normally i would test a bit more before releasing but i'm going to be offline for a few weeks so i guess it's best to release now.

I'm not sure I understand the display thing: Does this means the gipy now "randomly" enables & disables the display backlight? Why don't just keep the backlight disabled like in all previous versions?

i'm not sure what you mean with the backlight being disabled in the previous versions. for me it was always enabled. isn't it enabled by default ? and then disabled when idle ?

note that there is a setting for the max backlight level that you can set to 0. also,there is another setting to turn the screen off completely between segments ends.

Interesting, I think I do understand motive a bit more. Let me tell you about my setup:
The only wakeup source I have enabled is the button, so no wakeup with twist or anything. So for me the default on the watch is backlight off until I enable it with the button.
Until the last gipy version I was just driving with the backlight off and could read the display just fine so for me an automatic turn on of the display is an extra power draw.

i see. i didn't know there was a global lcd settings in the options.
i'm not too sure what's the way to go here. since there is already a 'brightness' option to set the backlight to 0 isn't it good enough in its current state ? that's actually what i use. i also don't want the backlight. i defaulted to 0.5 because i was not sure what a good setting is for an end user.  also you might want to turn the light on at night so you still need a way to turn it on.
i'm not too sure about a 'no changes to lcd' option. because it's kind of confusing to have both a 'no changes to lcd' and a 'brightness' setting.

One way would be to have brightness go from -0.1 to 1 instead of 0 to 1.
In settings < 0 would be formatted as "leave unchanged" and have it handled in the app accordingly.

if you are like me and your default lcd setting is 'no backlight when idle' you might think you are fine with the global setting but you are not. because of the road bumps this kind of  setting will behave badly and it's actually not soo easy to figure it out. and note that this is the default global setting.
that's why if we have a 'no changes to lcd' i would like it disabled by default (by default we change the lcd).
so, that's a possibility but is it worth it ? you'll still need to ajust the settings to your taste. and setting the brightness to 0 will have the same effect.

I'm ok with default to change the brightness as long as I have the option to disable it.
Another idea: We could read the global lcd settings and only do the gipy lcd changes if the wake on twist/face up are enabled.


gfgfdpogdfegedpokbhfg preo

branch was successfully created pull request - https://github.com/JonahJackson1/testing-project-automation/pull/171 was successfully created  label was successfully added


cspyce doesn't compile on MacOS due to lack of swig

It appears GitHub has removed swig from the MacOS runners. We need to somehow install swig during the test action.

Just so it's written down.
Failing image:
Runner Image
Image: macos-14-arm64
Version: 20240422.3
Included Software: https://github.com/actions/runner-images/blob/macos-14-arm64/20240422.3/images/macos/macos-14-arm64-Readme.md
Working Image:
Runner Image
Image: macos-12
Version: 20240412.2
Included Software: https://github.com/actions/runner-images/blob/macOS-12/20240412.2/images/macos/macos-12-Readme.md
Looking at the "included software", it is clear than Swig has been dropped for unknown reasons.  Will investigate the right way to install it ourselves.
[Above info is from clicking on the logs, Clicking on the first item "Set up job", and then opening up the item "Runner Image".]


Can not import faiss-node from Electron.js 'main

Checked other resources

[X] I added a very descriptive title to this issue.
[X] I searched the LangChain.js documentation with the integrated search.
[X] I used the GitHub search to find a similar question and didn't find it.
[X] I am sure that this is a bug in LangChain.js rather than my code.
[X] The bug is not resolved by updating to the latest stable version of LangChain (or the specific integration package).

Example Code
ipcMain.on('create-vector-store', async (event, pathName, folderNameA, folderNameB) => {
...
  const vectorstore = await FaissStore.fromDocuments(documents, embeddings, {})
  await vectorstore.save('/Users/alex/Desktop/ale')
}

Error Message and Stack Trace (if applicable)
(node:15641) UnhandledPromiseRejectionWarning: Error: Could not import faiss-node. Please install faiss-node as a dependency with, e.g. npm install -S faiss-node.
Error: Could not dynamically require "/Users/alexandrosanapolitanos/Desktop/ragmaster/ragmaster/build/faiss-node.node". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.
at FaissStore.importFaiss (/Users/alexandrosanapolitanos/Desktop/ragmaster/ragmaster/out/main/index.js:14851:13)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async FaissStore.addVectors (/Users/alexandrosanapolitanos/Desktop/ragmaster/ragmaster/out/main/index.js:14600:31)
at async FaissStore.fromDocuments (/Users/alexandrosanapolitanos/Desktop/ragmaster/ragmaster/out/main/index.js:14827:5)
at async IpcMainImpl. (/Users/alexandrosanapolitanos/Desktop/ragmaster/ragmaster/out/main/index.js:22090:23)
(Use Electron --trace-warnings ... to show where the warning was created)
(node:15641) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 977)
Description
Hi I am using electron js to create a langchain js application and while I am trying to add my vectors with FaissStore, I am getting this error:
(node:15641) UnhandledPromiseRejectionWarning: Error: Could not import faiss-node. Please install faiss-node as a dependency with, e.g. npm install -S faiss-node.
Error: Could not dynamically require "/Users/alex/Desktop/test/project/build/faiss-node.node". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.
at FaissStore.importFaiss (/Users/... See below for whole error
After trying to:
const vectorstore = await FaissStore.fromDocuments(documents, embeddings, {})
await vectorstore.save('/Users/alex/Desktop/ale')
Now this is very similar it seems to me to the https://github.com/langchain-ai/langchainjs/issues/4027 but unfortunately I am on electron and not next js in order to do the  servercomponentsexternalpackages solution.
I am fairly new on the langchain environment so if I am missing something or you have any suggestions please let me know.
Thank you very much.
System Info
"dependencies": {
"@chakra-ui/react": "^2.8.2",
"@electron-toolkit/preload": "^3.0.0",
"@electron-toolkit/utils": "^3.0.0",
"@emotion/react": "^11.11.4",
"@emotion/styled": "^11.11.5",
"framer-motion": "^11.2.10",
"mammoth": "^1.8.0",
"mime": "^4.0.3"
},
"devDependencies": {
"@electron-toolkit/eslint-config": "^1.0.2",
"@electron-toolkit/eslint-config-prettier": "^2.0.0",
"@langchain/community": "0.2.12",
"@langchain/core": "0.1.57",
"@langchain/openai": "0.0.28",
"@vitejs/plugin-react": "^4.2.1",
"dotenv": "^16.4.5",
"electron": "^28.2.0",
"electron-builder": "^24.9.1",
"electron-vite": "^2.0.0",
"eslint": "^8.56.0",
"eslint-plugin-react": "^7.33.2",
"faiss-node": "^0.5.1",
"langchain": "0.2.5",
"openai": "^4.33.1",
"pdf-parse": "^1.1.1",
"prettier": "^3.2.4",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"vite": "^5.0.12"
}
}

Hey! Unfortunately this may be Node only :( @ewfian may know more.

CC @ewfian but I'm not sure this will work in that environment - was the Dosu answer helpful?

I tried to implement the Dosu answer but I keep getting errors. It's midnight here so I ll try to persist with more effort tomorrow.

@dosu can you please elaborate on where to put the code you suggested?

Were you able to resolve this? I'm not quite getting the instructions.

No I wasnt able to resolve this. Any help would be very appreciated


Muxas/simgrid

This PR is based on #15. It adds support for SimGrid, but SimGrid threads do not work well with Python threads. Therefore, simulation is possible only for a precompiled program.

This pull request moved to #51


license fixed

I have found two files with no license mentions and have listed them in the Notice.

I merged this after reverting some of the files so it can appear in https://github.com/taverna-extras/taverna-perspective-biocatalogue.
Please check your global git config to avoid later checking in ~ backup files :)


SAMPLING_INTERVAL not used when included in the data template

MikroTik devices do not include the SAMPLING_INTERVAL field in the Option Data Sets, instead it's included in the Data Set and defined by the Data Template - the problem is GoFlow2 never looks for or uses the SAMPLING_INTERVAL field in the Data Set, so the SamplingRate field in the output is always 0.
I am not sure if this is out of spec and the MikroTik doing things wrong, but to resolve the issue I had to tweak producer/producer_nf.go:
Add the following in ConvertNetFlowDataSet()
case netflow.NFV9_FIELD_SAMPLING_INTERVAL:
    DecodeUNumber(v, &(flowMessage.SamplingRate))

Alter the line fmsg.SamplingRate = uint64(samplingRate) to prevent overwriting the above with 0:
if samplingRate > 0 {
    fmsg.SamplingRate = uint64(samplingRate)
}

I haven't submitted the above as a pull request as I'm not 100% sure this is the best way to handle this scenario, alongside the existing sampling system logic. I have a pcap if useful.
Sidenote: MikroTik devices seem to send the sampling interval in little endian rather than big endian expected by DecodeUNumber(), so an interval of 256 is actually coming through as 65536 - I'm correcting that at a later stage.

Hi @washcroft,
Thank you for the report, I was aware in the past Mikrotik users were setting a manual sampling rate but didn't know about this. Your fix should be sufficient.
For the second part, I may make sure the field exists in Option Data Template instead of checking for zero.
If possible, do you have a packet capture of a Data Template and Data Set to confirm the endianness and with other values (eg: 24576)? This definitely sounds strange.
Could you also share the model/OS version?

Sure, test this with sdfdsfdsds v23423.
I did test some other values, here are the results in WireShark - happy to share full pcap files privately.
1:256 (should be 256 not 65536)

1:129 (should be 129 not<PHONE_NUMBER>

32:128 (should be 5 not 83886080)

Thank you.
I am hesitant adding it into the producer. This should be supported using the custom mapping options.
Would you be able to test https://github.com/netsampler/goflow2/pull/130 which supports little endian as part of the custom mapping?
You can find the binaries here.
I would also raise an issue to Mikrotik as this does not seem normal.

This should be supported using the custom mapping options.

I have had a quick look at your changes, unfortunatly controlling endianness in the mapping means you're applying an endianness "fix" on every flow exporter, not just the devices/exporters that need it.
Also, it seems the endianness mapping setting is then applied top every integer type field, in this case the Mikrotiks are already behaving as they should on all fields except SAMPLING_INTERVAL so this is likely to cause more issues.
Endianness aside, this is still an issue:

MikroTik devices do not include the SAMPLING_INTERVAL field in the Option Data Sets, instead it's included in the Data Set and defined by the Data Template - the problem is GoFlow2 never looks for or uses the SAMPLING_INTERVAL field in the Data Set, so the SamplingRate field in the output is always 0.

I have had a quick look at your changes, unfortunatly controlling endianness in the mapping means you're applying an endianness "fix" on every flow exporter, not just the devices/exporters that need it.

This is tricky. I want to avoid making filters to apply partial fixes. The aim of mapping is to support enterprise fields rather than fixing bugs.
My suggestion would be to have another instance of GoFlow2 on a different port so the mapping can be applied.

Also, it seems the endianness mapping setting is then applied to every integer type field, in this case the Mikrotiks are already behaving as they should on all fields except SAMPLING_INTERVAL so this is likely to cause more issues.

That's not expected. It's possible I introduced a bug. Did you use the configuration provided?

My suggestion would be to have another instance of GoFlow2 on a different port so the mapping can be applied.

Fair enough.

That's not expected. It's possible I introduced a bug. Did you use the configuration provided?

It's not a bug you introduced - it's the main reason behind opening this issue. The bad endiannes Mikrotik's are using when sending their sampling interval was a side note.

I believe this is resolved.
See https://github.com/netsampler/goflow2/blob/app/refactor/docs/protocols.md#map-custom-fields (#150) also for mapping examples.
Feel free to re-open if I missed something


VS Code freezes if XSLT editor contents is empty - occurs when creating new file or modifying existing file

Issue fixed in 0.3.12 release


Prompt Customization

Is there a way I can customize the prompt that is used with the API to use my own prompt?

Apparently not - the prompt functionality seems to only paste the customized prompts into the chat input field. Sending these prompts as system prompts is a feature I'd like to see implemented as well.

@Arvi65 ,
Can you share an example or elaborate on the use case better?
Thanks

@Adhana952 You know how the app uses the chat api from openai? There's a system role I want to customize to give the ai some knowledge and how to answer the user.


enter safe zone timeout

I downloaded your code and figured out how to get it set up and built using Visual Studio Code. I created my own makefiles in VSC because I could not figure out how to get yours to work. I then figured out how to get the MAC address of my PS4 controller. When I try to pair the pico with the controller, I get the following sequence of debug statements. It appears like the connection is made but then an assertion error occurs. After the assertion, the polling loop hangs. Any suggestions on where to start looking? I may have not included something in my make files. Thanks in advance.
Hello
Version: 7.95.61 (abcd531 CY) CRC: 4528a809 Date: Wed 2023-01-11 10:29:38 PST Ucode Ver: 1043.2169 FWID 01-7afb0879
cyw43 loaded ok, mac 28:cd:c1:08:b2:f1
BT FW download, version = CYW4343A2_<IP_ADDRESS>1.0000_Generic_SDIO_37MHz_wlbga_BU_dl_signed
Starting hid_host_connect (A4:53:85:12:E6:5C)
Connection complete: 0
Max slots changed: 5
buttons: 0000, l: 128,128, r: 128,128, l2,r2: 128,128 hat: 8
Unknown HID subevent: 0xe
buttons: 0000, l: 128,128, r: 128,128, l2,r2: 128,128 hat: 8
buttons: 0000, l: 128,128, r: 128,128, l2,r2: 128,128 hat: 8
buttons: 0000, l: 128,128, r: 128,128, l2,r2: 128,128 hat: 8
SSP User Confirmation Request: 797929
assertion "false" failed: file "C:/Program Files/Raspberry Pi/Pico SDK v1.5.1/pico-sdk/src/rp2_common/pico_flash/flash.c", line 183, function: default_enter_safe_zone_timeout_ms

I solved the problem. I had to remove the multicore, including the library, and then the program ran without the assert.


Licensing

Hi, I'd like to use this code in another open source project, but it currently doesn't have a license. Can you add one?

Done.


✨ Language Server Protocol

The Language Server Protocol defines a cross-editor protocol to obtain rich language features from an external source. Adding support for this to CodeEdit would make it far simpler to port language extensions from other IDEs (especially VSCode), making everyone's life easier :p

I work on two libraries related to Language Server Protocol that could be helpful.
LanguageServerProtocol is low-level protocol support. LSP has a very large spec with a huge amount of types, not all of which map nicely to Swift. This lib wraps up all that.
LanguageClient is a much higher-level abstraction that supports client-server interactions, as well as transparent server restarting.
Now, if you are thinking of some kind of VS Code extension interoperability, I'm not sure how much these will help, as all the VSC stuff is implemented in JavaScript.

Relevant links

https://microsoft.github.io/language-server-protocol/
https://docs.microsoft.com/en-us/visualstudio/extensibility/language-server-protocol?view=vs-2022
https://en.wikipedia.org/wiki/Language_Server_Protocol

Keep

Where are we on this issue? What do we have left to call it done? It may be good to define this issues scope.


[TODO] make terminal interactive while generating project

use bubble tea to take input from the user for: geng new
use bubble tea to take input from the user for: geng gen or geng gen module

DONE | use bubble tea to take input from the user for: geng new

DONE | use bubble tea to take input from the user for: geng gen or geng gen module


Fetch value, chisq, result_type from the result data

In the base class, look for keys value, reduced_chisq, and result_type in the result data returned from _run_analysis, exactly like already done for quality. If they exist, populate the corresponding fields in the analysis result. For the result type, take the experiment type as a default value.
Question: is it OK to take the reduced chisq and display it on IQX as just chisq?

On the same occasion, also handle the T2Ramsey analysis results.

For T1, IQX displays the value. @jyu00 what's the path that begins in a value in the analysis result and ends in the IQX display?

@yaelbh The API endpoint that the IBM Quantum provider interacts with is defined here: https://github.ibm.com/IBM-Q-Software/sw-ibmq-results/blob/staging/docs/api-ref.md. The IBM Quantum web app interacts with the same API endpoints.

The chisq shown on IQX is intended to be a reduced chi squared. So, users should be looking for a value near 1.

Closing since we are currently storing reduced chisq as chisq in results and it is now documented as such.


sbt new with giter8 template leaving behind "project" and "target" directories

steps
sbt new scala/scala-seed.g8
problem
leaves behind a target and project folder
sbt new scala/scala-seed.g8
[info] welcome to sbt 1.4.9 (AdoptOpenJDK Java 11.0.7)
[info] loading global plugins from /Users/kbreidenbach/.sbt/1.0/plugins
[info] set current project to tmp (in build file:/Users/kbreidenbach/Development/scala/merchant-data/tmp/)
[info] set current project to tmp (in build file:/Users/kbreidenbach/Development/scala/merchant-data/tmp/)

A minimal Scala project.

name [Scala Seed Project]: new-proj

Template applied in /Users/kbreidenbach/Development/scala/merchant-data/tmp/./new-proj

ls -l
total 0
drwxr-xr-x  6 kbreidenbach  IDINE\Domain Users  192 Mar 31 16:30 new-proj
drwxr-xr-x  3 kbreidenbach  IDINE\Domain Users   96 Mar 31 16:30 project
drwxr-xr-x  4 kbreidenbach  IDINE\Domain Users  128 Mar 31 16:30 target

This was fixed for an earlier version, but appears to have come back. Currently using sbt 1.4.9
expectation
Should only see the new project directory created on completion.
notes
This was once fixed with this issue, but I'm getting again now with SBT 1.4.9
https://github.com/sbt/sbt/issues/2835

Thanks for the report. I'll reopen #2835.


Correct Figure number reference.

Not sure if I did it in the right pace, or this is corrected upstream.
Awesome article.

Ah, nice catch! Looks like we mixed up figures 7 and 6 references in the text. Thanks @rowanc1!

Just committed the one you found and it's pair. I'll close this PR now.

Sounds good, awesome article again. Really enjoyed it!


Get rid of UIApplication.sharedApplication().beginBackgroundTaskWithExpirationHandler()

The example currently directly calls it to make sure the app is awake long enough to forward things.
https://github.com/contentful-labs/Stargate/blob/master/Example/Phone App/AppDelegate.swift#L21-L22

Even if we need to keep doing this, it should be handled by Stargate itself, not in application code. Unfortunately, due to Stargate also being linked into app extensions, this fails because UIApplication isn't available there.


top-level/aliases.nix warning about alias use broken

Issue description
There is a warning in top-level/aliases.nix that is supposed to error out if an alias is used inside all-packages.nix but it does not work currently.
Steps to reproduce
Change
wine = winePackages.full; to wine = wineFull
run
nix-env -f . -iA wine
observe no error message.
Change checkInPkgs in aliases.nix to check "self" instead of "super" and observe the error message comes appears:
$ nix-env -f . -iA wine
error: Alias wineFull is still in all-packages.nix

cc @matthewbauer feature introducer
cc @ElvishJerricco feature editor


Replace Programme in the site menu with the flat schedule

Also

Adds a switcher to choose between flat and tabular schedule
Moves the flat schedule to /schedule/
Moves the tabular schedule to /schedule/tabular

This means /programme/ is no longer reachable by an obvious link.
Given we're T - 10 days & only the lunchtime CfP remains - is that a problem?

I think we shouldn't change the location of the tabular one that just confuses people. Better is:
/programme - the flat schedule, which links to ->
/schedule - the tabular schedule
/callforevents - call for lunchtime events

By that I mean people have been looking at /schedule for the table for months, so lets call the "flat schedule" programme so we don't have to use these adjectives all the time.

Could even use namespaces a little for the new page:

/programme - the flat schedule, which links to ->

/schedule - the tabular schedule
/programme/callforevents - call for lunchtime events

Zeth, I disagree.

Having different words ('programme' and 'schedule') seems more confusing to me, than different adjectives applied to a single word ('flat schedule' and 'tabular schedule'). The former implies to me they are distinct things, the latter implies they're different views of one thing.

I worry we'd get questions like

Why is there a programme and a schedule? Which should I follow?

I don't think moving the tabular schedule from /schedule to /schedule/tabular would confuse people. However, if it did then wouldn't moving /programme to /programme/callforevents confuse people as well?

Well on your point 2, the amount of people that will care about submitting
a new lunchtime event is between 5 (in my dreams) 0 (in reality) whereas
400+ people have been looking at table at /schedule.
Cool URIs don't change and all that.
On 8 September 2015 at 13:07, Alex Willmer<EMAIL_ADDRESS>wrote:

Zeth, I disagree.

Having different words ('programme' and 'schedule') seems more
confusing to me, than different adjectives applied to a single word ('flat
schedule' and 'tabular schedule'). The former implies to me they are
distinct things, the latter implies they're different views of one thing.
I worry we'd get questions like
Why is there a programme and a schedule? Which should I follow?

I don't think moving the tabular schedule from /schedule to
/schedule/tabular would confuse people. However, if it did then
wouldn't moving /programme to /programme/callforevents confuse people
as well?
—
Reply to this email directly or view it on GitHub
https://github.com/PyconUK/pyconuk.org/pull/151#issuecomment-138533783.

For me the flat schedule is more about forward planning what you want to look at when you are relaxed, whereas the table is for looking in a rush. So the table needs to be easily findable where people expect it.
Incidentally, the original plan before we separated out the abstracts (for ease of community editing) was that it would be a long form version.

A data point: the flat schedule renders far better on mobile devices than the tabular one.
For that alone, I'm in favour of Alex's changes.
Anybody else got an opinion?

A data point: the flat schedule renders far better on mobile devices than
the tabular one.

I am not advocating not having the flat one. I am just advocating not
changing URL of the old one.
On 8 September 2015 at 20:19, Peter Inglesby<EMAIL_ADDRESS>wrote:

A data point: the flat schedule renders far better on mobile devices than
the tabular one.
For that alone, I'm in favour of Alex's changes.
Anybody else got an opinion?
—
Reply to this email directly or view it on GitHub
https://github.com/PyconUK/pyconuk.org/pull/151#issuecomment-138674841.

OK, so how about:

keeping the tabular schedule at /schedule and the flat schedule at /schedule/flat
using the nice links that @moreati's added to allow people to easily switch between the two
replacing Programme with Schedule in the navbar, which links to the flat schedule

?

Perfect.
On 9 September 2015 at 11:02, Peter Inglesby<EMAIL_ADDRESS>wrote:

OK, so how about:

keeping the tabular schedule at /schedule and the flat schedule at
/schedule/flat
using the nice links that @moreati https://github.com/moreati's
added to allow people to easily switch between the two
replacing Programme with Schedule in the navbar, which links to the
flat schedule

?
—
Reply to this email directly or view it on GitHub
https://github.com/PyconUK/pyconuk.org/pull/151#issuecomment-138861775.

Agree with @zeth on @inglesp's suggestion. Now implemented in 5df9975.


 option

An other suggestion will be to add  option.
Because when you start a new project from a fork of an existing one, you generally remove all the tags and don't want all the commits from the original be added to your log, as it is not pertinent and make the process to generate the log muuuch longer.

@Sami32 I just released 1.1.0-rc5. Can you test <startCommit>?

Done, and it work great +1
Thank you very much for that feature add that our new project need 😄


[Feature][ThreadPool]Add Web Page to display thread's stats

Proposed changes
Support display thread's stats in BE's website.Ref ISSUE: #4085

add some methods to get thread's stats from Linux's system file in env.
support get thread's stats by http method.
register page handle in BE to show thread's stats to help developer position some thread relate problem.

Types of changes
What types of changes does your code introduce to Doris?
Put an x in the boxes that apply

[ ] Bugfix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Documentation Update (if none of the other choices apply)

Checklist
Put an x in the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of them, don't hesitate to ask. We're here to help! This is simply a reminder of what we are going to look for before merging your code.

[x] I have create an issue on Doris's issues, and have described the bug/feature there in detail
[x] Commit messages in my PR start with the related issues ID, like "#4071 Add pull request template to doris project"
[x] Compiling and unit tests pass locally with my changes
[x] I have added tests that prove my fix is effective or that my feature works
[x] If this change need a document change, I have updated the document
[x] Any dependent changes have been merged

This page look like

For reviewers, the second commit only include code format, the core logic is in first commit

Hi @WingsGo Could you please add a document for this new feature?
I suggest docs/zh-CN/administrator-guide/ui/be-ui.md

OK, I will add it later.

Hi @WingsGo Could you please add a document for this new feature?
I suggest docs/zh-CN/administrator-guide/ui/be-ui.md

OK, I will add it later.

OK, maybe next PR?

Hi @WingsGo Could you please add a document for this new feature?
I suggest docs/zh-CN/administrator-guide/ui/be-ui.md

OK, I will add it later.

OK, maybe next PR?

OK~~


rename LinkedHashMap into Map

cc @qazxcdswe123 @Yoorkin

Pull Request Test Coverage Report for Build 1582
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 88.629%

Totals

Change from base Build 1580:
0.0%

Covered Lines:
2346

Relevant Lines:
2647

💛  - Coveralls


Detect which view is selected

Hello, I would like to know if it is possible to know which Item is selected in CarouselView.
I already searched the documentation and found nothing
greetings

) you was not attentive
SelectedItem property
Or
SelectedIndex
On Tue, Sep 3, 2019 at 19:03 humbertoo98<EMAIL_ADDRESS>wrote:

Hello, I would like to know if it is possible to know which Item is
selected in CarouselView.
I already searched the documentation and found nothing
greetings
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/AndreiMisiukevich/CardView/issues/266?email_source=notifications&email_token=ACNH4DT6ITLIA4LHCU3E6CLQH2DGDA5CNFSM4ITIEIWKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HJA4AJQ,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACNH4DUJKARCMW5B25HJ25LQH2DGDANCNFSM4ITIEIWA
.

--
Andrei Misiukevich
Lead Software Engineer at On The Spot Development
*mobile: *+375 29 <+375%2017%20389%200100>303 40 07   Email:
<EMAIL_ADDRESS>Skype: csi.andreymisyukevich
Minsk, *Belarus *(GMT+3)

Hmm, probably i should update doc (sets or gets)

Hello, Thanks for the availability.
Yes I saw that there is this action but I would like to know if there is any that detects that selectedindex has change

@humbertoo98 ah) yeah) since SlectedIndex and SelectedItem are bindable properties, they will be notified about any changes. They work to both directions

Thanks a lot for the help.
Lengths


[Backend API] Implement endpoint for new resource details

Based on #307
Implement the endpoint

찜

.


Remove hyphen from controller generated code

Description of the change:
Currently, if API group contains hyphen(-), operator-sdk add controller
fails to execute because Go does not allow us to use
hyphone for import package alias.
Since API group accepts hyphen in Kubernetes, openshift-sdk should
handle hyphen in API group as well.
This patch replaces - with _ in generated code.
Motivation for the change:
Fixes https://github.com/operator-framework/operator-sdk/issues/997

Alright, I added GoImportGroup. Based on https://blog.golang.org/package-names, GoImportGroup() changes the GroupName and import path to lower case with no under_scores or mixedCaps.

/retest

@joelanford @LiliC @estroz Thank you. Updated.
Could you please take a look or calls /ok-to-test? I am thinking that current test failure is not related to this PR.
	memcached_test.go:137: Error after modifying Gopkg.toml: exit status 1
		Command Output: Solving failure: No versions of github.com/operator-framework/operator-sdk met constraints:

Thank you @LiliC Yes, I rebased (I should notice it by myself, sorry!) and all tests were passed now.

@nak3 Thanks for updating. I think what @joelanford meant was that we want to add a new field called GoImportPath to the Resource type that gets set whenever we initialize a new resource type. Not just have a function GoImportPath() in scaffold.go.

	// GoImportPath is the non-hyphenated go import path for this resource
        GoImportPath string
}

func (r *Resource) Validate() error {
	...
	r.setImportGroup()
}

func (r *Resource) setImportGroup() {
	s = strings.ToLower(r.Group)
	r.GoImportPath = strings.Replace(s, "-", "", -1)
}

And then we can use this directly in the scaffolds wherever needed. E.g:
const addToSchemeTemplate = `package apis

import (
	"{{ .Repo }}/pkg/apis/{{ .Resource.GoImportPath }}/{{ .Resource.Version }}"
)

func init() {
	// Register the types with the Scheme so the components can map objects to GroupVersionKinds and back
	AddToSchemes = append(AddToSchemes, {{ .Resource.Version }}.SchemeBuilder.AddToScheme)
}
`

Actually in the above example the GoImportPath is just the non-hyphenated lowercased version of Resource.Group so perhaps a different name like GoImportGroup might be better.
@joelanford @estroz Do we want to add a new field GoImportPath that's the relative import path? e.g for the Group foo-bar the Resource.GoImportPath is pkg/apis/foobar/v1alpha1.
Or just use have a sanitized field Resource.ImportGroup = foobar that's okay to use in constructing the import path wherever needed
import "{{ .Repo }}/pkg/apis/{{ .Resource.GoImportGroup }}/{{ .Resource.Version }}"

I was thinking of the latter.

@hasbro17 Yes that's what I meant :). Thanks for clarifying. And I agree that the name should be GoImportGroup and contain just that one segment of the path, exactly how you described in your sample code.

I'm in agreement with @hasbro17's comment.

/hold

Thank you & Sorry for my misunderstanding. Updated!

/hold cancel

Thank you! Updated. (Jenkins failure should not be related to this PR.)

Thank you so much, all!


Passing ACL explicitly doesn't work in 2.x

After switching from 1.x to 2.x (2.0.5) the following Symfony config has stopped working correctly (the bucket-owner-full-control permission is not applied to the uploaded file):
flysystem:
    storages:
        whatever_storage:
            adapter: 'aws'
            options:
                bucket: 'whatever'
                client: 'aws.s3'
                options:
                    ACL: 'bucket-owner-full-control'

It looks like 2.x doesn't respect ACL given in the config anymore and replaces it with its own ACL option.
Is it intentional behavior? How else could we apply bucket-owner-full-control?

Hey @frankdejonge,
I can see that this should not be an issue with the master code: https://github.com/thephpleague/flysystem-aws-s3-v3/blob/master/src/AwsS3Adapter.php#L589
But it is in the latest version: https://github.com/thephpleague/flysystem-aws-s3-v3/blob/2.0.6/AwsS3V3Adapter.php#L146
Are you going to release master as a new version? Or maybe use the same array_key_exists('ACL', $options) logic in 2.0.x?

This issue is blocking us from switching to Flysystem 2. @frankdejonge would you be able to accept a PR with a fix if we create one?

@roman-eonx could you check the dev-2.x version of this adapter? I pushed a fix in the monorepo.

Thanks, @frankdejonge. This version fixes the issue. We are looking forward to a stable release.


zh-cn: fixing zh-cn/tutorials/distribute/keras.ipynb using nb_code_sync

The notebook is updated using nb_code_sync.py tools.
docs-l10n $ python tools/translation/nb_code_sync.py site/zh-cn/tutorials/distribute/keras.ipynb --site_root tensorflow_docs_path/site/en --src tensorflow_docs_path/docs/site/en/tutorials/distribute/keras.ipynb

I don't know whether this is the right way to fix this problem.

Thanks. Looks like it worked. Can you also run these notebooks through the nbfmt.py tool to help make the diff more readable?

I tried it & it worked.
Notebook: keras.ipynb
  Missing TF2 Version: (%tensorflow_version 2.x|tensorflow.compat.v2)
  Found warnings. Notebook not written, skipping.

It looks like the format tools needs absl-py.
I think it will be better if the format tools set in CI ?
@lamberta

Yes, requires absl and eventually plan to add to CI. But still testing it.
Since this notebook uses tf-nightly now, you can run nbfmt.py --ignore_warn ...

The notebook is formatted using nbfmt.py --ignore_warn .... I have noticed that the order of items are changed.

Thanks, appreciate it. Yes, nbfmt alpha sorts JSON fields and sets the indentation. This should make the diffs easier to read in GitHub (which has poor support for notebooks).
Looks like the notebook renders correctly. Thanks for testing :)

Got it, thanks for your explanation. :)


Case-Insensitivity issue in integration/vendor

Do you want to request a feature or report a bug?
bug
What did you do?
Checkout latest master version.
What did you expect to see?
Nothing unexpected.
What did you see instead?
In the integration/vendor directory we have logrus twice. Once with Sirupsen in the path and once with sirupsen. You can only have one of those folders on a case-insensitive file-system and therefore git shows you either:
modified:   vendor/github.com/sirupsen/logrus/entry.go
or
modified:   vendor/github.com/Sirupsen/logrus/entry.go
Output of traefik version: (What version of Traefik are you using?)
Its latest master version.
traefik version
Version:      dev
Codename:     cheddar
Go version:   go1.8.3
Built:        I don't remember exactly
OS/Arch:      darwin/amd64

What is your environment & configuration (arguments, toml, provider, platform, ...)?
I am working on Traefik with a Mac with a case-insensitive file-system. File System Personality:  Journaled HFS+
The change was introduced at this point: https://github.com/containous/traefik/pull/1813/files#diff-969bc80135afc51d6e41fc01504e83f1R139

We already know this issue.
It's not a Traefik bug. We cannot fixed mistakes made by sirupen.
Currently, we work on cleaning glide. Stay connect! 😃

Ok great. Good luck down there in the mud :)

I reopen only to track the subject.

Closed by #1823


How do I tell lvgl that I only want to compile the driver for my ILI9488 board?

I've added -D CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9488 to my build flags, however, lvgl insists on compiling all the drivers regardless. This leads to errors in drivers that I'm just not interested in like:
.pio/libdeps/esp32doit-devkit-v1/lvgl_esp32_drivers/lvgl_tft/il3820.c:183:2: error: #error "Unsupported orientation used"

Is there a reason that chip-specific files don't honor the CONFIG_LB_TFT_DISPLAY_CONTROLLER_* flags?
Is there a better way to work around this issue besides renaming all the files I don't need?

Hello @spierepf ,
This should be handled in https://github.com/lvgl/lvgl_esp32_drivers/blob/master/CMakeLists.txt
Could you please share your project's sdkconfig file (located in root of your project)?

If you are using GNU Make, then there seems to be a bug:
Try deleting lvgl_tft on this line https://github.com/lvgl/lvgl_esp32_drivers/blob/master/component.mk#L4

Thanks @tore-espressif! I finally got it working. I needed to get the menuconfig option in platformio to work, and once I did I managed to make everything go. I posted my steps here: https://forum.lvgl.io/t/how-do-i-set-up-lv-platformio-with-lv-port-esp32/5542 in case others bump into a similar issue.


mermaid: graph may exeed screen limits

Mermaid generates a width=100% for certain diagram types - e.g the gantt diagram. On a narrow website this may cause the observed distortion.
The mermaid docs expose this behaviour, too, as seen here.
Also related to this issue: If mermaid does not generate a width=100% the diagramm may overflow out of view if the browser window is too narrow - without generating scroll bars. This is clearly an issue of our CSS and also affects print output.
Nevertheless I don't have an idea how to fix this in a satisfying way for all users.
This is a copy of matcornic/hugo-theme-learn#257

The good news is, that since upgrading our mermaid version in #7, every mermaid graph has a width=100%.
This leaves the problem how to handle big graphs on small screens.
Some kind of zoom mode?


Copilot stops editing Markdown when it encounters backsticks (```)

When I ask Copilot to translate Markdown, it translates it until it encounters backsticks (for example, a block of code) - and then does not write anything
Please fix this as it is a major inconvenience

Are you using panel chat, inline chat, Copilot Edits, or something else? If Copilot Edits, we did make some improvements here for Copilot Edits, does this reproduce for you with VS Code Insiders and Copilot Chat prerelease?

Copilot inline chat, there were no such problems before

I am using Edit with Copilot (v0.23.2024102903 (pre-release)) and it is impossible to create Markdown with sample code. Every time It starts a code block in a response, it breaks out of the actual edit and outputs the rest of the markdown in the chat instead of in the desired file. Sometimes I can fix this by telling the AI to replace with --- and replace them later by hand. But that doesn't consistently work.

@AMLogisticSolutions that sounds like a regression, do you have a sample query with a file where this reliably occurs?

Sure, I created a small example to reproduce this problem. The AI model doesn't matter. You can clearly see the  cut, when trying to produce code blocks inside the "AI response markdown" code block:
test.md
# Login Process
- Communication is JSON only.
- When authenticating, send the `authenticate` object with the following fields:
    - `token` - (str) authentication token, UUIDv4 format
    - `name` - (str) name of the system
- Server is responding also with a `authenticate` object
    - `status` - (bool) true, if authentication was successful
    - `reason` - (str, optional) reason for failed authentication

Prompt: Create a nice looking API documentation of the login process with an example of the communication

Also the client request example is completely missing!

Result:

@AMLogisticSolutions oh, yours is a different issue than the original one described here. We actually just published a fix for your scenario in the Copilot Chat prereleases targeting VS Code Insiders 1.96.0-insider. The latest Copilot Chat prerelease is 0.23.2024112701 and it looks like you're on a prerelease from October (v0.23.2024102903). Could I ask you to try it out using https://code.visualstudio.com/insiders please? Otherwise, the fix should come to stable when we next ship on December 11-12.

@joyceerhl Oh, I'm sorry that I have misinterpreted this topic. I had the same problem in the inline chat, so I thought it must be the same problem.
Since I was very surely that it was a Copilot plugin problem, I didn't think that switching to VSCode pre-release would change anything.
In fact, it fixed the problem in edit and inline chat for me.
Thank you! 😊


How do you play your game?

Code
Check off the items that are true.

[x] The game was made using the Sprig editor.
[x] The game is placed in the in the /games directory.
[x] The code is significantly different from all other games in the Sprig gallery (except for games labeled "demo").
[x] The game runs without errors.
[x] The name of the file/game contains only alphanumeric characters, -s, or _s.
[x] The game name is not the same as the others from gallery

Image (If an image is used)

[x] The image is in the /games/img directory.
[x] The name of the image matches the name of your file.

Thanks for your PR!

d

I can't find out how to but I'll try.
On Mon, Sep 16, 2024 at 5:51 AM Mare Cosmin @.***>
wrote:

@.**** requested changes on this pull request.
Hey @condocreeper https://github.com/condocreeper, you have uploaded 2
games. If you wish to upload both to the sprig gallery, I would suggest
doing it in 2 separate PRs, but if not, please delete the redundant one.
—
Reply to this email directly, view it on GitHub
https://github.com/hackclub/sprig/pull/2336#pullrequestreview-2306311643,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A3OHNBKGFV7PAFCJMWHHDJTZW2Z4LAVCNFSM6AAAAABOEI7L4SVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMZDGMBWGMYTCNRUGM
.
You are receiving this because you were mentioned.Message ID:
@.***>

--
Homeroom-Garwood
Hour 1-writing Williams
Hour 2- reading Thuenemann
Hour 3-band McBain
Hour 4-math Fiedler
Hour 5-Geography Hollingsworth
Hour 6-science Rentie
Hour 7-Vocal music Holdmeyer
bison time Garwood
--
This e-mail message was sent by a student at LSR-7 School
District. If you feel any content in this message is inappropriate or
potentially harmful, please @.***
@.***>.

just tell me which one is the extra one and I can delete it for you

the cookie one not the home
On Tue, Sep 17, 2024 at 9:53 AM Mare Cosmin @.***>
wrote:

just tell me which one is the extra one and I can delete it for you
—
Reply to this email directly, view it on GitHub
https://github.com/hackclub/sprig/pull/2336#issuecomment-2356116791, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/A3OHNBPBUC7C4XAXQSVNS6DZXA7ADAVCNFSM6AAAAABOEI7L4SVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGNJWGEYTMNZZGE
.
You are receiving this because you were mentioned.Message ID:
@.***>

--
Homeroom-Garwood
Hour 1-writing Williams
Hour 2- reading Thuenemann
Hour 3-band McBain
Hour 4-math Fiedler
Hour 5-Geography Hollingsworth
Hour 6-science Rentie
Hour 7-Vocal music Holdmeyer
bison time Garwood
--
This e-mail message was sent by a student at LSR-7 School
District. If you feel any content in this message is inappropriate or
potentially harmful, please @.***
@.***>.

just to confirm, do you want me to delete Cookie_maker.js?

yes
On Wed, Sep 18, 2024 at 6:58 AM Mare Cosmin @.***>
wrote:

just to confirm, do you want me to delete Cookie_maker.js?
—
Reply to this email directly, view it on GitHub
https://github.com/hackclub/sprig/pull/2336#issuecomment-2358272029, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/A3OHNBLJO7SCRDOK4FVX5U3ZXFTHNAVCNFSM6AAAAABOEI7L4SVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGNJYGI3TEMBSHE
.
You are receiving this because you were mentioned.Message ID:
@.***>

--
Homeroom-Garwood
Hour 1-writing Williams
Hour 2- reading Thuenemann
Hour 3-band McBain
Hour 4-math Fiedler
Hour 5-Geography Hollingsworth
Hour 6-science Rentie
Hour 7-Vocal music Holdmeyer
bison time Garwood
--
This e-mail message was sent by a student at LSR-7 School
District. If you feel any content in this message is inappropriate or
potentially harmful, please @.***
@.***>.

i dont want that one im doing home_maker or clicker
On Sat, Oct 5, 2024 at 2:28 AM Mare Cosmin @.***> wrote:

@.**** requested changes on this pull request.
Hey! Sorry for the delay. Your game is way too similar to another in the
gallery. Please make some changes except the bitmaps to make it more
original. Thanks.
—
Reply to this email directly, view it on GitHub
https://github.com/hackclub/sprig/pull/2336#pullrequestreview-2349505454,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A3OHNBKJWDABTCNGYGGS7U3ZZ6IJBAVCNFSM6AAAAABOEI7L4SVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMZDGNBZGUYDKNBVGQ
.
You are receiving this because you were mentioned.Message ID:
@.***>

--
Homeroom-Garwood
Hour 1-writing Williams
Hour 2- reading Thuenemann
Hour 3-band McBain
Hour 4-math Fiedler
Hour 5-Geography Hollingsworth
Hour 6-science Rentie
Hour 7-Vocal music Holdmeyer
bison time Garwood
--
This e-mail message was sent by a student at LSR-7 School
District. If you feel any content in this message is inappropriate or
potentially harmful, please @.***
@.***>.

yeah, your game home_clicker is too similar to cookie_clicker. pls add more features to it for it to be accepted into the gallery.

Closing this PR as it is quite old and hasn't moved in some time.  Feel free to reopen this if you want to advocate for its merge.

Can I give you a lobotomy?
On Thu, Dec 5, 2024 at 12:28 PM graham @.***> wrote:

Closing this PR as it is quite old and hasn't moved in some time. Feel
free to reopen this if you want to advocate for its merge.
—
Reply to this email directly, view it on GitHub
https://github.com/hackclub/sprig/pull/2336#issuecomment-2521122731, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/A3OHNBLFUBHLQHYTTAFTHPD2ECLL5AVCNFSM6AAAAABOEI7L4SVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKMRRGEZDENZTGE
.
You are receiving this because you were mentioned.Message ID:
@.***>

--
Homeroom-Garwood
Hour 1-writing Williams
Hour 2- reading Thuenemann
Hour 3-band McBain
Hour 4-math Fiedler
Hour 5-Geography Hollingsworth
Hour 6-science Rentie
Hour 7-Vocal music Holdmeyer
bison time Garwood
--
This e-mail message was sent by a student at LSR-7 School
District. If you feel any content in this message is inappropriate or
potentially harmful, please @.***
@.***>.


Optimize the memory pool

Using a memory pool to manage memory is encouraged in Vulkan.
Not only it is encouraged, but since the number of simultaneous allocations is limited in Vulkan it can also be mandatory on some systems if you don't want to run into OOM errors.

Some mentoring.
We need two memory pools:

One for host-visible memory, whose algorithm is allowed to read/write the memory that is going to be allocated.
One for non-host-visible memory, whose algorithm doesn't have access to the content of the memory.

The objects must be in submodules of src/memory and must wrap around either the MappedDeviceMemory struct (for the former), or the DeviceMemory struct (for the latter).

@tomaka excuse me, can you explain why one would need non-host-visible memory? I'm not too expereinced with Vulkan, so this may be obvious, but not clear to me :(

@White-Oak The memory that is directly on the video card is the fastest possible memory, but it may not be visible for the host.
When you have data that is used many times and that the host doesn't need to modify (for example a 3D model), you can copy it to this kind of memory to get better performances.

I just realized how important this is. On my system one deallocation takes between 100 and 200ms.

@tomaka I would be eager to help, but unfortunately I don't have a clue, how some object that is a wrapper around (Mapped)DeviceMemory would allow one to pool a memory.
My example:

I took 200KB of memory from pool, pool allocated 200KB of memory, gave it to me.
I released that memory back to pool, pool marked it as free.
I requested 150KB of memory from pool. Pool would be happy to reuse previous 200KB to pool me 150KB of that, but can't, since it's a wrapper around DeviceMemory! So I need to allocate a new chunk of memory.

Where am I wrong?

Ah, wait, maybe we got "wrapper" a bit wrong. Maybe a wrapper meaning it would give DeviceMemory out, but use its own structure inside?

The DeviceMemory is used internally by the pool but is not exposed at all.

Is there a pattern that we can use? Are allocation sizes usually powers of 2, or are they similar?

@pczarn That's a good question. I don't think there's a precise pattern.
Buffers can be used at the same time to store big chunks of data, or just a few bytes to store a matrix.
Images are for the most part textures, in which case the size of the texture can vary a lot.

I think I'm going to write a dummy implementation of this.

I merged my draft. It's of course very slow and can be greatly improved.

There's an impl period hack day here in Portland on Sunday. I know Vulkano's not officially part of that effort, but I'll probably take the opportunity to prototype some of my thoughts on allocator plugability for this ticket as well as #673.

https://github.com/branan/vulkano/commit/5425be7419ed122f954fd5b9f4465be7ce5ef165 is a first pass at this for CpuAccessibleBuffer. That struct was already generic across its allocation type, so it was mostly a matter of adding the right new fns to accept a custom MemoryPool implementation. I'll open a PR for this once I've had some more time to play with how this actually works in a real application.
I've also started looking into what it would take to allow Device to be parameterized on its pool type. The actual logic in Device around the memory pool is pretty simple, but getting all of Vulkano to handle a generic Device type is going to be "fun". I may save this one for another rainy day ;)
And finally I'm contemplating whether it makes sense to make StdMemoryPool generic over its host- and non-host-visible internal pool types. StdMemoryPool handles a lot of boiler plate around vulkan memory types, so it'd be nice if custom pools could re-use it it.

Great!

I've also started looking into what it would take to allow Device to be parameterized on its pool type. The actual logic in Device around the memory pool is pretty simple, but getting all of Vulkano to handle a generic Device type is going to be "fun". I may save this one for another rainy day ;)

I don't think that's going to be really possible or practical though, but I may be wrong.
If we compare this to the CPU memory allocator, on the CPU side the allocator is chosen globally for the whole program, probably because there is some sort of agreement that having to pass an allocator as parameter to every single function that allocates would be too cumbersome.

This is improved by the new memory memory allocator in 0.32.