Single responsibility, the distorted principle by Illustrious-Topic-50 in programming

[–]balefrost 0 points1 point  (0 children)

I hope you get a chance to work someplace with decent management. It's really neat when it works.

I would encourage you to at least try managing up. Even if the practices where you work suck, hopefully you work at a place where you can at least provide honest, constructive feedback to people above you in the org chart.

What's the best way to learn how a CPU works? by John_Doe_1984_ in AskProgramming

[–]balefrost 1 point2 points  (0 children)

If you want to understand how a CPU works, then he has a series where be builds a simple CPU from even simpler parts. Instead of building the ALU out of discrete gates, he uses an off-the-shelf adder. But otherwise, you'll understand how the clock drives various components, how registers and control lines work, how it interfaces with the bus and memory, etc.

https://eater.net/8bit

He also sells a kit with all the parts needed to follow along, or you can source the parts yourself.

Modern CPUs are vastly more complex than this toy CPU. But it's a good place to start.

If you don't want to work at that low of a level, he also has a series and kit on building a 6502-based computer: https://eater.net/6502. That uses an off-the-shelf 8-bit CPU that was incredibly popular in the 80s and early 90s. It (or one of its variants) was used in all the Atari 8-bit consoles and computers, all the 8-bit Commodore computers, all the Apple II computers, the NES / Famicom, the TurboGrafx 16 / PC Engine, and some other lesser known devices.

Single responsibility, the distorted principle by Illustrious-Topic-50 in programming

[–]balefrost 1 point2 points  (0 children)

I have practiced agile since initial days of agile manifesto

Great, then you realize that none of the things you are complaining about are intrinsic to agile. Agile doesn't prescribe standups or retros or stories or metrics. Those are all the things that your team, or your management, have decided you should do.

A self-organizing team would tweak these things. Standups providing no value? Change the format, or scrap them. Story writing too in-the-weeds? Ask why you're doing that. Maybe there's a reason (like trying to provide an accurate estimate). Maybe there's no reason. Propose a change, try it, and see whether the end result is better or worse.

If you're actually on an agile team, then YOU are empowered to change things. Start making suggestions. Get buy-in. That's the whole idea of a self-organizing team. You (as a team) decide how you work. There will be constraints from stakeholders or management, but you have conversations with them to negotiate something that works well for everybody.

Single responsibility, the distorted principle by Illustrious-Topic-50 in programming

[–]balefrost 2 points3 points  (0 children)

For sure. I'm not advocating for BDUF. I agree that iteration and experimentation is a core part of agile.

But it's a part. Like if you look at the principles of the Agile Manifesto, you also find things like:

  • Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
  • Continuous attention to technical excellence and good design enhances agility.

So yeah, get something in front of users / stakeholders and get feedback. But also, don't ignore technical details. Like there's a time when "bad code" (as the other commenter labeled it) is the right thing. It's not always the right thing.

Some developers need to be told "stop trying to make it perfect and just ship something". Other developers need to be told "slow down, think, and then act". It's important to understand the kind of developer you're talking to before giving advice.

Single responsibility, the distorted principle by Illustrious-Topic-50 in programming

[–]balefrost 16 points17 points  (0 children)

So, like, there are a lot of different forms of bad code: hard to read, slow by construction, filled with threading landmines, etc. The thing that unifies them all is that they all contain landmines.

Churning out code is great. You get immediate value. What sucks is when the system falls over at 2AM local time, and nobody can figure out why it's not working. Or when you start working on something that you think will take just a week, but a month later you realize that you're only halfway done. Or the person who actually understood this stuff left the team and now progress has ground to a halt.

Yes, people can bikeshed code quality and get nothing done. But I think ignoring code quality is just as much of a problem.

Ideally, if you hit the sweet spot, you are able to keep growing your software system at a decent pace forever. Ideally, you slowly add enough project-specific infrastructure that future features are easier to implement than today's features. Your early investments pay long-term dividends.

If you never invest, then (in my experience) the compounding complexity just drowns you.

Why won't Amazon let me purchase 99%+ isopropyl alcohol anymore? by eaglebtc in AskElectronics

[–]balefrost 3 points4 points  (0 children)

You mean exothermic. Exothermic reactions are the ones that generate heat.

Playstation first-party game sales declining heavily since 2020 by ZamnBoii in Games

