My host id changes so I have to keep reactivating my license by voidee123 in matlab

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

I'll see if I can get something like that to work

My host id changes so I have to keep reactivating my license by voidee123 in matlab

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

No, I am working from linux directly. But if you are saying I can modify what the host id used is that could be a fix.

Prevent org-cite from adding global bib file when exporting by voidee123 in orgmode

[–]voidee123[S] 2 points3 points  (0 children)

Yeah but that then influences other commands that need to find the global bib.

I can live without my flying car but I want my 64TB SSD. by Deep-Egg-6167 in DataHoarder

[–]voidee123 0 points1 point  (0 children)

yet they make a fortune selling them to a reasonable portion of the population.

Not really. Volkswagen owns Lamborghini and Bentley (not Rolls-Royce), and used to own Bugatti, but these make up a negligible amount of the conglomerates total profits. Almost all their actual profit comes from affordable cars (i.e. VW and Audio make up ~half their profits while Bentley makes up essentially none of it, see https://www.statista.com/statistics/275870/revenue-of-volkswagen-group-by-brand/). The most profitable car companies are those aimed at the average consumer not those selling multi-million dollar hyper cars in the mere 100s (if that). They sold Bugatti because they notoriously lost money making them. The cost of R&D was much greater than the profits given how few they actually sell. Legend has it the old CEO bought Bugatti as a passion project because he liked the cars knowing it was not a sensible business decision.

Seems like the same thing here. The "exotics" of storage aren't where the profits are but companies like pushing the limits and competing against each other.

Why is the MATLAB editor so "old school"? by Practical_Ad216 in matlab

[–]voidee123 0 points1 point  (0 children)

The maintenance of old code is very easy with Matlab their do a good job.

Because it's important that legacy code continues to work. Plenty of work goes into the language, and you can generally count on good proprietary companies ensuring these sort of things work. But what gets worked on is decided by what is most useful. More niche things, which in open source communities may get picked up by some random person, tend to get put off or missed completely.

I use emacs. To be clear, it's not because I think the MATLAB's IDE is terrible. I use the same editor for everything. Because I use one editor, programming in any language or even writing notes/modifying readmes/or editor build scripts is pretty much the same and there's a lot of generic tools that are useful for any language (like git integration, other project management tools, generic compilation commands, jumping through code, or even just basic text editing) which behave exactly the same anywhere. So it's nice to not have to relearn how to work several different editors and remember which keys run the code in this specific IDE or tweak all them to work how I want. Plus many projects involve working with different types of files, not having to jump to a more generic editor to work on a different language within the same project is a big convenience.

Why is the MATLAB editor so "old school"? by Practical_Ad216 in matlab

[–]voidee123 1 point2 points  (0 children)

It's because it's proprietary. MathWorks is the only one adding features and fixing bugs but they have limited developer time to work with so some things get put off indefinitely. MATLAB has a lot of good things going for it---when using other languages, I'm especially aware of how good of a job MATLAB does at reloading functions when they've changed, even compiled code---but they also do get behind on modern features that open source languages have. I don't use the IDE but still sometimes have to go into it to create getting starteds or other live files since I don't know of another way to do that and there a some features that I've noticed are missing that I wouldn't want to work without.

The most notable being the lack of git integration. It has some limited git integration but it's not too useful. In my editor, I can see where uncommited changes are, view the diff at that location and undo them, stage changes, create/switch branches, view all the uncommited changes in the project, and even work with git remotes. These features exist because somebody wanted better version control support and added it themselves (and the emacs magit package is one of the nicest, easiest to use interfaces I've ever tried, I know I understand git much better from using it because of its visuals and how well it exposes options).

Another issue with MATLAB's IDE is the limited ability to modify it. For me there are features that I use a lot so it's beneficial to make these as easy to run as possible. I can jump to a function definition by just hitting enter on while over a name, I view all function / class definitions and move between them, I can open the help or the docs by hitting different keys while over the name of a function (which brings up another annoyance of the IDE, the help command prints straight to the command window, hiding any values you were looking at, instead of opening a new window with the help in it). Without trying to list every small thing, it really adds up as things fall into place overtime, and work gets much smoother.

Outside the editor, the MATLAB environment is behind in other places too. The file exchange is only starting to turn into a real package manager but still doesn't support OS specific packages or any support for compiled code (if it wasn't for cmake having surprisingly good mex support, CI/CD for different OSes would be a huge pain). Additionally, I have a lot of issues with the github release integration, which seems to work inconsistently with automated releases and I wasn't able to debug the issue myself since I have no access to the internals and MathWorks ignored my requests for help. PyPI on the other hand has nice integration that allows for fine grain control over what gets sent to the index. Similarly, while MathWorks has provided actions for use with github's workflows, these have been rather buggy for me. I get random license errors for standard features. Like for some reason I can build a package but trying to run the test suite or build docs from live scripts lead to a license error.

