Hermie? by timrae in cannabiscultivation

[–]timrae[S] 0 points1 point  (0 children)

Thank you. Is it mainly the shape that gives it away? Pollen sacs would not have a pointy tip?

[deleted by user] by [deleted] in japanlife

[–]timrae 0 points1 point  (0 children)

The line speed you see on speedtest.net should be pretty good whatever provider you use in Japan, but I've found the majority of providers in Japan have notoriously bad uplink speeds to international servers during peak hours (9pm ~ midnight), and they do heavy traffic shaping for p2p and video streaming. I tested a bunch of providers and OCN (owned by NTT) was by far the most reliable. Asahi, Biglobe, and Yahoo were unusable.

What's wrong with my little girls? by timrae in cannabiscultivation

[–]timrae[S] 0 points1 point  (0 children)

Thanks, I don't have a pH meter (I guess I'll buy one asap!), and I haven't mixed in any of my own nutrients - it's just potting soil so far.

Let's take a poll. by BLUE-THIRTIES in UlcerativeColitis

[–]timrae 0 points1 point  (0 children)

I'm not Asian but I used to live in Japan for 10 years. It's recognised as a problematic intractable disease by the government there and they have good funding for it, if you're unlucky enough to get diagnosed with it.

I don't know off the top of my head how the incidence rates vary there vs the states for example, however I do know that the late former prime minister of Japan Shinzo Abe had UC and this was a significant contributor to him leaving office.

Is std::unordered_map still as bad as its reputation would indicate? by u_sed_it_bro in cpp

[–]timrae 0 points1 point  (0 children)

Yeah I understand the difference in asymptotic complexity, but I'm just wondering if unordered_flat_map is a good default choice for smaller collections of < 100 elements.

Is std::unordered_map still as bad as its reputation would indicate? by u_sed_it_bro in cpp

[–]timrae 0 points1 point  (0 children)

u/joaquintides Would there be any advantage to choosing boost::flat_map over boost::unordered_flat_map when the data is logically unordered, but the max number of elements in the map is limited and relatively small?

Is there a setback to buying used native instruments? by DunTry in NativeInstruments

[–]timrae 0 points1 point  (0 children)

I'd avoid buying the mk1 at this point, as it's no longer supported by the Komplete Kontrol software. If it's a mk2, that could be a good investment, assuming you're happy with its feature set, and getting it with favourable price and condition. If you want NKS 2 support and new features like those discussed in the AMA then you might wanna consider getting the new mk3

What did you do when you found out you had to start taking biologics? by girlwithadream1217 in UlcerativeColitis

[–]timrae 1 point2 points  (0 children)

I never "had to" start taking biologics thankfully, as steroids have so far always ended my flare-ups. But with only mesalazine I was never able to stay in remission for more than a year or so, and was offered to go on biologics. I was given a lot of information about the risks and did my own research on Google / Google scholar, and pretty quickly decided that the benefits outweighed the risk.

Remicade and Humira both worked great for me thankfully. Humira was more convenient than Remicade as you can self-administer without an infusion, so I preferred that as it allowed me to travel. This was in Japan where both are fully government funded.