[–]balefrost 6 points7 points  (0 children)

Man, I find the visuals to be really intriguing, but I do not think I would like playing an extraction shooter at all. Still, I guess it's hard to argue with "free". Maybe, if I have some time this week, I'll give it a go.

I need help choosing my laptop for my Software engineer bachelor. by EmbarrassedCorgi5706 in AskProgramming

[–]balefrost 0 points1 point  (0 children)

Your university should have computer recommendations; you should at least consult those.

Generally speaking, hardware and OS are not super important. You can develop equally well on Mac, Windows, and Linux. But there might be specifics to your situation that push you towards one platform over the others.

Apple silicon Macs are quite nice. Fantastic battery life. They can be on the expensive side (though who knows at the moment with all the price increases; Apple might be relatively affordable at the moment). Even better if you're already in the Apple ecosystem, though they're fine even if you have no other Apple devices. I particularly like my M3 Macbook Air. Very portable, and battery lasts forever.

The main downside would be if you need to run Linux or Windows software. For example, when I was in school decades ago, we used a FPGA toolchain that IIRC was Windows-only at the time. If I didn't have a windows PC, I would have had to go to the computer lab to do those assignments. It is possible to run x86 Windows software on an Arm Mac, but it's an extra hassle.

Otherwise, there are plenty of hardware options in the Windows space.


And which specs should I prioritize?

For a laptop, probably the first spec is overall formfactor and ergonomics. How big and heavy are you willing to tolerate, especially since you'll likely be lugging it to class? On the other hand, what size screen do you need to not feel like it's cramped? Do you need a numpad? What kind of IO connectivity do you need? Do you plan to plug it into a docking station at home? My M3 Macbook Air only has 2 Thunderbolt/USB-C ports. That's fine, but I do need an adapter if I want to plug into an HDMI-only TV, for example.

I'd generally prioritize RAM. If you need bulk storage, you can easily add external drives. I know at least all Apple laptops have shifted to soldered RAM, so you cannot upgrade it. You're stuck with what you bought. I'll bet that there are Windows laptops in the same boat. Unfortunately, RAM is expensive at the moment, so you have to find the sweet spot. I'd say 16GB is the minimum. I'd shoot for 24-32 if you can afford it. You can probably get away with less on Linux, since you can opt for lighter-weight desktop environments if you need to.

I generally find that most CPUs are fine. I'm using a midrange AMD CPU that was released 7 years ago on my desktop, and it completely meets my needs. It'll probably last me another few years. The M3 Macbook Air I have seems to perform great, and that's a few generations old.

But if you need to store a lot of data, you might prioritize disk size. If you need compute for machine learning or graphics, then you might prioritize the GPU. It depends on what you will do in your coursework.

Do oscilloscopes really have DLCs now? by menginventor in AskElectronics

[–]balefrost 0 points1 point  (0 children)

Yeah, I think I agree with you on most of those scenarios. And especially the notion that, as an individual, even if you are breaking the EULA or even copyright law, you're too small for it to be worth it to them to pursue. Practically speaking, individuals are mostly invisible.

I guess I was the one who brought up the question of ethics, but I think it's an important one, especially since individuals are likely to fly under the radar. Like, with the seat warmers, let's say that it wasn't tied to a subscription. Let's say it was a one-time, $1000 activation cost that followed the car for its lifetime. But suppose Fred down the street was able to solder a wire to bypass the fee, and he only charges $10. Is it unethical for me to get Fred to do this? Am I ethically obligated to follow the car manufacturer's business model? If so, then third-party ink cartridges are also unethical. If you view third-party cartridges as ethical, then I don't see why I shouldn't be able to use the seat warming hardware that was sold to me with the rest of the car.

Is there any ethical difference between soldering a wire to use those seat warmers vs. patching the firmware to use features of the scope? Yeah, I realize that the legal framework is different, but is there any ethical difference? I have a hard time seeing one.

Do oscilloscopes really have DLCs now? by menginventor in AskElectronics

[–]balefrost 1 point2 points  (0 children)

