NgccProcessor slowing down subsequent builds with AngularCompilerPlugin

I'm using the AngularCompilerPlugin for a medium-sized project and I've observed a slowdown in build times after enabling Ivy which appears to come from ngcc. When Ivy is enabled the AngularCompilerPlugin runs the NgccProcessor which is supposed to compile the node_modules for Ivy on the first run, however in my case any subsequent builds are slowed down as well.
I have a hacky way to disable the NgccProcessor which I've used to measure the differences in build times. Here's what it looks like:
class MyAngularCompilerPlugin extends AngularCompilerPlugin {
    public apply(compiler: Compiler): void {
        super.apply(compiler);

        compiler.hooks.environment.tap('angular-compiler', () => {
            (this as any)._compilerHost.ngccProcessor = undefined;
        });
    }
}

Here are the timings for 5 production builds on my own machine. Note that these times are after ngcc has been run once over the node_modules in a postinstall script.
// Without ngcc (80737ms on average)
84520ms
72547ms
81733ms
85043ms
79844ms
------------------------
// With ngcc (94208ms on average)
93741ms
93714ms
92922ms
97220ms
93444ms

The 15s slower build time for a production build isn't a big deal locally, however the difference becomes even larger when running it on our CI server. For our production builds we need to run about 30 Webpack builds (10 at a time in parallel), about 20 which go through the AngularCompilerPlugin. Disabling the NgccProcessor on our CI server reduced our build time from around 10 minutes to about 6 minutes. Furthermore keeping the NgccProcessor led to some flakiness in our builds, presumably because 10 different ngcc processes were trying to access file at the same time. Our build script looks something like this:

Run npm ci.
Run ngcc programmatically as follows:

const ngcc = require('@angular/compiler-cli/ngcc');
ngcc.process({
    basePath: path.join(projectRoot, 'node_modules'),
    compileAllFormats: false,
    propertiesToConsider: ['browser', 'module', 'main'],
    createNewEntryPointFormats: true
});

Run webpack --mode=production 30 times by splitting them into chunks of 10 that are run concurrently. We have some logic that tries to make sure that we always run the maximum number of builds, but it stays the same no matter whether ngcc is enabled so it shouldn't have an effect on the times.

I can see a couple of ways to get around this:

Short term: add an option to the AngularCompilerPlugin config that allows users that know what they're doing to disable the NgccProcessor.
Long term: rework either ngcc or NgccProcessor so that it doesn't have to spend time analyzing the node_modules after it has been run already.

cc @filipesilva

@crisbeto, which version of @angular/compiler-cli are you using?
@petebacondarwin was your PR for improving NGCC performance merged and released?

I'm using<EMAIL_ADDRESS>and<EMAIL_ADDRESS>I can't use next.1, because of the issue that was fixed by https://github.com/angular/angular/pull/31509.

@crisbeto - thanks for the report. I did a big performance refactoring of ngcc in https://github.com/angular/angular/pull/30525 but I believe that only landed in 8.2.0-next.1.
This fixed a problem where ngcc was parsing the entire node_modules tree every time it was being run from the AngularCompilerPlugin.
I see that https://github.com/angular/angular/pull/31509 has not appeared in any release yet. But it should be released with 8.2.0-next.2. Can you take another look at the performance once that is released. If it is still a problem then we can prioritize work on it.

@crisbeto, would you be able to use the compiler-cli build snapshot and give it a shot and see if the timings improve?
Also, I suggest that you also update the @ngtools/webpack to either the latest or next version. There have been some fixes related to Ivy since 8.0.0 was release.

@alan-agius4 @petebacondarwin Looks like updating to next.1 brings it pretty much on par. Here are some numbers from this morning:
// Without ngcc (73398ms on average)
72809ms
72956ms
73827ms
72515ms
74883ms
--------------------------------------------
// With ngcc (73501ms on average)
73562ms
73252ms
73706ms
74152ms
72833ms

These numbers are from my local machine since I can't test it on our CI until next.2 comes out.
@petebacondarwin do you know whether your refactor would help with some CI flakiness that was being caused by ngcc as well? What I was seeing before is that very randomly (about once every 15 builds) ngcc would throw Unexpected end of JSON input without a stack trace. I traced it back to ngcc by monkey patching JSON.parse and logging out a stack trace when it throws an error so it's possible that the log below isn't totally accurate, however our flakes stopped (hasn't flaked in 4 days) once I disabled ngcc. Here's what the logs look like:
JSON.parse (/ci/project/app/build/config/build-config.ts:35:17)
loadEntryPointPackage (/ci/packages/compiler-cli/ngcc/src/packages/entry_point.ts:159:17)
Object.getEntryPointInfo (/ci/packages/compiler-cli/ngcc/src/packages/entry_point.ts:86:7)
EntryPointFinder.getEntryPointsForPackage (/ci/packages/compiler-cli/ngcc/src/packages/entry_point_finder.ts:116:9)
EntryPointFinder.walkDirectoryForEntryPoints (/ci/packages/compiler-cli/ngcc/src/packages/entry_point_finder.ts:74:30)
/ci/packages/compiler-cli/ngcc/src/packages/entry_point_finder.ts:95:36
Array.forEach (<anonymous>)
EntryPointFinder.walkDirectoryForEntryPoints (/ci/packages/compiler-cli/ngcc/src/packages/entry_point_finder.ts:91:10)
/ci/packages/compiler-cli/ngcc/src/packages/entry_point_finder.ts:95:36
Array.forEach (<anonymous>)
EntryPointFinder.walkDirectoryForEntryPoints (/ci/packages/compiler-cli/ngcc/src/packages/entry_point_finder.ts:91:10)
/ci/packages/compiler-cli/ngcc/src/packages/entry_point_finder.ts:28:60
Array.reduce (<anonymous>)
EntryPointFinder.findEntryPoints (/ci/packages/compiler-cli/ngcc/src/packages/entry_point_finder.ts:27:43)
Object.mainNgcc [as process] (/ci/packages/compiler-cli/ngcc/src/main.ts:110:9)
NgccProcessor.processModule (/ci/project/node_modules/@ngtools/webpack/src/ngcc_processor.js:54:16)
moduleNames.map.moduleName (/ci/project/node_modules/@ngtools/webpack/src/compiler_host.js:318:36)
Array.map (<anonymous>)
WebpackCompilerHost.resolveModuleNames (/ci/project/node_modules/@ngtools/webpack/src/compiler_host.js:315:28)
resolveModuleNamesWorker (/ci/project/node_modules/typescript/lib/typescript.js:88318:127)
resolveModuleNamesReusingOldState (/ci/project/node_modules/typescript/lib/typescript.js:88560:24)
processImportedModules (/ci/project/node_modules/typescript/lib/typescript.js:89890:35)
findSourceFile (/ci/project/node_modules/typescript/lib/typescript.js:89694:17)
processImportedModules (/ci/project/node_modules/typescript/lib/typescript.js:89926:25)
findSourceFile (/ci/project/node_modules/typescript/lib/typescript.js:89694:17)
processImportedModules (/ci/project/node_modules/typescript/lib/typescript.js:89926:25)
findSourceFile (/ci/project/node_modules/typescript/lib/typescript.js:89694:17)
/ci/project/node_modules/typescript/lib/typescript.js:89548:85
getSourceFileFromReferenceWorker (/ci/project/node_modules/typescript/lib/typescript.js:89515:34)
processSourceFile (/ci/project/node_modules/typescript/lib/typescript.js:89548:13)
processRootFile (/ci/project/node_modules/typescript/lib/typescript.js:89378:13)
/ci/project/node_modules/typescript/lib/typescript.js:88393:60
Object.forEach (/ci/project/node_modules/typescript/lib/typescript.js:280:30)
Object.createProgram (/ci/project/node_modules/typescript/lib/typescript.js:88393:16)

What I think was going on is that when I was running 10 builds in parallel 10 different instances of ngcc were trying to access the same files in the node_modules.

Thanks for the update @crisbeto - hopefully that means that we are not in a dire situation regarding performance :-)
Regarding the flakes, I am not surprised that this is happening. ngcc was never designed to be run multiple times in parallel, which is basically what is happening when running multiple builds on the same project at the same time, since the CLI+ngcc integration will trigger ngcc whenever it comes across a new import.
I could imagine that at some point build A is writing to a package.json file just as build B is trying to read from it. Normally it is safe to do this kind of thing in TS builds as they only ever write to their own exclusive files but ngcc writes directly into the shared node_modules folders. For us to be able to support this scenario we would need to add some resource locking mechanism, which in turn would require ngcc to become asynchronous internally I think...
So the natural solution, which you already mentioned, is to do a full ngcc compilation of the whole of the node_modules folders first (post-install?) before running any builds and then disable the CLI+ngcc integration. We should implement such a flag in CLI and have a story around this parallel builds scenario.
(By the way, this could become even more common if using Bazel to build projects since that naturally will try to parallelize compilations...)

FYI, we've run into the same issue with the docs examples (which essentially share the same node_modules/ directory via symlinks). See #30593 for details.

Actually I think that we don't need the flag... if the node_modules have already been compiled by ngcc then the CLI+ngcc should not need to write any files, so there should be no flakes........

Yeah, exactly, that's how we solved it in angular/angular#30593 for angular.io docs examples :wink:
No flakes (of that particular kind 😞) since 💪

@crisbeto, seeing all the comments above. I don’t think there is anything to action.
Feel free to ping me on slack if you feel otherwise.

@petebacondarwin @alan-agius4 I'm still seeing the flaky behavior where ngcc throws Unexpected end of JSON input after I updated to 8.2.0-next.2.

@crisbeto, are you explicitly running ivy-ngcc upfront or implicitly via the cli?

I'm running it once up-front like this after I npm install:
const ngcc = require('@angular/compiler-cli/ngcc');
ngcc.process({
    basePath: path.join(projectRoot, 'node_modules'),
    compileAllFormats: false,
    propertiesToConsider: ['browser', 'module', 'main'],
    createNewEntryPointFormats: true
});

Afterwards it gets run implicitly by the NgccProcessor in the AngularCompilerPlugin.

Could it be that those properties do not correspond to the es2015 format (which the cli wants to compile)?

That call goes through fine. What I'm running into is that when I'm running 10 different Webpack builds in parallel, once every 10 or 15 times it flakes with Unexpected end of JSON input. My best guess is that it's due to multiple ngcc instances trying to read the same files at the same time.

