• 0 Posts
  • 47 Comments
Joined 6 months ago
cake
Cake day: June 12th, 2025

help-circle
  • I enjoyed my brief time with gRPC and protobuf, when I was trying them out, and I’d happily use them again, but I think it’s obvious why JSON and REST are more dominant.

    For one, gRPC works great for simple server/client apps, but it makes them VERY tightly coupled. If your product is an API itself, open for public use, tight coupling is a hindrance more than a benefit.

    And more to the point… have you ever tried to DEBUG gRPC traffic? The efficiency of gRPC is top notch, t optimizes for serialization, deserialization, and bandwidth, all at once. But JSON is human readable, and when you throw in HTTP compression, the efficiency is close enough to protobuf to serve the vast majority of scenarios. JSON is just far more practical.


  • Unfortunately, the alternatives are really lacking. JetBrains Rider REALLY feels underbaked. No deal-breaking issues, but lots of little low-impact ones, and lots of design decisions that go against common conventions, for no apparent reason. The “Visual Studio Mode” doesn’t really help.

    On top of that, I’ve had several issues with RUNNING Rider, on account of being on Bazzite, an immutable distro. It was fine on Mint, but Mint had its own troubles with my NVidia card.




  • Not QUITE a program, but I’d have to say my own little GBA ROM hacks for the original Fire Emblem. On account of the following story…

    IIRC, it was 2007, and I was a senior in high school, reorganizing some of the stuff for the robotics team, in the cabinets in the big science classroom where we met. There were some freshmen interested in the team (season wouldn’t start for a while yet) who’d taken to hanging out there, after school.

    They all had laptops and I recognized the menu theme when one of them pulled up Fire Emblem in an emulator, from across the room, and immediately called out “Who’s playing Fire Emblem?”. When I went over and saw he was using Virtual Boy Advance, it occurred to me what I had in my pocket. Or rather what happened to be ON the flash drive in my pocket.

    At the time, I didn’t have my own laptop, so my flash drive had years worth of random crap on it. And over the years, I spent a LOT of time tinkering with ROMs and VBA over the years. In addition to a few copies of different hacked ROMs and save files, I had a portable hex editor, and a LOT of text files with hex tables and memory maps and other research I’d collected over the years.

    So, yeah, I pulled out the flash drive, said “Wanna see something cool?” and proceeded to apply many crazy hacks as I could think of, in the most obtuse manner possible, just editing hex values directly in memory as the game was running. Free XP, free items, end game equipment, sprite swaps, etc. At one point, one of them says something like “What kind of wizard ARE you?!”

    It’s what comes to mind for me when you say “cool” because I like to think I inspired those kids to get into software and programming themselves, or at least consider it as an option. They certainly stuck around with the team for the rest of the year. Also, it inspired ME to really realize how much I’d grown just by tinkering and being curious, and how much you can accomplish through incremental effort.




  • So, it’s a way for applications to make themselves more hardened against exploitation? Was really confused on first reading the title, but that makes some sense. Applications declare what permissions they need, up-front, so any exploits during normal operation can only operate under that umbrella. Unless the startup processes of the application itself are exploited.









  • Two that come to mind, for me:

    A todo-list/task list/scheduler app, with the following requirements:

    • Tasks are input with a due date and priority
    • Tasks can be single-occurrence, or recurring
    • Recurrence can be static (weekly, monthly, yearly, every X days, etc.) or dynamic (X days since last completion). Dynamic recurrence in particular is the thing I have had a LOT of trouble finding.
    • Keep logs of completions
    • Multi-user (any user can add or complete tasks)
    • Self-hostable

    A finance/accounting app

    • Ledger-based accounting, I.E. a distribution moves money from one ledger to another, and you roll up distributions by ledger to get balances for each ledger, and transactions consist of one or more distributions
    • Ability to create reports, by combining different ledger balances and/or search criteria (E.G. date ranges, or groups of ledgers)
    • Ability to mark transactions as reconciled or not
    • Ability to attach supporting documents (E.G. receipts or bank statements) to transactions
    • Ability to import transactions from CSV or other exports, from third party systems.
    • Ability to setup reusable templates for importing, regarding which columns to pull which fields from
    • Ability to use regexes or similar if parsing is required to pull values out of, within import templates
    • Ability to use regexes or similar to choose the ledgers for a distribution, within import templates
    • Ability to manually fill in whatever fields couldn’t be automatically determined, during an import
    • Ability to warn about possible duplicate transactions/distributions during an import
    • Ability to group distributions together underntge same transaction, during an import
    • Ability to exclude distributions, during import.
    • Ability to edit any data element in the app, and track version history.
    • Self-hostable or standalone storage

    These are both concepts for which a LOT of apps exist out there, but for which I’ve never found one close enough to be worth using, despite searching off and on for years.





  • The same IEEE spec that introduced base-2 floating point models was updated in 2008 to include some base-10 models that eliminate these issues. Many languages already support them natively, as well as most database engines. Otherwise, you can probably find third-party-library support.

    If you don’t have access to an IEEE decimal implementation, or if you just wanna be a rulebreaker, the common strategy is to just store only plain integers, and the precision level you want. So, say, if you’re just dealing with simple american dollars, you’d just make sure to always interpret the integer value as “cents”. If you need more precision than that, you might do “millicents”.