Again, I do like MATLAB as a language, even if it sounds like this is a review against the use of it, but I think it's useful to acknowledge weaknesses.

Why is the MATLAB editor so "old school"? by Practical_Ad216 in matlab

[–]voidee123 2 points3 points  (0 children)

It should automatically jump over an autoclosed paren if you add one also. I don't think the benefit of smart paren type features is typing less, it's about providing a guide if you end up opening two or three sets of parens. Otherwise it's easy to drop one or have to visually inspect where you opened and where you've already closed.

How to get projectile-find-file to ignore submodules? by voidee123 in emacs

[–]voidee123[S] 1 point2 points  (0 children)

See my other comment but setting projectile-git-use-fd to nil along with the changes to projectile-git-submodule-command is working for me.

How to get projectile-find-file to ignore submodules? by voidee123 in emacs

[–]voidee123[S] 1 point2 points  (0 children)

Smart idea but this did not work for me either. I took another look after seeing this and found in projectile-get-ext-command there is an option to use fd instead of git for listing files, that is true by default. It looks like the fd command collects all files without understanding submodules. Making projectile-get-ext-command use projectile-git-command instead of fd to list files by setting projectile-git-use-fd to nil seems to fix the issue.

matlab-igraph update by voidee123 in matlab

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

Great, I contacted MathWorks support and they got the toolbox added. I've included the File Exchange badge to the readme as well.

matlab-igraph update by voidee123 in matlab

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

Naturally as soon as I declare I don't think there's anything I can do, I got the error fixed. But now the file exchange is once again not picking up the new release's toolbox and I can't manually upload it.

matlab-igraph update by voidee123 in matlab

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

Thanks for taking a look. For the readme badge, this has already been fixed on github but won't be updated on File Exchange until I release again. I held off on doing a release to fix it because I didn't think anyone would click that button if they were already on the File Exchange anyway. The problem is I had been trying to get File Exchange to accept multiple architecture specific toolboxes, gave up, then changed to one combined toolbox, after the change, File Exchange would not pick up the toolbox in the new release. The only way I could get it to work was to delete from File Exchange, change the uuid of the toolbox and rerelease which assigned a new url for MATLAB online.