I am not implying the call doesn't go through fine :smile: Here is what I mean:
The Unexpected end of JSON input can happen when a package.json gets corrupted. This in turn can happen if multiple ngcc instances try to update a package.json simultaneously. Ngcc updates package.jsons to add info about which formats have been processed.
Based on the above, the trick to avoid the error is to ensure that ngcc will not need to update any package.json during the concurrent cli builds. The way to achieve this is to ensure that all necessary formats will have been compiled in the initial standalone ngcc run.
So, you need to ensure that ngcc will have processed all formats that the cli will request afterwards.

That makes sense, although from looking at the logs it doesn't seem like it's doing any more compilation, because I'm not seeing any more of those Compiling something as ... messages.

It is worth taking a look at the package.json after the original ngcc run and then after the CLI compilation. It is worth noting that multiple properties in package.json map to the same code format. E.g. module and fesm5 and esm5 are the same "format". So although you have built the esm5 format in the first run of ngcc (via the module property), there might be a case where the CLI attempts to build an additional entry point, which happens to map to a format that has already been built. In that case you would not see a "Compiling..." message but ngcc might still write to the package.json to say that an entry-point has been processed.


Allow configurable storage limits.

Description
We sometimes store very large data objects with Storable, a standard perl way of serialising and deserialising data. This means that we care about two built-in limits in Storable which limit the size of such objects to help programs which mistakenly try to serialise large objects. These two globals used to be configured at the module's build-time for the machine it is built on. At some point in the release sequence for Storable this was stopped (perhaps only in the vendor's branch, homebrew) and fixed, very low limits were instituted instead -- far too low for our uses.
Our new sharedsw build for CentOS7 upgraded Storable to the point where we were affected by this. This meant that "things" broke on the CentOS7 machines (though any new, theoretical build for RH6 would also have displayed this behaviour). As an emergency hotfix these two variables were set manually to the previous values (ie the ones displayed on the RH6 machines) which seem like sensible defaults. But, for speed of writing the patch, these were just set as hardwired.
Now there's some time to do it properly, this patch moves these values to be configurable in SiteDefs. Potentially, people have very different machines to us and would want their own values (though the new default values seem sensible across a host of machine sizes, so the reality is that few will think it worth it).
The main "thing" found going wrong without the hotfix were various trackhub breakages, particularly the inability to attach Blueprint. Note, though, that this patch simply replaces the hacky hotfix with a clean fix with the same functionality and behaviour.
This fix has been tested on a sandbox by adding a warn after the commit to print the values used for these globals both with and without this patch (this warn was then removed). At the same time it was verified that the bluprint hub attachment succeeded/failed as expected when this patch took effect.
Views affected
Certainly region in detail (when handling hubs), probably many other pages in corner cases.
Possible complications
This is a global patch to a library config so isn't well localised. But its effect is strictly to broaden the number of calls which do not error.
One possible exception to this is someone who is running ensembl on a very large and relying on much larger autoconfigured values for these settings and is using an old perl version. They would have seen a bug when they eventually upgraded perl (and so Storable) anyway and with this patch they can simply add their previous values to their SiteDefs. I think it's unlikely that such a combination exists outside EBI, but this is what we should recommend.
This issue is well-known in the perl community so we won't be on a limb doing this.
Merge conflicts
As this is like-for-like for behaviour it is fine for this to be only on master and not go live for a release or two. There are currently no conflicts.
Related JIRA Issues (EBI developers only)
ENSWEB-6237

I've put it on master. It only makes something configurable that we don't really want to configure any time soon and sets it to its current value (because it does the same thing as the already-live hotfix, but better). So there's no hurry to get this live and it's the least complex, I think.

Now is a good time to get this onto master as we can go through a release cycle.


Dynamic scroll at bottom of page creates gap between drag element and mouse

Problem:
Have a list of draggable things that creates a scroll bar.
Draggable items height is dynamic because items can expand to a larger height. Items will collapse when dragged.
Steps:
Scroll to bottom of list.
Click on bottom item to expand it.
Scroll to bottom.
Drag.
JSBin/JSFiddle demonstrating the problem:
https://jsbin.com/zaqupacego/1/edit?js,output

http://g.recordit.co/OmjoUsCebp.gif

JSbin wasn't working again, here https://jsbin.com/venasuj/1/edit?css,js,output

New JSBin doesn't work either :/

Could you try on Chrome? I'm not sure why FF isn't working.

@courtneynguyen Yes I tried in Chrome


filament materials and obj + mtl files

Hi there, do I need to compile the .mtl files using the matc tool if I wanted to render the mesh say using the frame_generator example?
Though it seems that the only format that the matc accepts as input is the filament .mat format.
despite the obj I'm using reference the right material file it doesn't seem to do anything, I can view the mesh without texture.
Do I need to modify the .mat somehow and then recompile it?

Sounds like you're using MeshAssimp which doesn't necessarily honor the mtl files associated with obj models.  In the future we would like to provide a library for loading OBJ files.
In the mean time you may with to consider an alternative model format such as glTF instead of OBJ.

Our assimp-based samples like frame_generator do not necessarily honor the mtl files associated with OBJ models.  We plan on replacing assimp with our own OBJ loader.  In the mean time you may wish to consider an alternative model format such as glTF.

matc does not compile .MTL files. Those files are partially supported by MeshAssimp (no textures, constants work). There's already a feature request open to add support for .MTL files, I'll close this one.

Is there any converter or tutorial I can follow you can point out? Does frame_generator support the glTF format?

Is there any tutorial or converter obj to glTF you can point out? I've never heard of such format until today.

@prideout any update on obj loader?


Add MarkDown formatting to examples/mnist_transfer_cnn.py

Summary
Add MarkDown formatting to examples/mnist_transfer_cnn.py.
Result

Related Issues
#12219
PR Overview

[ ] This PR requires new unit tests [y/n] (make sure tests are included)
[ ] This PR requires to update the documentation [y/n] (make sure the docs are up-to-date)
[x] This PR is backwards compatible [y/n]
[ ] This PR changes the current API [y/n] (all API changes need to be approved by fchollet)

Thanks for the PR.
We are postponing the addition of new examples on keras.io pending a future refactor of the docs website (which will have a dedicated examples section).


Remove depependency on Kafka stream implementation classes from pinot-core and pinot-controller tests

As discussed in https://github.com/apache/incubator-pinot/issues/3998, we need to remove all dependencies of kafka stream implementation related classes from pinot-core, pinot-common, pinot-controller.

Codecov Report

Merging #4233 into master will decrease coverage by 26%.
The diff coverage is n/a.

@@              Coverage Diff              @@
##             master    #4233       +/-   ##
=============================================
- Coverage     67.43%   41.43%   -26.01%
=============================================
  Files          1041     1165      +124
  Lines         51473    58474     +7001
  Branches       7210     8134      +924
=============================================
- Hits          34709    24226    -10483
- Misses        14383    32152    +17769
+ Partials       2381     2096      -285

Impacted Files
Coverage Δ
Complexity Δ

.../org/apache/pinot/common/http/MultiGetRequest.java
0% <0%> (-100%)
0% <0%> (ø)

...n/function/PercentileEstMVAggregationFunction.java
0% <0%> (-100%)
0% <0%> (ø)

...che/pinot/common/restlet/resources/TablesList.java
0% <0%> (-100%)
0% <0%> (ø)

...ransformer/timeunit/CustomTimeUnitTransformer.java
0% <0%> (-100%)
0% <0%> (ø)

...che/pinot/pql/parsers/pql2/ast/OptionsAstNode.java
0% <0%> (-100%)
0% <0%> (ø)

...ers/pql2/ast/PredicateParenthesisGroupAstNode.java
0% <0%> (-100%)
0% <0%> (ø)

...ot/core/query/scheduler/TableBasedGroupMapper.java
0% <0%> (-100%)
0% <0%> (ø)

...t/core/segment/index/readers/OnHeapDictionary.java
0% <0%> (-100%)
0% <0%> (ø)

...ommon/utils/retry/RetriableOperationException.java
0% <0%> (-100%)
0% <0%> (ø)

...t/core/query/scheduler/OutOfCapacityException.java
0% <0%> (-100%)
0% <0%> (ø)

... and 651 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 91e4679...78cdc47. Read the comment docs.

Can we try not to hard-code the number of partitions to 2?? Each test should be able to start with as many partitions as needed? I do run the tests with different number of partitions on my desktop to test sometimes.

Fixed. The numPartitions can now be provided via the StreamConfig property. The StreamConfig can be created using StreamConfig streamConfig = FakeStreamConfigUtils::getDefaultLowLevelStreamConfig(int num partitions)

Don't you need to change BaseClusterIntegrationTest to not start kafka etc. Or, is that a different PR?

We will let the integration tests run on the kafka implementation (pinot-integration-tests can still have a dependency on pinot-kafka-0.9.x). If we decide to remove the pinot-kafka module entirely out of the  pinot repo, then we can move it to use fakestream.


How to define a Money data type dependent on time

In Idris I can define a money data time dependent on time (represented by a double) like this
data Money : (time : Double) -> Type where
Amount : (x : Double) -> Money time

Money has a time value to 1 dollar today is not the same as 1 dollar tomorrow. Hence an add function for the money time should only allow adding money for the time time t. In Idris this goes like
add : Money t -> Money t -> Money t
add (Amount x) (Amount y) = Amount(x + y)

Is there a way to define something similar in F*? And if so can I also use the F# unit of measure type to ensure that one cannot add 1 dollar to 1 euro?

Not sure I follow Idris' syntax for this. Is (time:Double) a parameter of the Money type constructor? Assume so.
In F*, you can write something similar, except that we currently lack concrete support for the double type. We should add it soon (nothing particularly deep about lacking it now, except that it is not done yet).
So, temporarily defining double as an alias for int, you can write something like this:
module Money
type double = int
type time = double
type currency =
  | Dollar
  | Euro
type money (t:time) (c:currency) =
 | Amount : x:double -> money t c

val add: #t:time -> #c:currency -> money t c -> money t c -> Tot (money t c)
let add #t #c (Amount x) (Amount y) = Amount (x + y)

Note, F* is quite unrelated from F#, aside from being inspired by it in some ways. So, you can't really use F#'s units of measure in F*.

You are right in the assumption. (time:double) is a parameter for the moneytype constructor. When I try to compile your suggestion I get an error:
Failed to solve the sub-problem
	(U7964 t c _6_13 _6_15) (Typ_app(Typ_uvar, [4 args]))
		=(TOP)
	(money _6_144 _6_145) (Typ_app(Typ_const Money.money, [2 args])) (guard ((U7973 t c _6_13 _6_15) /\ ((U7975 t c _6_13 _6_15) /\ True)))
Which arose because:
	TOP