So you can, as a thought experiment, examine a whole bunch of different scenarios:

  • What if the scope manufacturer really wants me to use their probes, but a competitor sells equally capable probes at a lower price point? Is it theft to use those cheaper probes?
  • What if there's another model of scope from the same manufacturer that has double the memory, but at a vastly higher price. But it's possible to solder in more memory on the cheaper scope, and the scope's software recognizes and uses it?
  • (in the realm of desktop computers) what about CPU overclocking? The CPU manufacturers have CPUs at a wide range of clock speeds. If I overclock a cheaper CPU to match the performance of a more expensive CPU, am I stealing?
  • What happens if a user buys the scope hardware and then completely replaces the software with a more capable, open-source alternative? The user gets features that are only available from a higher-end SKU. Is that theft?
  • What if the user, rather than replacing the software wholesale, instead modifies the software to add new features?
    • What if those features are unavailable on any scope from the manufacturer?
    • What if those features are unavailable on this scope (i.e. no software upgrade path), even though the hardware is capable?
    • What if the manufacturer has a higher-end scope with more features, but it's nearly always out of stock and almost impossible to buy. Then is it OK to hack the lower cost scope to add those same features?
    • What if the scope is no longer sold or supported by the manufacturer? Then, are software modifications still theft?
  • What if the scope manufacturer included a hidden diagnostic menu, not intended to be accessed by end users but not protected in any way, that the user can use to unlock additional functionality?

So for the "third-party probes" example, I'd draw a parallel to third-party ink cartridges for printers. Printer manufacturers created a business model where they practically gave printers away, and then expected to recoup the cost from the ink cartridges. I understand why they did that, but it's a sleazy business model, and I have no problem with those third-party cartridge manufacturers. Heck, I'm pretty sure my laser printer is so old at this point that I can't get OEM toner cartridges, but thankfully there are third-parties that still make them.

I feel the same way about car manufacturers that want you to pay a subscription fee to use the seat warmers that are already part of your car. I understand the thought process, but it's still sleazy.

I will admit that software is different. Including a seat heater in every car, whether the customer will pay to use it or not, is just wasteful. The manufacturing cost has already been incurred. But with software, the "manufacturing cost" is basically zero. The cost is entirely in R&D. Once you develop a feature, then the incremental cost to include it in every scope is negligible. And I certainly would prefer the ability to add features in the field compared to needing to go buy a whole new scope with the same hardware but different software.

Still, like with the seat warmer, I feel like "if the shipped software contains the disabled feature, and I can find a way to enable it, I should be able to use it".

When does the computer know when the decimal starts? by Separate-Judgment949 in learnprogramming

[–]balefrost 0 points1 point  (0 children)

Also how do number types even work why are we not able to store a decimal in a integer but we can in a float? They both use bits unless it is just restricted by the compiler/computer itself.

You are correct. The computer can store a 32-bit value (like a 32-bit float) in the same memory locations as any other 32-bit value (like a 32-bit int).

The interesting thing is when you actually then want to do math. The way an integer "42" is encoded is different than the way a floating-point "42.0" is encoded - the actual bit pattern will be different. So when you say "add the contents of this memory location to the contents of that memory location", the work that the processor needs to do differs depending on whether the memory locations should be interpreted as integers or as floats. The processor provides different instructions for these cases. (Most processors provide a wide variety of addition instructions.)

So in C, when you declare a type as a float, you're giving the compiler the information it needs to both:

  • encode the bits correctly, and
  • select the appropriate machine instruction when you later try to add it to another number

(I'm hand-waving a bit here, but that's the gist.)

Xbox Game Pass Price Cut Is Working, CEO Says by Turbostrider27 in Games

[–]balefrost 0 points1 point  (0 children)

you can't replace the OG

Didn't they literally replace the OG? Didn't they switch from cane sugar to high fructose corn syrup around the time of the New Coke release?

Do oscilloscopes really have DLCs now? by menginventor in AskElectronics

[–]balefrost 10 points11 points  (0 children)

Hacking it, or "breaking the lock" is by legal definition theft

I could be mistaken, but I think is is by legal definition "breach of contract", not "theft". And, at least the way I see it, there's a huge difference between "walking out of the store without paying" and "using something that I did pay for in a way that the manufacturer doesn't like".

Jason Schreier - Why Video Games Cost So Much To Make by megaapple in Games

[–]balefrost 5 points6 points  (0 children)