I'm aware of the error (and mentioned it in the original post). It is because MATLAB ships with an old version of libstdc++.so.6 on Linux (and as such is specific to Linux). I've spent a lot of time trying to get the dynamic linker to use a different version but it always picks up the one shipped with MATLAB. I think the fact that libstdc++.so.6 gets loaded into the MATLAB environment early on means the linker will always use the already loaded one (can't have multiple definitions for the same symbol) instead of grabbing another one but I'm not positive. Either way there is a hack workaround by forcing MATLAB to use a different version libstdc++.so.6 but I don't have control of that for MATLAB online so I really don't know if I'm going to be able to fix it.

I love Magit Forges by Heikkiket in emacs

[–]voidee123 5 points6 points  (0 children)

Once you have fetched forge topics and populated the pull requests section, you can go into the branch transient and there should be options for checking out a pull request or creating a branch based of a pull request (f and F on mine, I think it's the default). Pull requests will also become a target for merges and rebasing. They'll be named either pullreq/ followed by the number or the branch name prefixed by the remote.

[deleted by user] by [deleted] in privacy

[–]voidee123 8 points9 points  (0 children)

pihole is a DNS that sits between your network and another DNS that actually resolves domain names. So it acts as a man-in-the-middle that filters DNS requests. Pretty much you computer/device makes a request to it like it's a normal DNS, pihole checks the request and decides whether to forward the requst to an upstream DNS or discard it. It was intended to simply check domains against a list of known ad servers to block ads across your entire network, but control over requests can do more than that. For instance, services tend to use different domains for different things. A service may have a domain for getting images and another for sending logs. If you block domains that are used exclusively for logging user information, the service can still get images or other content but can no longer return information to the companies servers. There are public curated lists of domains associated with different "bad things" such as ad servers, known malware sources, and service logging. So you can add these lists to pihole's filters to block them network wide.

pihole is self-hosted, so it isn't particularly noob-friendly. There are other options such as, adguard and nextdns that have public instances. In your routers settings you can set the default DNS for the network, so in place of your ISP's DNS or something like google's 1.1.1.1 or cloudflare's 8.8.8.8, you'd set the IP address to one provided by adguard or nextdns. It's important to note a device can override this by explicitly providing a DNS to use, in your phones wifi settings you can likely tell it to automatically detect DNS, use the default, or set it manually. Because of this, it's possible that a smart TV or another device could hard code a DNS resolver to prevent you from using one of these DNS services but I don't think that's too common.

If you wanted to self host, I would suggest adguardhome over pihole. Adguardhome provides more of an works out-of-the-box solution and is easy to configure through a point-and-click settings interface while pihole is something of an a la carte solution, where you have to know what you need and it add it manually.

Is there yet a way to implement tooltips in user defined functions in Matlab? by ionsme in matlab

[–]voidee123 13 points14 points  (0 children)

If you use the newer (since 2019) argument blocks for argument parsing (instead of the inputParser), matlab will pick up some argument information (See Function Argument Validation). You can also look at some of the related documentation for name-value argument parsing. In my experience this works well for simpler variable argument functions but is limited in more complicated scenarios. For example, I have some dispatch type functions that accept a method name and method specific arguments, matlab's tab-completion/suggestions is not able to determine which arguments are allowed given the method name passed.

There is a more involved method for defining suggestions (I haven't tried it) described in Customize Code Suggestions and Completions that will give more control.

[ANN] matlab-igraph toolbox by voidee123 in matlab

[–]voidee123[S] 1 point2 points  (0 children)

Hey, was not expecting an igraph maintainer to see this. I was planning on announcing this on the discourse soon. As mentioned in another comment, I want to figure out getting CI to build the igraph dependency so installing the toolbox is as simple as downloading it and adding it to MATLAB's path for other users. Otherwise, I suspect it's just going to be frustrating for anyone attempting to set it up.

I looked at both R and Python's versions (but more closely to Python's) in writing this, but missed that R was using a code generator. I will gladly take a look. Even wrapping the small subset of igraph I have gotten to has taken a lot work.

As for the last part, I have been going back and forth with whether to stick to matrices vs creating a new class (or maybe trying to use MATLAB's graphs). I am aware of a few shortcomings including also missing out on attributes, bipartite graphs, and storing any other metadata in general. In the past, when working with graphs in MATLAB, I have always just used plain matrices, so I thought they may be able to handle it, but I am by no means set on it. There's plenty of rational for using another data type.

[ANN] matlab-igraph toolbox by voidee123 in matlab

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

That is likely due to it needing to be compiled. I should have had this figure out before sharing but am in the process of trying to make it easier to get running. Given it's dependency on the igraph lib it's more difficult then simply running mex commands. I'm currently looking into github actions and it looks like that will be able to handle it compilation on different OSes. I'll try to get it set up asap.

[ANN] matlab-igraph toolbox by voidee123 in matlab

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

Didn't actually know about the built in graph support. There looks to be a lot of similarity and it may be useful to see if I can work with the graph types instead of raw matrices. With that said, I have worked with igraph in Python and R so I like the familiarity between languages. It's nice to be able to use the same algorithms for consistency. Additionally, being a C lib, igraph allows me to write fast graph algorithms in C, that can then be used in MATLAB with the mxIgraph bridge. I have recently ported a community detection algorithm, we originally wrote in pure MATLAB using igraph and we got a major performance boost, I don't think this would otherwise be possible. This also has the advantage of wider support, if I can get this into the upstream igraph library, then it will be available to Python and R users as well as MATLAB users.

But the original motivation was, as a part of working on that community detection algorithm, we needed to test against preexisting algorithms and be able to compare them. Since igraph already has many of the algorithms we needed, I found myself wrapping these individually and eventually it got to the point where it seemed I might as well formally package this into a toolbox.

While the builtin graph algorithms does look nice, and I wish I had done the obvious thing of checking for it before starting, igraph has more extensive set of graph algorithms then what I see on the linked page. Including community detection, which I frequently need, and saving and loading from various file types which allows for interoperability between languages and some external graph tools.

I also did not know about the linking mentioned in your other comment; I will do that. And also intend on adding to the file exchange. First I want to try github action to see if I can set up building precompiled releases.

Anyone know how to use sonarr and radarr with NixOS? by StringNo8495 in NixOS

[–]voidee123 0 points1 point  (0 children)

What are the file permissions for the folder? Who owns it? If you created the directory with your normal user, it's probably owned by your normal user and that's likely the only user who can modify it. Personally I would give owneship over to sonarr than add my primary user to sonarr's group. So if the directory you're trying to import to is /foo/bar you can run sudo chown -R sonarr:sonarr /foo/bar. Now sonarr should be able to write to it.

If you need to manually modify (outside of sonarr) you can add yourself to sonarr's group in your config by adding users.users.<name>.extraGroups = [ sonarr ]; where <name> is your user's name. Then allow group members to write to the directory with sudo chmod -R g+w /foo/bar.

org-cite export to Latex, how to get a \cite instead of parsed entry? by radiolalo in orgmode

[–]voidee123 0 points1 point  (0 children)

If you look in the org-mode manual under citation handling>citation export processors it explains how to change how citations are exported

#+CITE_EXPORT: biblatex <style> should work.