Failed because:flex-rigid case failed all backtracking attempts

The error message is rather cryptic and hard to understand. I believe it is related to the add function because omitting that and I compiled without errors. Any ideas about why this fails?

Sorry about that.
I tried it using the head revision of F* from the master branch and it works fine. I guess you're using another version?

I am using version <IP_ADDRESS> from the release page and I am running OSX/mono. Will try to see if I can figure out how to build latest version from the master branch.

I got it to work after a bit of hacking. With the lastest version I can get as far as this message from the F* compiler.

All verification conditions discharged successfully

However the generated F# file cannot compile without errors. But a few modification to the generated F# file got things running.
Thanks for the help and support.

Most of us using F* tend to use the --codegen OCaml option. So, sadly, I'm not surprised that the F# backend has regressed. If you have a spare moment, a bug report would be most welcome. We'll probably take our time to get to fixing it since getting the F# backend up to speed again will take a bit of work, but it will be useful to track it.


Im ready promotion

I intentionally made this in 5 commits, one commit per promotion, such that we can revert an invidual commit if necessary without having to redo everything.
This closes #5394

[approve ci autest]


Add sender_id and stream_id properties to Outbox

We have a type called Outbox that's meant to be a lot like Message. It represents messages the user has hit "send" on from the compose box, and that we're still in the process of actually getting to the server (and then hearing back from the server as new messages.)
It doesn't quite have all the same properties as Message has, which is fine -- we don't use all those properties.
But in particular, while it has a sender_email: string, it does not have sender_id: number. This is basically a case of #3764.
Similarly it has this property:
  display_recipient: $FlowFixMe, // `string` for type stream, else PmRecipientUser[].

which, just like on Message, is for a stream message the name of the stream. But it lacks this other property which Message has:
  stream_id: number, // FixMe: actually only for type `stream`, else absent.

So this is basically a case of #3918.
We should add those two properties. Then all Outbox objects (outside tests) are created by addToOutbox, so we should fill the properties in appropriately there.
The scope of this issue does not include switching to actually use them yet -- and in fact we can't immediately, without some more work. The reason is that we persist outbox messages between runs of the app, so a new version of the app could get Outbox values stored by an old version that didn't fill in these properties.

Fortunately, outbox messages are inherently perishable -- we already discard them at one week of age, figuring that's better than sending a message which may be badly out of date and out of context. So, here's a low-effort way we can solve this problem.
First, let's:

Add the two properties to Outbox, as optional.
Start filling them in for all Outbox values we create.
Next to the two properties' definitions in the Outbox type, have a TODO comment saying we introduced them at such-and-such time.
Close this issue as having been fixed. :tada:

Then we wait until a release with the above changes has been out a month or two.
After that, at our leisure, we:

Switch the properties to required. Add a migration that simply deletes any outbox messages where they're missing.

This will only affect users who upgrade from the old version before the above changes, straight to this version, within a week -- and moreover have a message they tried to send on the old version that's still hanging around, unsent, when they start this new version.
I expect almost all users, almost all of the time, have zero outbox messages hanging around between runs of the app. So with this timeline, my hope is to reduce to a probable zero the number of users for whom this migration has any effect at all.
And if it's not quite zero, that's not a big deal. Once a message is hanging around unsent for more than a few minutes, it's already not an awesome experience even if we do go on to send it. And we already discard such messages if you do something like switch to another account and back, which is much more common than this migration.

Now we can start actually using these properties! In particular we can go clean up the workaround at https://github.com/zulip/zulip-mobile/pull/3968#discussion_r396830086 that caused me to notice this fact :wink: . There will probably also be other examples of #3764 and #3918 that these properties enable us to cleanly handle.

Another place where these will let us make the code cleaner: https://github.com/zulip/zulip-mobile/pull/4899#discussion_r703932340

Just sent #4667 to continue this work.