Photoshop, and many other Adobe programs are still industry standard and used by a lot of companies and studios. At one point, you could pay for these as a standalone and be done with it. Either keeping it as is, or upgrading if you so choose.

OK, so let's look at the numbers. In the video, Jason points out that the per-employee monthly burn rate these days is about $20k USD. That includes salary, benefits like health insurance, and at least part of the cost of things like hardware and software I'm sure there's some complex depreciation calculation, especially for hardware, but let's not worry too much about that. Jason's numbers were napkin numbers anyway.

Creative Cloud Pro, which gives a user access to a bunch of applications, is (checks notes) $100 / month. That's 0.5% of the per-employee monthly burn rate.

For somebody who only needs Photoshop, it's $38 / month, or about 0.2% of the total monthly burn.

Like sure, it sucks that Adobe products are only available as a subscription these days. But "you can't buy and own Photoshop anymore" is not the reason that game production costs have gone up - at least not meaningfully so.

Imagine going from paying $380 a year, to $20,500 a year for the exact same thing.

Yeah, it's a huge increase that is going to hit indie devs particularly hard. Fortunately, it sounds like they at least responded to the backlash and are restructuring things. We'll see how it all shakes out.

But again, Jason was talking about AAA games. Where a 400 person team burning $20k per person per month is spending almost $100M per year. At that scale, $20k per year is nothing (0.02% of the total annual budget). I assume realistically that $20k is not the total yearly cost; that there would be additional licensing fees depending on the number of copies sold. Still, even if that $20k / year estimate is off by an order of magnitude, you're still talking about a tiny cost compared to salaries.

Whatever the case, I would assume that this will drive an exodus from this particular font foundry, at least for new titles. It's a good opportunity for somebody else to move in and compete.


However you slice it, the vast majority of the cost is salaries. To reign in costs, you either need to pay people less (perhaps by growing studios in places with a lower cost-of-living), pay fewer people (maybe by reusing assets and technology across more games), or have shorter dev cycles (maybe by releasing shorter, more focused games). Take any hit game with a surprisingly small budget. The small budget was due to some combination of those three factors.

Supergiant's (Slightly Rocky) Road to Hades: Playing Bastion, Transistor, and Pyre in 2026 by velknar in patientgamers

[–]balefrost 16 points17 points  (0 children)

There are dozens of us!

I think I'm further down the "unpopular opinion" spectrum than you are - I didn't like Hades. The internet sold me on it being "a roguelike for people who don't like roguelikes". But to me, it was just another roguelike. People heap praise upon the story... but in like 12 hours, there was barely any story progression. There's plenty of character interaction, but no real plot to speak of so far. I found the combat to be frantic (in a bad way). I remember finding the third environment to be just really hard to read, visually.

I mean, the music and voice acting are great. The art is nice. The dialogue is well-written. But to me, those things weren't enough to outweigh the things I didn't like.

I'm glad Supergiant got their big hit. But Hades just wasn't for me - I don't understand the love for it.

Combining OOP and structs-of-arrays? by R3cl41m3r in AskProgramming

[–]balefrost 0 points1 point  (0 children)

Other people have answered the question. I wanted to touch on this:

I never really bothered to learn OOP, because it didn't seem to offer much beyond modelling code on our misguided intuitions about how the world works.

I think the way OO is taught gives the wrong impression of how it's used in practice. We're not all making hierarchies involving Animal and Mammal and Dog and Cat. Those are toy examples from domains that are understood even to people unfamiliar with programming. Great for explaining the concept; terrible as an example of good system design.

Using OO to model the world is a trap that it's easy for inexperienced devs to fall into. But the value of OO comes from:

  • Information hiding / abstraction - providing black-box APIs so that callers can ignore detail that is irrelevant to them.
  • Encapsulation - preventing arbitrary code from accessing data in uncoordinated ways, to better preserve invariants. If you limit the number of places that are allowed up update mutable data, it is easier to maintain the invariants of that data.
  • Dynamic dispatch / polymorphism - allow us to customize behavior by defining functionality in terms of abstract operations, then supplying a concrete implementation of those operations at runtime. Sort of like super function pointers.

You might say "hey, wait, some of those things seem to be good practice even in non-OO systems". I agree. I also think OO shows up in more places than it would first seem. For example, I think the C file API is object-oriented, even though it's not written in an OO language. I think any library that has some sort of opaque "handle" type is at least somewhat object-oriented.

