10,000 Matching Annotations
  1. Mar 2024
    1. The transaction does not show as two transactions on the transaction list post split. Instead, the transaction shows as split.

      I think it's okay/reasonable, but am curious now how MM might be doing it even better...

    2. I tried Simplifi a little bit more and I agree: their budgeting feature does not make sense to me. They separate bills and subscriptions from the spending plan, making it impossible to see every planned expense against my projected income. It also doesn’t offer an easy way to cover overspending by transferring available money from other categories.
    3. It seems better now but I don't like how it you can't easily roll with the punches if you go over something. It's not as easy as taking from another category and applying the funds you can only increase the current category. So you don't really know how much you have to spend.
    1. While this simplicity is appealing to users who prefer an uncomplicated budgeting experience, it lacks the depth of customization provided by Monarch Money. Simplifi’s straightforward design is excellent for quick budget planning but may not satisfy those who need more nuanced financial management tools and a customized spending plan.
  2. www.monarchmoney.com www.monarchmoney.com
    1. Another simple way is to set up automatic deposits from your checking account into your savings account. Set the deposits to occur on the same day each month (like the day after your paycheck hits the account). This way, you’ll be saving a fixed amount of money regularly without even giving yourself the chance to use it for something else.
    1. Other companies ignore requests, hide forms or require unreasonable proof of identity — one company in Consumer Reports’s data opt-out study asked a participant to submit a notarized affidavit, Mahoney said.
    2. But according to the EFF’s Tsukayama, de-identified personal data is an oxymoron. She pointed to studies — like this one from researchers in Europe — that have found ways to re-identify large percentages of individuals in anonymized data sets.
    3. Additionally, CCPA doesn’t require companies to delete personal data that has been aggregated or “de-identified.” That means if they combine your data with data from other people in a way that obscures which data comes from whom, they’re allowed to keep it.
    4. Does submitting a request mean my data will get deleted?Nope. Deletion requests are subject to some broad exemptions. Some companies — like financial services — have to hold on to certain data for legal compliance and reporting. The CCPA also allows companies to keep your data if they’re using it for security, debugging or fraud protection, or “to enable solely internal uses that are reasonably aligned with the expectations of the consumer based on the consumer’s relationship with the business.”
    5. What if I don’t live in California?Only California residents have the right to data deletion under CCPA. (Why companies have the right to your data and you do not is another story. And here’s another. And another.)But some companies have said they’ll honor deletion requests no matter where you live. Spotify, Uber and Twitter said they treat deletion requests from any geographic location the same. Netflix, Microsoft, Starbucks and UPS have also said they’ll extend CCPA rights to all Americans.
    6. The company will probably ask for you to send over additional information or set up an appointment to verify your identity — that’s so no one can pretend to be you and steal or delete your data. To verify, you may need to confirm your account username and password, provide a piece of data like your phone number for the company to cross-check, or, rarely, show your government-issued ID. You should never be required to set up an account to get your data deleted, according to CCPA.
    1. I am currently working with a system presently where every table has a Deleted flag for soft-delete. It is the bane of all existence. It totally breaks relational integrity when a user can "delete" a record from one table, yet children records which FK back to that table are not cascade soft-deleted. Really makes for trash data after time passes.
    2. The only issue left to tackle is the performance issue. In many cases it actually turns out to be a non-issue because of the clustered index on AgreementStatus (AgreementId, EffectiveDate) - there's very little I/O seeking going on there. But if it is ever an issue, there are ways to solve that, using triggers, indexed/materialized views, application-level events, etc.
    3. Udi Dahan wrote about this in Don't Delete - Just Don't. There is always some sort of task, transaction, activity, or (my preferred term) event which actually represents the "delete". It's OK if you subsequently want to denormalize into a "current state" table for performance, but do that after you've nailed down the transactional model, not before. In this case you have "users". Users are essentially customers. Customers have a business relationship with you. That relationship does not simply vanish into thin air because they canceled their account. What's really happening is:
    4. So, soft delete is better, right? No, not really: Setting up cascades becomes extremely difficult. You almost always end up with what appear to the client as orphaned rows. You only get to track one deletion. What if the row is deleted and undeleted multiple times? Read performance suffers, although this can be mitigated somewhat with partitioning, views, and/or filtered indexes. As hinted at earlier, it may actually be illegal in some scenarios/jurisdictions.
    1. Given that we historically didn't release many majors, some people have started to colloquially call "Yarn 2" everything using this new codebase, so Yarn 2.x and beyond (including 3.x). This is incorrect though ("Yarn 2" is really just 2.x), and a better term to refer to the new codebase would be Yarn 2+, or Yarn Berry (which is the codename I picked for the new codebase when I started working on it).
  3. Feb 2024
    1. if (!stat(worktree_git_path(wt, "rebase-apply"), &st)) { if (!stat(worktree_git_path(wt, "rebase-apply/applying"), &st)) { state->am_in_progress = 1; if (!stat(worktree_git_path(wt, "rebase-apply/patch"), &st) && !st.st_size) state->am_empty_patch = 1; } else { state->rebase_in_progress = 1; state->branch = get_branch(wt, "rebase-apply/head-name"); state->onto = get_branch(wt, "rebase-apply/onto"); } } else if (!stat(worktree_git_path(wt, "rebase-merge"), &st)) { if (!stat(worktree_git_path(wt, "rebase-merge/interactive"), &st)) state->rebase_interactive_in_progress = 1; else state->rebase_in_progress = 1; state->branch = get_branch(wt, "rebase-merge/head-name"); state->onto = get_branch(wt, "rebase-merge/onto"); } else return 0; return 1;

    1. git remote set-head origin -a

      Resolved the problem I had where I mistakenly deleted this [local tracking branch]?

      ls .git/refs/remotes/origin/HEAD ls: cannot access '.git/refs/remotes/origin/HEAD': No such file or directory

    1. This is for those who purchased our Humble Bundle at the Tier 1 level ($1). First, click add to cart. Do not remove this item from your order - it will also be discounted to $0.Once this is added to the cart, it will automatically add the appropriate products. Enter the coupon you were given in your Humble Bundle receipt to get 100% off.  Be sure to use normal checkout. PayPal, Apple Pay, and Google Pay will not work with the coupon code.  On the checkout page, scroll all of the way down and the coupon code field is on the bottom right. You will not have to enter any card information as the coupon code you were given from Humble Bundle takes 100% off and removes the card information fields. If you are asked to enter card information, something was done incorrectly.
    1. for pathname do

      Not quite what I was looking for, though it may help some cases. It said pathname was /dev/stdin, when I expected it to be a line from stdin.

      Replaced with: while IFS= read -r line; do echo "line: $line" done

    1. if (( ${#} == 0 )) ; then while read -r __my_function ; do my_function "${__my_function}" done else target_utility "${@}" fi

      I like it pretty well, in many ways more than G-Man's answer. I like the use of while read. I'd probably prefer non-recursive solution most of the time though, esp. if instead of a function we would be spawning a subshell (script) to achieve the recursion, like in ...

    2. This answer is one of various possible solutions for a "Bash function that accepts input from parameter or pipe" since the OP indicated [in a comment] that base64 was not the actual problem domain. As such, it makes no attempt to assure input is able to be directly read from a file.
    3. The title of the question is what triggered the process of finding this Q/A for material that aided development of the above to solve a real life problem described by the title. The OP declared that base64 decode was not the "real" problem; pedantic constraint of answers to a particular "example" seems less helpful. When this question and its answers were key to helping solve real problems, alternate answers can be gifts to the community in recognition of the fact that many more people will use this Q/A to solve problems. Since the answer is on-topic per the title, I feel it is "game on".
    4. The answer credits others while solving a problem that wasn't optimally solved by other (helpful) answers at the time. I shared to help others. It is up to a reader to select answers and review for appropriateness to their needs. This almost looks like an attack when all that was required was an alternative answer standing on its own merits or demerits.
    1. You should never rely on the presence or contents of anything under the .git directory. That's git's territory, not yours or the build system's. Use it's plumbing commands to get access to the information you need, rather than trying to read files directly. Git provides no guarantee about the location or contents of any of those files as far as I'm aware.
    1. This is not specific to Git-- it's part of how POSIX shells process commands. When you don't have quotes (or a preceding backslash), $ign is interpreted as an empty shell variable, so git only sees 'pew'.

      the responded-to user incorrectly attributed the problem to git

    1. xdg-mime default augmented-open.desktop x-scheme-handler/file-line-column This registers the augmented-open.desktop handler as the default handler for URLs using the file-line-column:// protocol.
    1. Its a bit tricky because of the ambiguity of how the args get presented. You can see through the little demo the args are presented the same way whether its a straight kwargs or a hash, but the assignment of the args to parameters is different. def foo(*args) puts args.inspect end def bar(x=1, a:2) puts "x:#{x} a:#{a}" end foo(:a => 1) # [{:a=>1}] foo({:a => 1}) # [{:a=>1}] bar(:a => 1). # x:1 a:1 bar({:a => 1}). # x:{:a => 1} a:2
    1. The increment-after-release model makes sense for branching too. Suppose you have a mainline development branch, and you create maintenance branches for releases. The moment you create your release branch, your development branch is no longer linked to that release's version number. The development branch contains code that is part of the next release, so the version should reflect that.
    1. In fact, I think this self-answered Q&A of yours was already quite good by the standards of the site, and very useful - I've used it to close other duplicates several times. As someone who wears a "curator" hat around here, I want to make questions like this even better - as good as they can be - and make it clear to others that this is the right duplicate target to use when someone else asks the same question.
    2. Then I gave the question a longer, more descriptive title: I made it an actual question (with a question mark and everything), and replaced the term "lazy evaluation" with a more concrete description. The goal is to make the question more recognizable and more searchable. Hopefully this way, people who need this information have a better chance of finding it with a search engine; people who click through to it from a search page (either on Stack Overflow or from external search) will take less time to verify that it's the question they're trying to answer; and other curators will be able to close duplicates more quickly and more accurately. This edit also improves visibility for some related questions (and I made similar changes elsewhere to promote this one appropriately).
    3. We do want to avoid going around in circles on matters of style, and there has historically been a ton of discussion on Meta about what kinds of style edits are appropriate and what variation in style is acceptable. But in general, an author whose post is edited can expect to be out-voted - especially when the edit has a basis in policy. In short, these changes were not simply about "style", but about the site's goals for clarity, focus, precision and overall quality.
    4. In principle, therefore, everyone has a say in the editing of posts, including the author. However, authors do not "own" the content here; it is licensed irrevocably to the site under a permissive Creative Commons license, which enables those edits.
    5. As you've seen, there is no DM system, but you can invite users to chat directly. More generally, consider commenting on the question itself and @-ing the user who made the edit(s). To my understanding, this should work, and it may allow for a quick explanation that doesn't require going in to chat.

      I think commenting in the context of question is better than a DM, though I don't always like making my question "messy" by having a bunch of comments under it... but maybe that is the best way.

    1. This can lead to confusion if you expect to be able to access a Mash value through the property-like syntax for a key that conflicts with a method name. However, it protects users of your library from the unexpected behavior of those methods being overridden behind the scenes.

      must choose between these options

    1. Comparing to Mash your custom class lacks mash-like deep initializer which is a different concern from MethodAccess. So you just need a smart initializer extracted from Mash (just like MergeInitializer but deep), probably implemented as a separate extension. So It's a initializer issue, not an issue of MethodAccess.
    1. Wine isn't an emulator, it's a collection of code that interprets Windows executables for various different systems: "Instead of simulating internal Windows logic like a virtual machine or emulator, Wine translates Windows API calls into POSIX calls on-the-fly, eliminating the performance and memory penalties of other methods and allowing you to cleanly integrate Windows applications into your desktop." https://www.winehq.org/ FWIW, the Steam Deck relies heavily on a derivative of Wine for getting existing programs to run on the platform.Some programs will actually run faster under Linux + Wine than under Windows, which wouldn't be possible for an emulator running on the same hardware system.
    2. Regardless of what your arguments are, the personal reasons of the developer are what matters for what platforms this game is provided on. You can choose to pay for the game, or not. Paying for the game supports the developer, and allows them to develop more. It is not reasonable to argue that someone should have put in additional unpaid effort to do something for unknown future benefit, or that they should charge less for a game because it's only available on one platform; that's their choice, and their decision.For context, development of Taiji was started in mid 2015; it took seven years to finish. That's with the Commercial Game Engine, and even with that, there were platform-based bugs that needed to be worked around (issues that won't be present on other platforms, or will have different presentations); here's just one of those, involving an issue around mouse sluggishness:https://taiji-game.com/2020/07/13/68-in-the-mountains-of-madness-win32-wrangling...If the developer is not already familiar with Linux, then there's a small mountain of language barriers around using Linux that needs to be overcome first, before being able to get to the game development phase. It's rare for game development to work on different platforms when it can't be tested on those different platforms. While it might be easy to cross-compile on a Windows system (e.g. via IL2CPP), that's only if everything works perfectly (which is unlikely to be the case). 
    3. The high-level view of your responses are that they are an attack on the developer of this game, someone who has already put in seven years of effort to get to this point already (as demonstrated in the game development blog). The developer does not need that, and digging in deeper to become more aggressive will not help you get what you want. There are reasons for not developing on Linux, as there are for other platforms (e.g. MacOS, PS5, Switch). As great as it would be to just drop the same code on different platforms and have it work perfectly every time, that's not the reality. There are *always* platform-specific issues that crop up: "If you don't design your software with platform-nonspecificity in mind, then it just makes it harder. Nothing is truly impossible to port, disregarding hardware capabilities and computing speed. There's no such comprehensive "tool" for porting games to other platforms, though, since they all work differently under the hood." https://gamedev.stackexchange.com/questions/49375/what-are-the-main-requirements... Regardless of your own personal opinions on what should or shouldn't be done, the developer has already answered your question about Linux ports, in particular mentioning that it is appropriate for users to use Wine (in the form of Proton) to play Taiji on Linux. And, if the game not working on Linux is a showstopper for you, the developer recommends you consider purchasing on Steam due to a better refund poli
  4. Jan 2024
    1. Why would a text message service require Location (GPS) permissions? Anyway I enabled this Location permission for testing. Heureka!!! Suddenly I was able to send text messages again to all the contacts which previously didn't work. The "Not sent, tap to try again" error was gone.
    1. The "From:" field specifies the author(s) of the message, that is, the mailbox(es) of the person(s) or system(s) responsible for the writing of the message. The "Sender:" field specifies the mailbox of the agent responsible for the actual transmission of the message.
    1. our Rule 8 of Commas says, “Use commas to set off the name, nickname, term of endearment, or title of a person directly addressed.” Therefore, we would write: Good Morning, Mary. However, it is also acceptable to write Good morning, Mary. Good practice is to decide on a style and be consistent.