(I just added to the description another followup opportunity: https://github.com/zulip/zulip-mobile/pull/4899#discussion_r703932340 .)


Trying to add ZXing to Xamarin Forms Resource Designer Errors

For some reason in my Android project when i added this component and nuget package to my PCL I am getting 151 errors similar to the below errors when I compile.
Severity	Code	Description	Project	File	Line	Suppression State
Error		'Resource.Attribute' does not contain a definition for 'mediaRouteSettingsDrawable'	Elead.Mobile.Platform.Android	C:\git\elead\CRMM\src\ELead.Mobile.Platform.Android\Resources\Resource.Designer.cs	221
Error		'Resource.Color' does not contain a definition for 'design_textinput_error_color'	Elead.Mobile.Platform.Android	C:\git\elead\CRMM\src\ELead.Mobile.Platform.Android\Resources\Resource.Designer.cs	371
Error		'Resource.Dimension' does not contain a definition for 'design_fab_content_size'	Elead.Mobile.Platform.Android	C:\git\elead\CRMM\src\ELead.Mobile.Platform.Android\Resources\Resource.Designer.cs	479
Error		'Resource.Dimension' does not contain a definition for 'design_navigation_padding_top_default'	Elead.Mobile.Platform.Android	C:\git\elead\CRMM\src\ELead.Mobile.Platform.Android\Resources\Resource.Designer.cs	489
Error		'Resource.Dimension' does not contain a definition for 'design_tab_min_width'	Elead.Mobile.Platform.Android	C:\git\elead\CRMM\src\ELead.Mobile.Platform.Android\Resources\Resource.Designer.cs	502
Any ideas? I am guessing there is a android target mismatch. Or something similar.
Thanks,
Bob

@Bobisback I believe this is the same bug as indicated here. Please comment here, so we can get this prioritized and fixed. https://bugzilla.xamarin.com/show_bug.cgi?id=39910

Is it possible to compile this project with the newest support library from android?

This is a big issue and it is causing a lot of headaches for many Nuget packages. Here is the XLabs discussion. The owners are working to recompile as we speak and release with the XF 2.3 update. The owner of this package will have to do the same. https://github.com/XLabs/Xamarin-Forms-Labs/issues/1125

I struggling all day today with the same errors in the Resource.Designer.cs. I have zxing <IP_ADDRESS> with Xforms <IP_ADDRESS> is there a workaround?

@xalikoutis so far the only workaround that I managed to make it work is simply add all the missing constants... Have a look at https://docs.google.com/document/d/12PcMIxAhKz0HCf4ZMhlC8TfKPagDub_5EMJtHaToYXo/edit – it has all the missing constants in one place so it's pretty eay to add.
However, you must do every time after build. So what I did is create a file Resource.designer.cs.bak and then copy it over $ cp Resource.designer.cs.bak Resource.designer.cs after I change anything.
Terrible, I know, but I guess we must wait for @Redth to recompile the package.

And so i did, i deleted the error lines, copied the code to an in memory file of notepad++ and every time before build i paste it inside Resource.Designer.cs. The best workaround so far.

@xalikoutis @CremboC @faceoffers28 My work around was pretty simple and work really well for my case but may not work for other people. I just used the Xamarin Forms version of the library, it compiles, runs, and scans just fine. It turns out I only need the android version anyway so this really worked out for me.
If you need both though it would be really easy to create a custom control with a customer renderer for both iOS and Android and wire up the properties of both. You would get very similar functionality to what the forms version does. The hardest part would be if you need a custom overlay that is when the forms version would get hard. In my case I am perfectly happen with the default overlay so.

@Bobisback Can you provide a little more detail as to exactly what you did? I assume that you have to somehow manually reference the non-Xamarin.Forms ZXing.Net.Mobile DLLs in your Android project. Thanks in advance!

@faceoffers28 Ya so I went to the component store in visual studio in my android project (not sure where this is in xamarin studio)

Then I installed the ZXing.Net.Mobile component. Aka not the ZXing.Net.Mobile for Forms.

Technically you could rinse and repeat for the iOS version as well. Below is the code for the android version I did. I also wrote a parser that converts the PDF417 barcode info to a dictionary I can access.
[assembly: ExportRenderer(typeof(LicenseScannerView), typeof(LicenseScannerRenderer))]

namespace Elead.Mobile.Android.CustomRenderers
{
    public class LicenseScannerRenderer : PageRenderer
    {
        private LicenseScannerView page;
        private MobileBarcodeScanner scanner;

        protected override async void OnElementChanged(ElementChangedEventArgs<Page> e)
        {
            base.OnElementChanged(e);

            page = e.NewElement as LicenseScannerView;

            // this is a ViewGroup - so should be able to load an AXML file and FindView<>
            var activity = Context as Activity;

            if (activity == null || page == null)
            {
                return;
            }

            page.StopLoading();
            var options = new ZXing.Mobile.MobileBarcodeScanningOptions
            {
                PossibleFormats = new List<ZXing.BarcodeFormat>()
                {
                    BarcodeFormat.PDF_417
                }
            };

            scanner = new ZXing.Mobile.MobileBarcodeScanner();
            scanner.TopText = "Hold your phone up to the barcode on back of license";
            scanner.BottomText = "Scanning will happen automatically";

            var result = await scanner.Scan(options);
            //scanner.ScanContinuously(options, result => page.GotScanResultAndroid(result.Text));

            page.GotScanResultAndroid(result == null ? string.Empty : result.Text);
        }
    }
}

And with fairly little work you could create a custom renderer for iOS as well, and create bind-able properties for all the fields in the scanner. This would afford you almost the same functionality as the current xamarin forms version. I have some free time today I could probably get that going pretty easily. Like I said the issue comes in if you want a custom overlay. It would get messy at that point. Really though there is probably nothing stopping us from just openning the ZXing forms dll and copying the renderers he made in that into our project lol.
Hope this helps!

@Bobisback This is great! I've only been developing for less than a year and working with Xamarin for even less, so some of these workarounds people come up with are a little over my head at this point. I understand the concepts, but I need the specifics in most cases. I see that you are looking at providing a more complete solution, so I will be on the lookout for that. I've got XZing.Net.Mobile working in my iOS project, so the custom overlay is fine by me. I just want it to work in Android. My PCL targets 259, so I've managed to get all my components and code working across so many devices. This is really the last piece to the puzzle for me.

@faceoffers28 ya if you have never done a custom control before they are pretty daunting, but once you do one they are great. I have like 60 custom controls that I use on a daily basis to help make coding easier by reusing controls that I use alot. I am commenting my code now so I can commit my changes (As I got it working like I want) as soon as I finish that I will spin up a sample project with what I am talking about. If you do not need iOS then my solution should work pretty well for you depending on how you are calling the iOS side of things. I am guessing you are not using custom renderers?

Has anyone tried the prerelease version which should fix this?

^^^^ in that case, not going to worry about doing anything more about this. Did not realize there was a fix in the prerelease for this. For the record I have not tried the prerelease version, but since I already got working what I needed I do not really have a reason to update and try it.
Thanks Redth for the work you have done on this project!
See ya,
Bob

@Redth Pre-release available via NuGet pkg?

No need to go with the Resource.Designer.cs. Just add the missing entries into partial classes, like this:
`
using System;
namespace MyProject.Droid
{
public partial class Resource
{
public partial class Attribute
{
public const int mediaRouteSettingsDrawable = -2;
}
public partial class Color
{
public const int design_textinput_error_color = -1;
}
	public partial class Dimension
	{
		public const int design_fab_content_size = -1;
		public const int design_navigation_padding_top_default = -1;

		public const int design_tab_min_width = -1;
		public const int dialog_fixed_height_major = -1;
		public const int dialog_fixed_height_minor = -1;
		public const int dialog_fixed_width_major = -1;
		public const int dialog_fixed_width_minor = -1;
		public const int mr_media_route_controller_art_max_height = -1;
	}

	public partial class Drawable
	{
		public const int ic_setting_dark = -1;
		public const int ic_setting_light = -1;
		public const int mr_ic_settings_dark = -1;
		public const int mr_ic_settings_light = -1;
	}

	public partial class Id
	{
		public const int art = -1;
		public const int buttons = -1;
		public const int default_control_frame = -1;
		public const int media_route_control_frame = -1;
		public const int media_route_list = -1;
		public const int media_route_volume_layout = -1;
		public const int media_route_volume_slider = -1;
		public const int play_pause = -1;
		public const int route_name = -1;
		public const int settings = -1;

		public const int stop = -1;
		public const int subtitle = -1;
		public const int title_bar = -1;
		public const int disconnect = -1;
	}

	public partial class Layout
	{
		public const int mr_media_route_chooser_dialog = -1;
		public const int mr_media_route_controller_material_dialog_b = -1;
		public const int mr_media_route_list_item = -1;
	}

	public partial class String
	{
		public const int mr_media_route_chooser_dialog = -1;
		public const int mr_media_route_controller_material_dialog_b = -1;
		public const int mr_media_route_list_item = -1;

		public const int mr_media_route_button_content_description = -1;
		public const int mr_media_route_chooser_searching = -1;
		public const int mr_media_route_chooser_title = -1;
		public const int mr_media_route_controller_disconnect = -1;
		public const int mr_media_route_controller_no_info_available = -1;
		public const int mr_media_route_controller_pause = -1;
		public const int mr_media_route_controller_play = -1;
		public const int mr_media_route_controller_settings_description = -1;
		public const int mr_media_route_controller_stop = -1;
		//public const int ApplicationName = -1;
		//public const int Hello = -1;
	}

	public partial class Style
	{
		public const int RtlOverlay_Widget_AppCompat_ActionButton_Overflow = -1;

	}

	public partial class Styleable
	{
		public const int FloatingActionButton_android_background = -1;
		public const int[] Theme = null;
		public const int Theme_actionBarDivider = -1;
		public const int Theme_actionBarItemBackground = -1;
		public const int Theme_actionBarPopupTheme = -1;
		public const int Theme_actionBarSize = -1;
		public const int Theme_actionBarSplitStyle = -1;
		public const int Theme_actionBarStyle = -1;
		public const int Theme_actionBarTabBarStyle = -1;
		public const int Theme_actionBarTabStyle = -1;
		public const int Theme_actionBarTabTextStyle = -1;
		public const int Theme_actionBarTheme = -1;
		public const int Theme_actionBarWidgetTheme = -1;
		public const int Theme_actionButtonStyle = -1;
		public const int Theme_actionDropDownStyle = -1;
		public const int Theme_actionMenuTextAppearance = -1;
		public const int Theme_actionMenuTextColor = -1;
		public const int Theme_actionModeBackground = -1;
		public const int Theme_actionModeCloseButtonStyle = -1;
		public const int Theme_actionModeCloseDrawable = -1;
		public const int Theme_actionModeCopyDrawable = -1;
		public const int Theme_actionModeCutDrawable = -1;
		public const int Theme_actionModeFindDrawable = -1;
		public const int Theme_actionModePasteDrawable = -1;
		public const int Theme_actionModePopupWindowStyle = -1;
		public const int Theme_actionModeSelectAllDrawable = -1;
		public const int Theme_actionModeShareDrawable = -1;
		public const int Theme_actionModeSplitBackground = -1;
		public const int Theme_actionModeStyle = -1;
		public const int Theme_actionModeWebSearchDrawable = -1;
		public const int Theme_actionOverflowButtonStyle = -1;
		public const int Theme_actionOverflowMenuStyle = -1;
		public const int Theme_activityChooserViewStyle = -1;
		public const int Theme_alertDialogButtonGroupStyle = -1;
		public const int Theme_alertDialogCenterButtons = -1;
		public const int Theme_alertDialogStyle = -1;
		public const int Theme_alertDialogTheme = -1;
		public const int Theme_android_windowAnimationStyle = -1;
		public const int Theme_android_windowIsFloating = -1;
		public const int Theme_autoCompleteTextViewStyle = -1;
		public const int Theme_borderlessButtonStyle = -1;
		public const int Theme_buttonBarButtonStyle = -1;
		public const int Theme_buttonBarNegativeButtonStyle = -1;
		public const int Theme_buttonBarNeutralButtonStyle = -1;
		public const int Theme_buttonBarPositiveButtonStyle = -1;
		public const int Theme_buttonBarStyle = -1;
		public const int Theme_buttonStyle = -1;
		public const int Theme_buttonStyleSmall = -1;
		public const int Theme_checkboxStyle = -1;
		public const int Theme_checkedTextViewStyle = -1;
		public const int Theme_colorAccent = -1;
		public const int Theme_colorButtonNormal = -1;
		public const int Theme_colorControlActivated = -1;
		public const int Theme_colorControlHighlight = -1;
		public const int Theme_colorControlNormal = -1;
		public const int Theme_colorPrimary = -1;
		public const int Theme_colorPrimaryDark = -1;
		public const int Theme_colorSwitchThumbNormal = -1;
		public const int Theme_controlBackground = -1;
		public const int Theme_dialogPreferredPadding = -1;
		public const int Theme_dialogTheme = -1;
		public const int Theme_dividerHorizontal = -1;
		public const int Theme_dividerVertical = -1;
		public const int Theme_dropDownListViewStyle = -1;
		public const int Theme_dropdownListPreferredItemHeight = -1;
		public const int Theme_editTextBackground = -1;
		public const int Theme_editTextColor = -1;
		public const int Theme_editTextStyle = -1;
		public const int Theme_homeAsUpIndicator = -1;
		public const int Theme_listChoiceBackgroundIndicator = -1;
		public const int Theme_listDividerAlertDialog = -1;
		public const int Theme_listPopupWindowStyle = -1;
		public const int Theme_listPreferredItemHeight = -1;
		public const int Theme_listPreferredItemHeightLarge = -1;
		public const int Theme_listPreferredItemHeightSmall = -1;
		public const int Theme_listPreferredItemPaddingLeft = -1;
		public const int Theme_listPreferredItemPaddingRight = -1;
		public const int Theme_panelBackground = -1;
		public const int Theme_panelMenuListTheme = -1;
		public const int Theme_panelMenuListWidth = -1;
		public const int Theme_popupMenuStyle = -1;
		public const int Theme_popupWindowStyle = -1;
		public const int Theme_radioButtonStyle = -1;
		public const int Theme_ratingBarStyle = -1;
		public const int Theme_searchViewStyle = -1;
		public const int Theme_selectableItemBackground = -1;
		public const int Theme_selectableItemBackgroundBorderless = -1;
		public const int Theme_spinnerDropDownItemStyle = -1;
		public const int Theme_spinnerStyle = -1;
		public const int Theme_switchStyle = -1;
		public const int Theme_textAppearanceLargePopupMenu = -1;
		public const int Theme_textAppearanceListItem = -1;
		public const int Theme_textAppearanceListItemSmall = -1;
		public const int Theme_textAppearanceSearchResultSubtitle = -1;
		public const int Theme_textAppearanceSearchResultTitle = -1;
		public const int Theme_textAppearanceSmallPopupMenu = -1;
		public const int Theme_textColorAlertDialogListItem = -1;
		public const int Theme_textColorSearchUrl = -1;
		public const int Theme_toolbarNavigationButtonStyle = -1;
		public const int Theme_toolbarStyle = -1;
		public const int Theme_windowActionBar = -1;
		public const int Theme_windowActionBarOverlay = -1;
		public const int Theme_windowActionModeOverlay = -1;
		public const int Theme_windowFixedHeightMajor = -1;
		public const int Theme_windowFixedHeightMinor = -1;
		public const int Theme_windowFixedWidthMajor = -1;
		public const int Theme_windowFixedWidthMinor = -1;
		public const int Theme_windowMinWidthMajor = -1;
		public const int Theme_windowMinWidthMinor = -1;
		public const int Theme_windowNoTitle = -1;
	}
}

}
`
As soon as the problem is fixed, get rid of the file and you're fine.
Cheers.
Silver.

i was able to add the current pre-release to my PCL project but it failed when I tried adding the nuget (2.1.0-beta 1) to my droid package with this text in the package manager console:
Adding ZXing.Net.Mobile.Forms...
Attempting to resolve dependency 'ZXing.Net.Mobile (≥ 2.1.0-beta1)'.
Attempting to resolve dependency 'Xamarin.Android.Support.v4 (≥ <IP_ADDRESS>)'.
Attempting to resolve dependency 'Xamarin.Forms (≥ <IP_ADDRESS>90)'.
Attempting to resolve dependency 'Xamarin.Android.Support.v4 (= <IP_ADDRESS>)'.
Already referencing a newer version of 'Xamarin.Android.Support.v4'.

I have XF <IP_ADDRESS> and the Xamarin.Android.Support.v4 is 23.3.0, which is why this is failing, I suppose.
Should I be using the ZXing component from the component store in my platform projects rather than the nugets?

I tried 2.1.0-beta 1 and it works fine immediately - no errors whatsoever. I got mine via NuGet.

I tried adding the components (<IP_ADDRESS>) in my platform projects and the build fails with all of the resource errors as noted above.

@CremboC what version of xamarin forms do you have? which versions of the android support libraries? which exact packages did you install into which projects?

@mrbelk I am using the following:
Xamarin.Forms: <IP_ADDRESS>
ZXing.Net.Mobile: 2.1.0-beta1
ZXing.Net.Mobile.Forms: 2.1.0-beta1
And in Android:
  <package id="Xamarin.Android.Support.Animated.Vector.Drawable" version="23.3.0" targetFramework="MonoAndroid60" />
  <package id="Xamarin.Android.Support.Design" version="23.3.0" targetFramework="MonoAndroid60" />
  <package id="Xamarin.Android.Support.v4" version="23.3.0" targetFramework="MonoAndroid60" />
  <package id="Xamarin.Android.Support.v7.AppCompat" version="23.3.0" targetFramework="MonoAndroid60" />
  <package id="Xamarin.Android.Support.v7.CardView" version="23.3.0" targetFramework="MonoAndroid60" />
  <package id="Xamarin.Android.Support.v7.MediaRouter" version="23.3.0" targetFramework="MonoAndroid60" />
  <package id="Xamarin.Android.Support.v7.RecyclerView" version="23.3.0" targetFramework="MonoAndroid60" />
  <package id="Xamarin.Android.Support.Vector.Drawable" version="23.3.0" targetFramework="MonoAndroid60" />
  <package id="Xamarin.Forms" version="<IP_ADDRESS>" targetFramework="MonoAndroid60" />
  <package id="ZXing.Net.Mobile" version="2.1.0-beta1" targetFramework="MonoAndroid60" />
  <package id="ZXing.Net.Mobile.Forms" version="2.1.0-beta1" targetFramework="MonoAndroid60" />

@CremboC interesting.  I'll give it another shot.

It worked this time.

Pre-release worked for me.  Thanks for pushing out a fix, @Redth .

When I got the pre-release version of ZXing.Net.Mobile.Forms, i cannot reference the library anymore?
I just get the "The type of namespace name "ZXing" could not be found in the globla namespace(are you missing an assembly reference?)" Anyone else tried this?

Android SDK Build-Tools 24 was the roadblock for me on this issue.
after downgrading to 23.anything "and" updating to the 2.1.0-beta1 of ZXing; I hadn't tried both those things at the same time yesterday :-/ I am at last able to get my Android project to build...and it even ran this time :-)

I can confirm that Zxing.Net.Mobile is now working in my Xamarin.Forms (Portable PCL 259) Android Project (23 SDK). I had to Reference the new DLLs in my Portable, but the Nuget Packages installed just fine into my Android Project. My test device is a Samsung Galaxy S3, running API 19. Hope this helps. I have not tested my iOS app, but it was working just fine.

This will be fixed in the next major release.  As indicated in a few places, it works in the prerelease project now :)