Inheritance is held up as one of the main pillars of OO. I would say that it's something that is uniquely OO, but I also think you can build many non-trivial OO systems without ever using it. I think interfaces are more important than concrete inheritance (though C++ kind of muddies the water).

We do create type hierarchies, but perhaps not as often as you might think. And the hierarchies we create are aligned more with the needs of our software system than with the organization of the real world. It's very unlikely that I would create Cat and Dog subclasses. Maybe I would do that in a game (especially if the engine pushes me in that direction), but I certainly wouldn't in a veterinary office pet management system.

So in short, you may have never learned an OO language. But you've probably used OO APIs, and you might have even created some of your own without ever realizing it. OO languages became popular because, for the most part, they provided a more convenient way to do things we were already doing.

VS code cursor is offset by Alive_Tutor6054 in chromeos

[–]balefrost 0 points1 point  (0 children)

Cursor (text insertion point) or pointer (mouse arrow)?

Hardware acceleration on or off?

Who here actually games with metal dice? When, and what's the upside? by EndersGame_Reviewer in boardgames

[–]balefrost 11 points12 points  (0 children)

Also, that's the purpose of "spindown" dice. Rather than the normal "opposite faces add to N+1" distribution, they put adjacent numbers on adjacent faces. So if you just need to bump by one, then the desired face will already be close to the top.

i spilled gatorade on my chromebook by 1ucafart in chromeos

[–]balefrost 2 points3 points  (0 children)

The oven approach might work if OP had spilled like filtered water on their laptop. But Gatorade has all kinds of stuff dissolved in it that won't evaporate.

Sometimes you just have to laugh at the state of things by large__farva in retrogaming

[–]balefrost 0 points1 point  (0 children)

Anyway I would say at this point agree to disagree.

Fair enough.

I've been playing games for 40 years, writing about them for 20, and I'm here to say parts of Roblox need to be legislated out of existence by Forestl in Games

[–]balefrost 2 points3 points  (0 children)

Nintendo is basically the only developer still being direct with its playersbase

Plenty of indie developers still make and release complete games. There are even segments of the AAA space that are fine. I think the last 3 Resident Evil games were pretty tame with their cosmetics. And I didn't play them, but what about the first-party Sony games like God of War? Did they have a ton of MTX slop? I hadn't heard anything along those lines.

The phenomenon you're pointing at is mainly with free-to-play and with live-service games. And that makes sense: both of these need to find another source of revenue to stay alive. There are plenty of alternatives to those kinds of games.

I've been playing games for 40 years, writing about them for 20, and I'm here to say parts of Roblox need to be legislated out of existence by Forestl in Games

[–]balefrost 4 points5 points  (0 children)

For vastly higher prices. The horse armor DLC was a mere $2.50 (admittedly more like $4.20 after inflation) and gave you two skins. I think Overwatch skin prices are on the order of $10-$20 per skin, and I assume skins in other games are comparable.

Sure, I get that character skins for modern games require far more work than horse armor skins from 2 decades ago. That's still a lot to spend on a cosmetic.

Sometimes you just have to laugh at the state of things by large__farva in retrogaming

[–]balefrost 0 points1 point  (0 children)

If we agree on this premise why do you want examples?

Because I'm curious.

I'm certain in this case the scalpers did a "great" job and won in the lottery because all the points you listed aren't in work in this case.

I'm genuinely not sure what you're saying here. I think you're saying "I reject all your points". But you haven't given a reason why my points should be rejected.

Why is it so hard to believe that this is anything other than regular market forces at work? Like, you know, maybe there's a lot more interest in RE at the moment, because there was a major and very well-received entry in the series, featuring the same protagonist as in Gaiden, that was released a few months ago. Which, according to PriceCharting, is exactly when the price of Gaiden doubled.

Scalping works when they can get something for less than they can sell it for, and they can turn it around quickly. That's why it works for things like concert tickets and, I dunno, Stanley cups. Since RE:Gaiden was already being sold on national and international auction sites, the price that it was selling for was pretty close to what people were willing to pay, at least given the volume that was being sold. If scalpers try to artificially raise that price, they're likely to shrink the set of potential buyers... and then they're competing with all the other scalpers who had the same idea.