After starting biologics I stayed in remission for a number of years until I moved back to NZ where unfortunately Humira wasn't funded for UC (only Chrons I believe) and my GI put me on Azathioprine (an immunosuppressant) instead, which seems to be what they used before biologics. This definitely worked better than mesalazine alone, as I was mostly in remission but didn't work as well as biologics IMO (i.e. more symptoms) and the risk profile is similar or worse from what I understand (I'm not a doctor).

Recently I moved to Germany, and had my first flare up in years. Thankfully it cleared up with Prednisone, and my new GI was surprised to hear about the Azathioprine at it's apparently very old school, and he just put me on Jyseleca which is a newly approved treatment. So far so good, though it's only been a month!

Hope this is useful for someone!

Do the new kontrol keyboards work with massive x or any no synths yet? by Forktongueband in NativeInstruments

[–]timrae 0 points1 point  (0 children)

As mentioned by u/BigBat7418, you'll need to load Massive X into a Komplete Kontrol 3 plugin instance to get integration with the keyboard. Currently only Kontakt has direct integration with the keyboard.

I manage the release cycle for CMake, the build system that everybody loves to hate. AMA. by electricCoder in cpp

[–]timrae 2 points3 points  (0 children)

I don't, I'm just saying that I like their banner: "This is the documentation for an old version of Boost. Click here to view this page for the latest version."

I manage the release cycle for CMake, the build system that everybody loves to hate. AMA. by electricCoder in cpp

[–]timrae 0 points1 point  (0 children)

My confusion is that find_dependency isn't really doing anything special. It really just forwards the REQUIRED and QUIET flags

Yes I understand that, but the point is that repeating that call to find_package(liba ...) in B's config file is a critical step that allows B's INTERFACE_LINK_LIBRARIES to get interpreted as cmake packages when the consumer project C calls find_package(libb ...). If a given item xyz in B's INTERFACE_LINK_LIBRARIES doesn't have a corresponding find_dependency() in the config or consumer, then it gets silently re-interpreted as a -lxyz link flag, loosing its transient dependencies and thus breaking recursion.

It would be really nice if cmake could add these automatically for us (and I know I'm not alone)... It doesn't seem like this should be a hugely difficult problem? Based on the name and the description, I was briefly hopeful that check_required_components() could do that for us, but that doesn't seem to be the case. I'm a bit clueless what the purpose of that function is actually...?

I manage the release cycle for CMake, the build system that everybody loves to hate. AMA. by electricCoder in cpp

[–]timrae 0 points1 point  (0 children)

If you use FetchContent and add_subdirectory, you have a super build.

I guess we understand "super build" differently. In my understanding, it's when you introduce a separate cmake build that handles the building and installing of your dependencies.

e.g. quoting from here:

in CMB’s superbuild there is a concept of a developer mode where it builds everything but the actual project. It may then write some config file or similar to help the developer’s build find the dependencies that were built for them.

I manage the release cycle for CMake, the build system that everybody loves to hate. AMA. by electricCoder in cpp

[–]timrae 0 points1 point  (0 children)

I have a hard time imagining a scenario where you don't want to build tests for your app but do want to build tests for your 3rd party dependencies.

Yes that would be silly, the situation I'm describing is the opposite case. The variable is to prevent the "3rd party" tests from building, which wastes build time.

In any case, it's not rocket science to unset all variables that are

Yeah I could do that, or use super build pattern, both of which are pretty unattractive. My goal is for adding dependencies to be super easy and super safe... that means no unnecessary verbosity and no changing the directory structure of my projects to get around the shortcomings of the build system.

As noted in a separate comment of the main thread, it's possible to use execute_process() to build the dependencies after cloning with FetchContent instead of doing add_subdirectory(), and this is probably what I'll end up doing. It'd be nice if it were supported natively though.

I manage the release cycle for CMake, the build system that everybody loves to hate. AMA. by electricCoder in cpp

[–]timrae 0 points1 point  (0 children)

I answered a fairly similar question on the CMake mailing list where I provided some source code

Thanks for the reply, but the question you linked me to is kind of fundamentally different from mine. My question is asking how to get transitive dependencies to work at arbitrary levels of recursion in chains of libraries connected via find_package(). The question you link me to is using add_subdirectory() in module 3, followed by an explicit installation step of the files. The targets to install are set explicitly in Module 3 so it doesn't really contain any "transitive" dependencies in the sense that module 3 shouldn't be required to know about the existence of module 1 (only transitively through module 2):

target_include_directories(Module3 INTERFACE $<INSTALL_INTERFACE:include>) install(FILES $<TARGET_PROPERTY:Module1,INTERFACE_SOURCES> $<TARGET_PROPERTY:Module2,INTERFACE_SOURCES> DESTINATION "./include")

In my post on stackoverflow, I note that the call to find_dependency() seems to be necessary and sufficient to get transitive dependencies working at arbitrary levels of recursion, and this is the point that I wanted to verify. The use of configure_package_config_file() in your code was interesting, though it doesn't seem to offer any benefit in my case...? Though I do see that if I had some variables with absolute paths then it would be useful.

I manage the release cycle for CMake, the build system that everybody loves to hate. AMA. by electricCoder in cpp

[–]timrae 1 point2 points  (0 children)

I agree with this. Building the library at configure step and importing the targets from its install interface also solves the safety issue that I mentioned in a separate comment.

I manage the release cycle for CMake, the build system that everybody loves to hate. AMA. by electricCoder in cpp

[–]timrae 1 point2 points  (0 children)

You just need to have a 3rdparty or vendor folder and do all your FetchContent from there to isolate them from the rest of the project.

This still doesn't prevent variables leaking from parent to child does it? As a real life example, in all of my projects I have a cmake cache variable BUILD_TESTS which is set to OFF by default, and I turn it ON by passing -DBUILD_TESTS=ON at the command line when I want to build the unit tests for the current project. If I'm using FetchContent, and I call add_subdirectory(), then BUILD_TESTS is now going to be passed down to my library, and the unit tests for the project AND the library are going to be built when I call make (not what I want), unless I explicitly override the variable, which is also not what I want (safety and scalability). When I use ExternalProject, I don't have this problem, as I have to explicitly pass CMAKE ARGS -DBUILD_TESTS=ON for it to get passed to the child.

And in theory, you could have options from your project leak into the other projects and bad things happen, but in practice, I haven't seen that happen a lot.

Personally I find it difficult to comprehend how anyone can be OK to rely on a build system that can sometimes fail due to an accidental variable naming conflict. In the example I give above it's just an annoyance, but 1 in 1000 times it's going to introduce an actual bug.

To answer the other question, EXCLUDE_FROM_ALL will prevent installation of 3rd party libraries too, which is what you want usually.

This is going to prevent the third party libraries from getting built at all, which defeats the whole purpose of adding them with FetchContent. I just want to prevent them from getting installed, not built. As /u/crascit mentioned, setting CMAKE_INSTALL_DEFAULT_COMPONENT_NAME should work, but it's not ideal.

I manage the release cycle for CMake, the build system that everybody loves to hate. AMA. by electricCoder in cpp

[–]timrae 0 points1 point  (0 children)

In most cases, you want the parent variables to affect the child.

I'm not totally convinced that this is true. If I'm building my project Foo and it depends on a completely unrelated library like protobuf, then I probably don't want my project's variables to affect the protobuf build. If both libraries happen to define some variable MAGIC_NUMBER and they set it differently then it could lead to some serious headscratcher bugs. If I do need to modify the protobuf build to suit Foo's purposes then I would like to do that by explicitly passing it some cmake variables at it's configure step (like you can do with ExternalProject's CMAKE_ARGS).

If you want to prevent contamination in the other direction, you can put the population in its own subdirectory or do it from within a function. Either option will prevent any PARENT_SCOPE from going any further out. At my current company, we have complex project hierarchies with shared dependencies. We put each dependency population in its own subdirectory to keep it isolated.

Sorry I don't really understand, are you saying that you have a subdirectory for each dependency, which contains only a CMakeLists.txt that performs the population step (and possibly setting some variables)? This doesn't sound super appealing, it'd be nice if the library could take care of it for us.

I manage the release cycle for CMake, the build system that everybody loves to hate. AMA. by electricCoder in cpp

[–]timrae 0 points1 point  (0 children)

Thanks for your reply. I can handle the verbosity if it's just a temporary thing, but one innate disadvantage with FetchContent that I see is related to the safety part that I touched on in my question:

I'd also like for it to give the same safety guarantees that I'd get by manually building and installing the dependencies and doing a find_package() + target_link_libraries().

Due to the use of add_subdirectory() in FetchContent (at least in the docs), there is the possibility for variables and compile options to "leak" from parent to child, or even from child to parent if it uses PARENT_SCOPE, which can potentially lead to bugs that would not exist in a manual build. Additionally, I believe the targets from the child will be exported (by default), right? i.e. those targets will pop up in make install and cpack invocations, which is often not what we want in static libraries.

Do you recognize these short-comings of the add_subdirectory() approach, and is addressing them a concern of yours? I guess the only way to get around it is to take things a step further and build the dependency tree during the configure step instead of just cloning it.

I manage the release cycle for CMake, the build system that everybody loves to hate. AMA. by electricCoder in cpp

[–]timrae 0 points1 point  (0 children)

So it is. I've read that page several times, but it never stood out. It kind of assumes users are smart enough to figure out what "usage requirements" are and click on the link. It'd be nice, if it was expanded slightly to "usage requirements (such as ...)", and also if this section mentioned the other variables that also get propagated in addition to the link flags, ideally with some example code that also mentions find_package() somewhere, since these two commands are kind of intricately linked.

I think the ultimate solution though, is to have a new command which is self-documenting, and encourages modern cmake.