Keycloak add fonts

Fixed a few mobile responsive issues also

This is the build failure, which appears like a transient failure downloading an elm package
Failed to compile.

./src/Main.elm
Module build failed: Error: Compiler process exited with error Compilation failed
Error: The following HTTP request failed.
<https://github.com/evancz/elm-markdown/zipball/3.0.2/>

502: Failure

Nice work!


Marketing and Operations Tasks

Help schedule the next three Tools for Thought Rocks events (they're about super apps)

(I've facilitated TFT rocks for the last 2 yrs. About 30-50 people show up. The only reason I stopped was admin overhead. We can "sponsor" TFT Rocks events through the use of my time, giving me a chance to give a quick shout-out to DXOS. This is a setup for a launch venue for Composer!)
invite speakers
find a time/date that works for all speakers
publicize on social media
create the luma event
post recordings to youtube
edit recordings to have appropriate speaker descriptions

Set up a DXOS Mastodon account

pick an appropriate server
sign up and add all of the appropriate meta (description, profile photo, links, etc)
make it so that typefully somehow posts to mastodon as well
follow some initial folks

Clean up and post DXOS videos

update descriptions with chapters and a summary
edit the generated transcript
post the video to the DXOS blog with generated transcript

add a header photo for the blog post

schedule Z + J to have another fireside chat
handle the post-processing on the video

For each blog post

pick a header image
convert to a tweet thread and schedule in typefully
post to #announcements in discord? #blog channel?

Event logistics

book lodging for strangeloop
book lodging for ACM SPLASH

design and order swag

deliver it to strangeloop for localfirst event
deliver care packages to Nick Basile and other early developers

@jessmartin I spent a good chunk of time today doing Mastodon research - lots of learnings that I will share + document shortly
From the long list you shared, there were only 2 company (+ 1 person) who had Mastodon accounts:
https://mas.to/@tldraw
https://mastodon.world/<EMAIL_ADDRESS>https://mastodon.world/<EMAIL_ADDRESS>Is Val.town run by Sebastian De Deyne? If so, he is the 4th Mastodon account: https://mastodon.social/@sebdd
A handful of the companies from the list you shared have an automation like this: https://mastodon.world/<EMAIL_ADDRESS>"This account is a replica from Twitter. Its author can't see your replies. If you find this service useful, please consider supporting us via our Patreon."
If you want to engage with users on Mastodon, I don't recommend @bird.makeup.
Questions:
Which topics from this list are most important to what DXOS does? Below are some suggestions:
Business
Linux
Linux Distros
Privacy
Software Development
Tech
Tech New
Same question with this list: Trunk. Here are my guesses:
Devops
Engineering
Linux
Operating Systems
Ruby
Social Innovation
Privacy
Check out how easy it is to get verified on Mastodon?!


TrackState Covariance matrix needs different conversion

https://github.com/key4hep/k4LCIOReader/blob/d92c743203114478de8802593b1892a6c92f94d3/k4LCIOReader/src/k4LCIOConverter.cc#L358
The LCIO covariance matrix is lower triangle, while the one in EDM4hep is the upper triangle.
http://lcio.desy.de/v02-09/doc/doxygen_api/html/classEVENT_1_1TrackState.html#a667b8774ce1b0f42dbae11a59dc7e09b
https://github.com/key4hep/EDM4hep/blob/e17d47ab9f17f3a56fb90550d307275cacd93153/edm4hep.yaml#L63

Instead change to lower triangle in EDM4hep

Instead change to lower triangle in EDM4hep


Problems with SWS/BR actions that play from mouse cursor position and solo track under mouse for the duration

Reported on the forum

I seem to have found some bugs with the latest SWS release. Correct me if I am wrong but here goes.
Play from mouse cursor position and solo track under mouse for the duration:
This is a great feature, but unfortunately the soloing itself doesnt work as it should. It doesnt automatically solo parent tracks / returns as Reaper does when soloing. So right now pretty useless for child tracks.
Move cursor left/right 10 pixels creating time selection:
When zoomed out, this not only moves the cursor left creating time selection, but it also moves the actual starting point of the time selection.
I.e if I have the cursor right at the edge of an item, performing this action I have to be really zoomed in for the start of the time selection to stay on the very edge of the item.

and also

I should add that the solo function works for folders, but not for subgroups...

Another thing that could be very nice about these action is the unsolo the track only when play cursor is gone back to edit cursor position. Actually, when there is several tracks with several items, when we release the keyboard shortcut (that solo an item under mouse), we can hear during few miliseconds the others tracks. It is a bit disturbing when we use this action a lot.
So, it would be nice if these action only play what is under mouse, and have no leaaks when we release the key.
Thanks for listening :)

Update. I agree with X-Raym.
It gives horrible noise from all tracks.
This function works well, while there is no much plugins, no interface latency. And if function started from stop.
But sometimes i need used it during play, and have  plugins with latency. It could be very useful in sounddesign , filmmaking.
I'm not a programmer, but as can understand, the key of this problem is an action sequence.
I can write similar reaper custom action, but can't make it dependant shortcut realised.
So, here right sequence, wich i hope, can prevent horrible noise:
-save play cursor position
-solo item uder mouse
-solo track under mouse
-unmute all tracks
-play from mouse cursor
//
-stop
-unsolo item uder mouse
-restore tracks mute states
-unsolo track under mouse
-play from saved position (if action starts during play)
I use action _BR_CONT_PLAY_MOUSE_SOLO_ITEM (SWS/BR: Play from mouse cursor position and solo item and track under mouse for the duration (perform until shortcut released))
Thanks a lot! Hope, my thoughts will be helpfull.


How many thread can WorldBorder use?

Hi,
My server' cpu has 40 threads and worldborder only use 2 threads. How can i use all the threads to fill the world?

Didn't found solution?

Filling the world relies on the vanilla chunk loading/generating methods, Those methods were (and probably still are?) run through a single thread in a queue. There's nothing this plugin can do about that.
I'm no longer actively developing this plugin, so I haven't kept up with developments. It's remotely possible those methods were made thread-safe and able to be run multi-threaded, but I doubt it.


Form Validation #210

Registration Form Validation Implementation. Initial implementation of form validation for forms on the site. Also fixed minor bug where village prefix wouldn't stick after closing the modal for the registration form. Removed toasts as I felt it made it too visually cluttered.
If this implementation of form validation is approved I will move on to implement it for the rest of the forms.

can try using react hook forms


Map data

Hello!
How can I view my city?
There are no information. Is data came from OSM?
      var map = L.eeGeo.map("map", api_key, {
        center: [50.25655, 127.51859],
        zoom: 12
      });

Hi! Thanks for your interest in our maps.
Unfortunately we do not yet have complete data coverage. We don't have coverage for Russia or China. The WGS84 lat,lon referenced is right on the Russia China border.
At time of writing, we do have complete coverage for the following countries:

UK & Ireland (https://maps.eegeo.com/?lat=55.948900&lon=-3.198104)
USA (https://maps.eegeo.com/?lat=40.762165&lon=-73.973875)
Canada (https://maps.eegeo.com/?lat=49.286133&lon=-123.120475)
Italy (https://maps.eegeo.com/?lat=43.723269&lon=10.396589)
Norway (https://maps.eegeo.com/?lat=59.912498&lon=10.728146)
Sweden (https://maps.eegeo.com/?lat=59.326505&lon=18.059468)
Finland (https://maps.eegeo.com/?lat=60.167548&lon=24.942328)

We are adding more coverage as per customer demand. Our data comes from various sources, some commercial and some open.
We are looking to add China coverage in 2017. Russian coverage is not currently on our 2017 roadmap.
Hope this helps.

is there is some way to add Russia coverage
could I do for myself? standolone tiled (or SVG or OSM) server ?
PS
And I got your exercise.

It is not currently possible to build or host your own map tiles.


Update DNSPod DOH ip

https://www.dnspod.cn/Products/publicdns
Signed-off-by: Jang Jun<EMAIL_ADDRESS>

The bootstrap_dns setting is not for the IP addresses of the DoH servers, it's an IP address for the fallback, non-DoH, resolver, which in this case is still the same as in the current file.

Sorry,
I understand wrong.


fix(dom-api-shady): getOwnerRoot issue with window

fix _ownerShadyRootForNode process _ownerShadyRootForNode for window element!
When we use some jquery plugin we have error on document.documentElement.contains(node) becouse node is window!
I don't know when and why node is window but i have always this error when tap on some jquery modules!
I will try to find the exactly what happened but bytheway getOwnerRoot must skip process on window

Reference Issue

I am closing this pull request for now, as it appears to be stale. Please reopen once you have a reproduction case so that we can review and understand the problem 😄


log output in json format

I tried to look over the code but wasn't able to determine if the logs would be in json format. The README.md suggests it is not.
If I'm mistaken perhaps the docs can be updated. If not, could the feature be added?

LOG_FORMAT=json env var will do this. Could be better documented certainly


Fix #7806: Abort loadingTask and throw an error when wrong password is provided to decrypt the pdf.

messageHandler.on('IncorrectPassword',
                        function transportIncorrectPassword(exception) {
        var loadingTask = this.loadingTask;
        if (loadingTask.onPassword) {
          return loadingTask.onPassword(updatePassword,
                                        PasswordResponses.INCORRECT_PASSWORD);
        }
        loadingTask._capability.reject(
          new PasswordException(exception.message, exception.code));
      }, this);

The if condition in above handler is calling it repeatedly when wrong password is provided.
Removing it will abort the loadingTask and throw an error on wrong password.

Unfortunately this patch will not work, since just removing that code first of all breaks (at least) one of the password unit-tests in api_spec.js. Second of all, and much more serious, is that this patch completely breaks password handling in the default viewer!
For future reference: please make to sure to run the tests, as described in https://github.com/mozilla/pdf.js/wiki/Contributing, locally when developing a patch that touches files in the /src folder.
Furthermore, please also remember to manually test that the default viewer still works, when touching code that the viewer (directly or indirectly) relies on.
Closing, since this patch unfortunately cannot work.

Okay, i will take of that from now and thanks for your advice.
But can you please guide me how can i work on this issue, i am interested in it. Can you please provide me some points to start.

I think that https://github.com/mozilla/pdf.js/issues/7806#issuecomment-261273634 describes the desired behaviour quite well. The generic throw case appears to be entirely straightforward to implement, by simply adding suitable try ... catch statements to NeedPassword/IncorrectPassword.
However, properly supporting the loadingTask.destroy() case as well, as is necessary as well, might be slightly more complicated and perhaps require some refactoring (since you'll need to reject the loadingTask with the correct error in this case too). Without actually trying to implement this myself, I'm not sure how much assistance I can really provide here unfortunately.


Fix outputs

Closes #210
--format esm,umd only spits .js files, which breaks CJS imports because the UMD build uses require while package.json sets type: module. So if we don't want to generate any cjs, we ought to set the type to commonjs and then generate umd and esm/mjs builds.

CC @nebrelbug


⚠ ClamAV has degraded performance

In f9e1453, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 104 ms

Resolved: ClamAV performance has improved in f681a40.


feat: move litestar.contrib.prometheus to litestar.plugins.prometheus

Description
feat: deprecate litestar.contrib.prometheus in favor of the new location of litestar.plugins.prometheus

Closes

sorry maybe a dumb q - what is the benefit here of moving from contrib to plugins aside from renaming it?
also i feel like this one is a good candidate to move outside of the stdlib into its own package and then we can assign it as an extra

The goal is to get any non-essential core code into a plugin style structure.  Right now, we have both litestar.plugins and litestar.contrib and it's contributing to code sprawl and additional maintenance overhead.
Re: the move to an external library I also agree.  In fact, I think most (maybe all) of the plugins can ultimately be treated that way.  We can do that in steps though.


D Pad stuck in a corner

Hi,
I don’t see anyone else to have this problem, so I may be doing something wrong.
Basically I’m trying to assign D Pad (up, down, left, right) on a joystick to emulate an XBox controller. But when I set right and then left it gets permanent pressed to the left, when I do the same for up down, same but down, so the result is it gets stuck in a corner, like if I was pressing down left all the time.
On windows controller panel where you can check the status and properties does not have that issue.
I tried with 2x snes wireless controllers and 2x arcade usb sticks with the same result.
Am I doing something wrong?
Thanks everyone

Hi, it was my fault, I just need it to configure the axes instead of the DPad. Thank you, this program is awesome.


Revert "Fix Disposable classes"

Reverts ircluzar/RTCV#12
After discussion with @ircluzar  we determined that, although it's just IDisposable, we shouldn't be adding stuff shortly before an RC (we want to release a stable build very soon).
There's a new 506 branch, please rebase any PRs there @scowalt

Got it and agreed. @NarryG, should I move all of the dependant repos to 506? (Maybe do it in a couple of weeks?)


improve assert failure message for send_data retry tests

What does this PR do?
A brief description of the change being made with this pull request.
Motivation
What inspired you to submit this pull request?
Additional Notes
Anything else we should know when reviewing?
How to test the change?
Describe here in detail how the change can be validated.

Codecov Report
Attention: Patch coverage is 50.00000% with 7 lines in your changes missing coverage. Please review.

Project coverage is 72.55%. Comparing base (c48d94b) to head (c7da7a9).

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #610      +/-   ##
==========================================
- Coverage   72.63%   72.55%   -0.09%
==========================================
  Files         246      246
  Lines       34964    34971       +7
==========================================
- Hits        25396    25372      -24
- Misses       9568     9599      +31

Components
Coverage Δ

crashtracker
20.44% <ø> (+0.05%)
:arrow_up:

datadog-alloc
98.73% <ø> (ø)

data-pipeline
90.12% <ø> (ø)

data-pipeline-ffi
0.00% <ø> (ø)

ddcommon
82.82% <ø> (ø)

ddcommon-ffi
68.11% <ø> (ø)

ddtelemetry
59.02% <ø> (ø)

ipc
83.61% <ø> (ø)

profiling
83.57% <ø> (-0.70%)
:arrow_down:

profiling-ffi
77.42% <ø> (ø)

serverless
0.00% <ø> (ø)

sidecar
40.13% <ø> (ø)

sidecar-ffi
0.00% <ø> (ø)

spawn-worker
50.36% <ø> (ø)

tinybytes
91.66% <ø> (ø)

trace-mini-agent
70.88% <ø> (ø)

trace-normalization
98.25% <ø> (ø)

trace-obfuscation
95.73% <ø> (ø)

trace-protobuf
77.67% <ø> (ø)

trace-utils
92.83% <50.00%> (-0.18%)
:arrow_down:


Branch new descriptions

Before sending a pull request, please review Contribution Guidelines:
https://github.com/google/syzkaller/blob/master/docs/contributing.md

The first thing to check is the CI: The Details link near continuous-integration/travis-ci/pr
It failed. This needs to be fixed. It seems you did not run "make generate" because there is a diff in generated files (o you did not checked in updated files).
You can also run all testing locally with "make presubmit".

Codecov Report

Merging #1301 into master will decrease coverage by 0.04%.
The diff coverage is n/a.

@@            Coverage Diff            @@
##           master   #1301      +/-   ##
=========================================
- Coverage   57.75%   57.7%   -0.05%
=========================================
  Files         131     131
  Lines       24628   24628
=========================================
- Hits        14224   14212      -12
- Misses       9729    9738       +9
- Partials      675     678       +3

Impacted Files
Coverage Δ

pkg/csource/csource.go
75.73% <0%> (-5.85%)
:arrow_down:

prog/any.go
88.69% <0%> (-0.71%)
:arrow_down:

prog/mutation.go
93.43% <0%> (-0.46%)
:arrow_down:

prog/rand.go
85.98% <0%> (+1.04%)
:arrow_up:

prog/prog.go
83.5% <0%> (+3.5%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 32329ce...9527f21. Read the comment docs.


Create indicator where learner/student is in the Map

Challenge http://freecodecamp.com/challenges/waypoint-use-the-bootstrap-grid-to-put-elements-side-by-side has an issue. Please describe how to reproduce it, and include links to screenshots if possible.
I realized that I feel "lost" while learning and being slightly buggy I think it is because I lost trust in navigation to take me to next waypoint SO I propose small change that would indicate where we are in the learning process...

+1, but I think this might be better implemented when FCC is Reactified?

There is a new version coming that will use react?
Goran Draskovic

On Aug 23, 2015, at 11:55 AM, Anton Strömkvist<EMAIL_ADDRESS>wrote:
+1, but I think this might be better implemented when FCC is Reactified?
—
Reply to this email directly or view it on GitHub.

@dgoran It's one of the milestones as well as mentioned in a blog post (search for single-page).

Yes, in the coming weeks. Other features are pending at the moment.

I think this can be closed now. CC: @FreeCodeCamp/issue-moderators


Create CIA builds

Creating CTR Importable Archives may be desirable for easier access from a user's home menu.

https://github.com/TricksterGuy/3ds-template might be of use here.

https://github.com/TricksterGuy/3ds-template might be of use here.


Make sure broken tests are filtered out in XLA tests suites.

PiperOrigin-RevId: 214311663

Looks like it does not really work.


Fix numeric with leading zero fractional

Numeric numbers with a fractional part with a leading zero (eg: 10.08) will be decoded from the database without the leading zero (ie: 10.80).
This is a serious issue which results in corrupted numeric values.

Hey @dmonagle, you just merged a pull request, have a coin!
You now have 1 coins.


Improve Documentation and dockerize application

Added Dockerfile and example docker-compose file.
Added Redis URI Environment configuration
Added Documentation about the Docker build and usage to ReadMe
Changed index.html to a template to allow for a custom base URL and default show substituded at container startup
Should address #7

Thanks, but this breaks a lot of formatting in various places (no newlines at the end of files, extra whitespace) and the Dockerfile is less than efficient (my main company right now is a CD service, so I'm hyper-critical of this). I can see about adding more specific deploy tooling later.


How to add any folder/files in GoDeps workspace?

We are using GRPC Gateway which needs $GOPATH/src/github.com/gengo/grpc-gateway/third_party/googleapis as part of the build process. We would like to add this into GoDeps folder. This will help us avoid build issues. Is there a way to do this?

godep save -r ./... github.com/gengo/grpc-gateway/third_party/googleapis/...
Rewrites will work sanely once #343 is merged (likely next week pending rebase / update by author).
That should vendor the github.com/gengo/grpc-gateway/third_party/googleapis and all it's sub packages assuming they're not messed up in some way (or a bug).


Update nokogiri to 1.10.1

Resolves #741
Description
Nokogiri is conflicted in the Gemfile.lock currently, and the bundle won't install. This change updates Nokogiri to 1.10.1, which installs cleanly.
Type of change

Bug fix (non-breaking change which fixes an issue)

How Has This Been Tested?
Ran the build under the new version, all green.

Woot! Thank you!


Updating compute_objects to match new approach

TraversalGoal didn't match the abstract methods from the base class so no traversal files were being generated.

Merged master back into this branch. It should be consistent now.


Book improvements v2

[x] #327 - Incorporate diagrams from @torkleyy's computer
[x] Add saveload chapter
[x] Update chapter about tracked storage

I have a small suggestion for chapter 3 of the book. It might be more instructive to have the HelloWorld system depend on UpdatePos, so that the updated values are printed rather than the initial ones:
let mut dispatcher = DispatcherBuilder::new()
    .with(UpdatePos, "update_pos", &[])
    .with(HelloWorld, "hello_world", &["update_pos"])
    .build();

@aspurdy Sounds great, maybe we could even add HelloWorld twice, one before the update and one after. Would you like to create a PR for that?

@torkleyy Sure thing, I'd be happy to contribute that.

Hello,
Should I wait on #460 and #461 being finished before working on adding the saveload chapter ?
Thanks.

Hey, sorry for the late reply. I think that would make sense, yes. One potential change might be a combination of two traits (FromDeserialize and ToSerialize), so that would affect the book.

Would be super nice to have that saveload chapter. :)

Hello,
I forgot about this issue, apologies.
I haven't began any work yet, if you'd like to tackle this, please feel free.
If not, I'll try dedicating some time in the following weeks.
Thanks

That would be great, thank you @ldesgoui!

Fixed by #589! Thanks @ldesgoui!


Don't override @root

Handlebars uses the @root variable to mean the object that's passed into the template. handlebars-wax is overriding that value to mean globally registered data. That's the root cause of shannonmoeller/gulp-hb#49 and unic/estatico#36.
Instead of overriding @root, two new @ variables should be introduced:

@global: Reference to the globally registered data (formerly @root).
@local: Reference to the data passed into a template created with wax.compile.
@root: Reverts to default Handlebars mechanic. In wax terms, that means @root will be equivalent to Object.assign({}, global, local);.

This has been implemented and released as v5.


Add created_at timestamp to feed response

Describe the problem
In order to track what feeds have been added over time, we need to add a created_at timestamp to a feed.
Proposed solution

Add created_at timestamp to a feed, including serving it in the feeds, gtfs and gtfs-rt feed responses. Description should state that this timestamp is when it was added to the Mobility Database backend.
Manually updated the created_at timestamps for previous feeds. Spreadsheet of dates after February 8th here.

Alternatives you've considered
No response
Additional context
No response

Tasks:

[ ] Modify DB schema
[ ] Modify populate script
[ ] Modify API response
[ ] Add/modify unit test
[ ] Create sql script to manually update existing feeds


Fixes for local development

@mdp Seems I can't rebase your branch to resolve the conflict in your PR, so I made a couple small fixes and pushed up here to merge into the latest master. Feel free to rebase your branch if you want your PR merged, or just approve this to get your changes into master.
It's essentially your branch with the wg_path, allow_unprivileged_device_management, and cookie_signing_salt keys added to the fz_http config list.
Refs #558

Hi @mdp, just wondering how this works. Does Codespace do some magic to expose the ports? The compose file doesn't expose any ports and is not running the phoenix app. How can I reach the app?
I'm mainly on Sublime and haven't played much with devcontainers. Apologies if it's a noob question.

Yeah, this is for use in a devcontainer setup like VSCode remote or
Codespaces, but it makes more sense that it should start the development
server when using vanilla compose. With regards to ports, they are
automatically forwarded with VSCode via ssh, or an nginx proxy on
Codespaces.
On Sat, Apr 30, 2022 at 4:49 AM Po Chen @.***> wrote:

Hi @mdp https://github.com/mdp, just wondering how this works. Does
Codespace do some magic to expose the ports? The compose file doesn't
expose any ports and is not running the phoenix app. How can I reach the
app?
I'm mainly on Sublime and haven't played much with devcontainers.
Apologies if it's a noob question.
—
Reply to this email directly, view it on GitHub
https://github.com/firezone/firezone/pull/562#issuecomment-1113951131,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAAWNAPR7DWI67RNQCFWRTVHTX2ZANCNFSM5UUEWF4A
.
You are receiving this because you were mentioned.Message ID:
@.***>

Thanks for the reply!


multidimensional file metadata Spatial reference string does not wrap and is not displayed properly

@dtarb, could you provide a link to this resource?

https://beta.hydroshare.org/resource/4e26d640a1224559b802fa62dc6b3e42/.  Look at file metadata in non edit mode.

@mauriel133 This html code is generated in python  here: https://github.com/hydroshare/hydroshare/blob/release-candidate-1.10.0/hs_app_netCDF/models.py#L170

tested on beta


Use the already created countries when creating Order.

OrderFactory includes a CountryFactory, so sometimes it would try to cause a unique constraint
violation. This patch explicitly passes a country to the OrderFactory in create_initial_data_for_dev
to avoid this issue.
fixes: #1078

Looks great! Thanks for fixing this! :shipit:


Inconsistent setting names

Hi,
I noticed a slight inconsistency with the setting variable names:
https://github.com/python-hyper/hyperframe/blob/4fe1a74d026f5c75c569979eadb663dcac2546a0/hyperframe/frame.py#L353-L356
SETTINGS_MAX_FRAME_SIZE and SETTINGS_MAX_HEADER_LIST_SIZE are the only ones prefixed with SETTINGS_*. Is there any reason why, or can we unify all the names here?

Yeah, this is a problem I've been aware of for a little while: presumably I suffered some kind of temporary lapse in judgement when I added those later variable names. You'll notice that hyper-h2's version of those variable names does not have this problem.
We absolutely can unify the names, but I'm not really in any rush to do it because it's either a semver-major change or it introduces duplication/aliasing into the class. For people using hyper-h2 they shouldn't have this problem, because they can use the aliases hyper-h2 provides. For people using hyperframe we should fix it, but I'm inclined to let it sit until we have some other semver-major changes we need to land.
Does that suit you @Kriechi?

I'm currently using hyperframe only for mitmproxy/netlib.
How about changing it, and providing a fallback to keep API compatibility, marking it as deprecated or so?

I'm open to doing that, for sure. That becomes substantially less painful.


Applied fixes from StyleCI

This pull request applies code style fixes from an analysis carried out by StyleCI.

For more information, click here.

Coverage remained the same at 81.818% when pulling 3609ba631c28e7d9e80b764da0c7c44fa5b67f7e on analysis-qBwAWL into 08a564a0cda2ec05276090ced4cf099f40910044 on develop.

Coverage remained the same at 81.818% when pulling 3609ba631c28e7d9e80b764da0c7c44fa5b67f7e on analysis-qBwAWL into 08a564a0cda2ec05276090ced4cf099f40910044 on develop.


How to handle osd disk failure?

Hi All!
I was thinking about how the coobook handles disk failures. What would be an operational procedure in case of an OSD disk dying with this cookbook? Has anyone have experience about this? Thanks in advance!

Me too, for this and other operational scenarios that people might have run across in real life.
For this case my guess is that you would let Ceph remove the OSD from the cluster, remove its entry from the node's osd list, replace the disk, then add a new entry for the new disk in the node's osd list.  (Please correct me if I missed something!)
But, it would be nice to know if there was an easy way to do this without going through rebalancing (twice), for example.


Scraping for online devices to use for presence detection

How often is the router scraped for new devices?
When I check the router and compare with the HA integration there is a device discrepancy, see attached photos.

Hi @cralwalker
Sorry for the late response.
Still an issue?

Screenshots right now attached below. I assume the Technicolor modem reporting should be the same on both interfaces?


there's any example to start with this?

sorry for posting here,,,
but I don't know how to start.
Plugin its copied to my project and detected and enabled fine.

Hey, unfortunately there is no project with example how to use it. When I have a moment I’ll try to create one (I have one but I need to do something more publishable :).
How well do you know ImGui? If you don’t then ImGui repository (https://github.com/ocornut/imgui) is a good place to start and imgui.h have extensive readme section. If you already know ImGui then all you need is to include imgui.h header and use it in your code. You can also register your own tick delegate and use ImGui code from there. I don’t think that one method is better than the other, so use whatever makes more sense in particular case. One thing to keep in mind is that I want to change the interface for ImGui tick delegates.
To see examples how to use ImGui you can check FImGuiDemo class which calls original demo. This is usually the best place to see how to use ImGui and what is possible. You can also check SImGuiWidget to see its own debug code. To see them in action use ImGui.ShowDemo and ImGui.Debug.Widget cvars.
If you don’t need to use own textures that would be about it. If you do, then FImGuiModule has functions allowing to register textures before they can be used in ImGui. I see that I didn’t actually update readme with that information.
Hope that helps a bit. Let me know if something is not clear.

Thank you @gabeparamo for your post.
First of all, thank you for pointing out possible confusion. I understand that this knowledge came from a personal struggle and for that I am sorry ;) I do see the problem and I maybe even better understand now what needs to be clarified. It is a bit rude of me to leave it without good example for that long but there is a reason to that. There is a bit of refactoring that I want to do which will almost surely affect the public API (those delegates that you mentioned) and I didn’t want to spread a soon-to-be depreciated knowledge.
But I appreciate the fact that in the meantime people might be confused, so I’ll use this thread as a temporary solution and will try to post a snippet demonstrating how it should be used from game... probably tomorrow as it is getting late here.

Ah I see! That makes perfect sense. Thank you for your response!! Happy new year!

Thank you @gabeparamo. Happy New Year to you too!
Below is an example with three different methods to debug object (Actor in this case). A bit long but I just cleaned and copied one of my test actors that I use in my ImGui dev project:
// ImGuiCommon.h

#pragma once

#ifdef IMGUI_API
#define WITH_IMGUI 1
#else
#define WITH_IMGUI 0
#endif // IMGUI_API

#if WITH_IMGUI
#include <ImGuiModule.h>
#include <ImGuiDelegates.h>

#include <imgui.h>
#endif // WITH_IMGUI

// ImGuiDebugOrderTest.h

#pragma once

#include "ImGuiCommon.h"

#include <CoreMinimal.h>
#include <GameFramework/Actor.h>

#include "ImGuiDebugOrderTest.generated.h"

UCLASS()
class AImGuiDebugOrderTest : public AActor
{
	GENERATED_BODY()

public:

	// To register and unregister static multi-context delegate.
	AImGuiDebugOrderTest();
	virtual void BeginDestroy() override;

	// To register and unregister per-object world delegate.
	virtual void BeginPlay() override;
	virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;

	// To debug during world tick.
	virtual void Tick(float DeltaTime) override;

#if WITH_IMGUI
	void ImGuiTick();
	static void ImGuiMultiContextTick();

	FImGuiDelegateHandle ImGuiTickHandle;
	static FImGuiDelegateHandle ImGuiMultiContextTickHandle;
#endif // WITH_IMGUI
};

// ImGuiDebugOrderTest.cpp

#include "ImGuiDebugOrderTest.h"

#include <Runtime/Engine/Public/EngineUtils.h>

FImGuiDelegateHandle AImGuiDebugOrderTest::ImGuiMultiContextTickHandle;

AImGuiDebugOrderTest::AImGuiDebugOrderTest()
{
	// Let's say that this actor ticks and we want to debug it.
	PrimaryActorTick.bCanEverTick = true;

	// Register static multi-context delegate (only for default object for symmetry with destruction).
	// Note that if module is not available at this point, registration can fail. This limitation of the API will be
	// fixed in one of the next few updates but for now, if necessary, a solution would be to retry registration
	// at a later stage (which I'm not doing here).
#if WITH_IMGUI
	if (IsTemplate() && !ImGuiMultiContextTickHandle.IsValid() && FImGuiModule::IsAvailable())
	{
		ImGuiMultiContextTickHandle = FImGuiModule::Get().AddMultiContextImGuiDelegate(FImGuiDelegate::CreateStatic(&AImGuiDebugOrderTest::ImGuiMultiContextTick));
	}
#endif // WITH_IMGUI
}

void AImGuiDebugOrderTest::BeginDestroy()
{
	Super::BeginDestroy();

	// Unregister static multi-context delegate. Failing to do so would result with multiplication of delegates during
	// hot reloading. And we do it only once for the default object to make sure that we unregister only when class is
	// not used anymore.

#if WITH_IMGUI
	if (IsTemplate() && ImGuiMultiContextTickHandle.IsValid() && FImGuiModule::IsAvailable())
	{
		FImGuiModule::Get().RemoveImGuiDelegate(ImGuiMultiContextTickHandle);
		ImGuiMultiContextTickHandle.Reset();
	}
#endif // WITH_IMGUI
}

void AImGuiDebugOrderTest::BeginPlay()
{
	Super::BeginPlay();

	// Register object's debug delegate in current world context.
#if WITH_IMGUI
	ImGuiTickHandle = FImGuiModule::Get().AddWorldImGuiDelegate(FImGuiDelegate::CreateUObject(this, &AImGuiDebugOrderTest::ImGuiTick));
#endif // WITH_IMGUI
}

void AImGuiDebugOrderTest::EndPlay(const EEndPlayReason::Type EndPlayReason)
{
	Super::EndPlay(EndPlayReason);

	// Unregister object's delegate.
#if WITH_IMGUI
	FImGuiModule::Get().RemoveImGuiDelegate(ImGuiTickHandle);
#endif // WITH_IMGUI
}

void AImGuiDebugOrderTest::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);

	// Debug during world tick.
#if WITH_IMGUI
	ImGui::Begin("ImGui Debug Order Test");

	ImGui::Text("Actor Tick: Actor = '%ls', World = '%ls', CurrentWorld = '%ls'",
		*GetNameSafe(this), *GetNameSafe(GetWorld()), *GetNameSafe(GWorld));

	ImGui::End();
#endif // WITH_IMGUI
}

#if WITH_IMGUI
void AImGuiDebugOrderTest::ImGuiTick()
{
	ImGui::Begin("ImGui Debug Order Test");

	ImGui::Text("ImGui World Tick: Actor = '%ls', World = '%ls', CurrentWorld = '%ls'",
		*GetNameSafe(this), *GetNameSafe(GetWorld()), *GetNameSafe(GWorld));

	ImGui::End();
}

void AImGuiDebugOrderTest::ImGuiMultiContextTick()
{
	ImGui::Begin("ImGui Debug Order Test");

	int32 Count = 0;
	for (TActorIterator<AImGuiDebugOrderTest> It(GWorld); It; ++It, ++Count)
	{
		AImGuiDebugOrderTest* Actor = *It;
		UWorld* World = Actor ? Actor->GetWorld() : nullptr;
		ImGui::Text("ImGui Multi-Context Tick: Actor = '%ls', World = '%ls', CurrentWorld = '%ls'",
			*GetNameSafe(Actor), *GetNameSafe(World), *GetNameSafe(GWorld));
	}

	ImGui::Text("ImGui Multi-Context Tick: %d actors in world '%ls'.", Count, *GetNameSafe(GWorld));

	ImGui::End();
}
#endif // WITH_IMGUI

A few comments to the above and in general.

World ImGui delegates are more suited for world objects that are created and destroyed in scope of one world.
Multi-context delegates are better for global objects, singletons etc.
There is a significant difference how world and multi-context delegates are called so for particular feature you should commit to one or the other. You can of mix them and use different combinations even for particular class or object but you should chose which is more suitable in particular case. World delegate is called once during update of particular world, while multi-context is called once for every world (the same delegate).
Registering world delegates can be spammy, so using multi-context one and then iterating trough world objects like in example above might be a better option. There is however a problem described above but I’m going to fix API to make it work better.

Ever think of recording a tutorial video for Youtube? If you have an nVidia card, recording is as simple as Alt+F9, preferably in one-take (https://signalvnoise.com/posts/1560-axl-vs-frank-more-time-doesnt-mean-a-better-product). Would love to listen to an overview of your code and decisions behind it.

Hi @aoakenfo. I would like to upload to the GitHub a project showing how to set-up this plugin and a few different ways to add ImGui debug to the game code. Sort of "Hello, World" with a few examples demonstrating workflow. But for various reasons, I keep postponing it.
I never thought about making a Youtube video, though. I also didn't think about discussing the plugin itself as it feels to me merely as a wrapper for ImGui.
Is there anything particular that you would be interested in?
When it comes to decisions, the key points are:

It was designed primarily for debugging.
I wanted this to be as self-contained and as transparent from the game point of view as possible.
It carries a bit of legacy code and ideas that evolved from something that was one of the first things I have done in Unreal. I would like to maybe change it, but it works ok so I tolerate it for now.

The Actor you posted above was enough to get started. I think adding that to the README.md is the easiest way for others to get started. In fact, you can simplify it even further by removing the multi-context code.
Yeah, I encourage a lot of people to just hit record and get it out there. (That's how all my Niagara tutorial vids were done.) Why not cover workflow in the video? You may think it's "just a wrapper" but it looks rather complex. I'm not sure where I would even begin to create an Imgui backend like this.
Anyway, thanks for all your hard work, you've done the community a great service. Much appreciated.

Thank you for your kind words.
I didn't think about making a video because, well I'm not a very "video type" of person... whatever that means ;) But you are right that perhaps it would be good to put a simplified version of the above actor in the readme file, regardless plans for making a more complex example project.

Hello, also thank you for the explanation above to integrate the plugin.
But i'm having a small issue about inputs. Even though i enablend input and share mouse input from properties, clicking on Unreal Engine viewport during runtime stops imgui to detect any input from mouse.
Setting Default Viewport Mouse Capture Mode to No Capture from project settings fixes this issue, but then I'm not able to get if mouse delta on other classes.
Is there any way to fix this issue?

I'm having a similar issue where mouse input is not working when a HUD is displayed. For me the issue happens even if I set No Capture. I ran some Slate debugging on a level without a HUD and one with it and I saw this difference:
With HUD:

LogImGuiWidget: ImGui Widget 0 - Input Enabled changed to 'true'.
LogImGuiWidget: VeryVerbose: ImGui Widget 0 - Visibility updated to 'Visible'.
LogSlateDebugger: Mouse Captured(0:10) : SImGuiWidget [SImGuiLayout.cpp(54)]
LogSlateDebugger: Focus Changing(0:SetDirectly) - SPIEViewport [PlayLevel.cpp(3245)] -> SImGuiWidget [SImGuiLayout.cpp(54)]
LogImGuiWidget: VeryVerbose: ImGui Widget 0 - Focus Received.
LogSlateDebugger: Mouse Capture Lost(0:10) : SImGuiWidget [SImGuiLayout.cpp(54)]
LogImGuiWidget: VeryVerbose: ImGui Widget 0 - Mouse Leave.

Without HUD:

LogImGuiWidget: ImGui Widget 0 - Input Enabled changed to 'true'.
LogImGuiWidget: VeryVerbose: ImGui Widget 0 - Visibility updated to 'Visible'.
LogSlateDebugger: Mouse Capture Lost(0:10) : SPIEViewport [PlayLevel.cpp(3245)]
LogSlateDebugger: Mouse Captured(0:10) : SImGuiWidget [SImGuiLayout.cpp(54)]
LogSlateDebugger: Focus Changing(0:SetDirectly) - SPIEViewport [PlayLevel.cpp(3245)] -> SImGuiWidget [SImGuiLayout.cpp(54)]
LogImGuiWidget: VeryVerbose: ImGui Widget 0 - Focus Received.
LogSlateDebugger: Mouse Capture Lost(0:10) : SImGuiWidget [SImGuiLayout.cpp(54)]
LogSlateDebugger: Cursor Changed: To Type: Default (By Widget: SImGuiWidget [SImGuiLayout.cpp(54)])

Note the extra Mouse Leave event when a HUD is present (both cases see a Mouse Capture Lost). As near as I can tell, this is because SlateApplication's MouseCaptorPath has no widgets in it and is not valid (so it is presumed that the mouse left).
It's very possible that this is a result of what my HUD is doing or how it was created. I tried to hide or disable it at run time but it didn't seem to make a difference. Any insight would be appreciated!


Adding social icons to footer with hover effects

Description
Adding social icons to footer with hover effects
Checklist

[yes ] I am making a proper pull request, not spam.
[yes ] I've checked the issue list before deciding what to submit.

Related Issues or Pull Requests
issue #214

@wasimreja

@Kritika30032002 i told you to raise the pr in hacktoberfest branch

@Kritika30032002 i told you to raise the pr in hacktoberfest branch

@wasimreja    you can see it in PR #219 . What's happening If I am doing it in Hacktoberfest branch


@mzikherman - Fix breaking issues with new artwork-image style

Re: https://github.com/artsy/force/pull/170
This fixes the issues that were causing the artworks page to break this weekend.
Before:

After:

Nice 👍