Not trying to be rude, but in a technology you're not familiar with you might not be able to know what good code is, and even less so if it's maintainable.
Finding and fixing that subtle, hard to reproduce bug that could kill your business after 3 years.
That's a fair point, my code is likely to have some warts that an experienced Android/Kotlin dev would wince at. All I know is that the app has a structure that makes an overall sense to me, with my 15+ years of experience as a professional developer and working with many large codebases.
I think we are going to have to find out what maintenance even looks like when LLMs are involved. "Maintainable" might no longer mean quite the same thing as it used to.
But it's not going to be as easy as "just regenerate everything". There are dependencies external to a particular codebase such as long lived data and external APIs.
I also suspect that the stability of the codebase will still matter, maybe even more so than before. But the way in which we define maintainability will certainly change.
The framing is key here. Is three years a long time? Both answers are right. Just getting a business off the ground is an achievement in the first place. Lasting three years? These days, I have clothes that don't even last that long. And then three years isn't very long at all. Bridges last decades. Countries are counted by centuries. Humanity is a millennia old. If AI can make me a company that's solvent for three years? Well, you decide.
Owning the issue is one thing, but being able to fix issues with a reasonable amount of resources is another.
To me code created like this smells like technical debt. When bugs appear after 6 months in production - as they do, if you didn't fully understand the code when developing it, how much time, energy and money will it cost to fix the problem later on?
More often than I like I had to deal with code where it felt like the developer did'nt actually understand what they were writing.
Sometimes I was this developer and it always creates issues.
I absolutely love the progress that was made in the several last years! The number of VST/audio plugins available on linux has grown from being quite a problem to having an actual ecosystem!
The jetbrains IDEs hav some very useful features falling into this category, these come to my mind immediately:
- Making variables, functions,... grey if they're not used
- Temporarily coloring variables + their usages when the cursor is on one
- Showing wiggled red underlines for syntax errors
Does anyone work with it these days? I haven’t heard of it for like a decade or two. Truly curious what’s up with it. As honestly, I thought php is long dead, but it looks like it isn’t. I remember WordPress as a much better alternative (in my humble opinion), but perhaps someone still uses it somewhere and can comment. Would really love to learn the state of Drupal in 2025.
To quote myself in the post you responded to "It just wastes space that could be used for a larger battery, while limiting the number of ports that the laptop can fit at any one time."
The ports I personally need are HDMI, lots of USB-C ports, sometimes USB-A (but less and less), and sometimes an SD card. I know everybody has different requirements, but I'm also sure that's at least somewhat typical. And given that, I can't be the only one who thinks it's silly to reserve space for several 4x3x1 cm large USB-C-to-USB-C converters in a space-constrained device.
The replaceable ports are not interfering with the battery. The battery is under the touchpad, not up near the hinge like the ports. [1]
I love my Framework 13. The battery life on it is fine, I'd estimate probably 6-8 hours and charges quickly. The touchpad is quite large which I really enjoy, I believe that's thanks to the 3:2 aspect ratio? It took a second to adjust back from a haptic touchpad to a physical one, but doesn't bother me at all anymore. The arrow keys are a none issue, the half sized up/down arrow is standard on most 13" (and even some 16") laptops I've seen.
As far as I know, those aren't wasting the space for a battery. Framework opted for their current battery sizes. Larger capacities are available for the same size of battery they do have.
For example, my other favorite laptop, the Redmi Pro Books basically have the same physical size batteries but at 80wh/99wh ratings.
I just think Framework can't find a contract manufacturer for higher density batteries at their volume.
> As far as I know, those aren't wasting the space for a battery. Framework opted for their current battery sizes.
I don’t get that logic. There’s extra space; more battery could fit in there. The fact that higher density batteries exist in no way invalidates that.
(You might perhaps have a point if battery life was already excellent and the more important goal might be to save weight, but that’s not the case at all.)
In any laptop, if you have IO on both sides of the laptop, then the motherboard is at least going to extend to both sides. There is no room for batteries. Especially with high speed data links such as USB3 and USB4 these days, you need a nice impedance controlled PCB to the edge or some expensive cabling or in the case of framework, IO modules that are pcbs with a connector bridging the distance further.
The opportunity is then taken to stuff the speakers in the framework in that same space.
It's literally no different than a MacBook Pro or other mfgs.
The only thing I could see is they need to figure out how to miniaturize their speakers to expand the battery size a bit. Or move the speakers to the main board and project out the top. Their speakers are currently larger than the competition and not really any better while stealing battery space.
I would love to see them offer a larger battery with the trade-off of the user removing the modular speakers. Because personally I think using sound devices in public is just fucking rude and I'll use better quality earbuds/headphones both in public and privately anyway.
Eliminate or shrink the speakers and you can redistribute that space.
IO? There is no space redistribution possible if you want the IO on the left and right like every other laptop in the world. The alternative would be to put the IO on the top edge of the laptop, in which case you can reclaim space. The downside is you limit the display opening angle (it can't go flat), but that's a weird obsession in laptop design that came from Apple and thinbooks. (There used to be IO on the top edge in older laptops). Unfortunately being the ulgy duckingly would be bad for Frame.works business most likely as I guarantee every reviewer would whine about it
In particular Framework uses a 4 series cell battery pack configuration. Not unusual and they went for 4 equal sized cells put in series in a rectangular frame. Trying to fill awkward remaining space such as a "U" or "L" shape cavity requires a far more custom solution and Framework most likely does not have the volume to commission such an order from a custom battery pack manufacturer.
Harsher punishments are not as important as reliable enforcement. Harsh punishments that are reliably enforced are very effective, but we generally can get a "good enough" result with more moderate punishments, reliably enforced.
> Such as call-by-reference only working 2 recursions deep.
Which smells like an anti-pattern to me. Blaming bad code on the language is one way to deal with it.
> Arbitrary decisions and namings on stdlib.
This is absolutely true and even more annoying I find that the ordering of stdlib arguments is inconsistent. Backwards-compatibility is one of the reasons this has not changed, I guess.
What I don't understand is, why people don't apply that same legitimate criticism to python. I recently had to do a project in python and was astounded by the amount of arbitrary namings and design choices.
I also agree that many php codebases, especially if not written in a good framework, are a hot mess.
That being said, the ecosystem if using decent frameworks with php 8+ versions very productive in terms of time vs results and a joy to work with.
> What I don't understand is, why people don't apply that same legitimate criticism to python. I recently had to do a project in python and was astounded by the amount of arbitrary namings and design choices.
I absolutely do. I appreciate the PHP community for having expertise in actually creating sane tools attempting to do a good job. But Python is just batshit crazy with some of the most wild bugs I have seen and no guardrails whatsoever.
Out of all the languages which got a type-system after the fact, PHP is the best one hands down. Runtime-validation of types + non-null by default keeps some of the bad stuff inside Pandora's box.
> Which smells like an anti-pattern to me. Blaming bad code on the language is one way to deal with it.
It was a simple recursive algorithm which we used to make some custom-highlighting on a few select words (much easier to understand than an equivalent iterative approach). But I wasted a good day until I saw that there was a technological limitation which made the algorithm fall apart, and not the logic itself. That's a quite offputting smell.
Of course I understand the economic choice behind PHP... finding PHP programmers is cheaper than going C# or Java. But having a good background in parallelism and having a good grasp on efficient CPU/JVM usage PHP doesn't provide anything unique. Everything it provides, I can achieve equally fast in other established languages, while posing an actual problem when technological limits are reached.
Finding and fixing that subtle, hard to reproduce bug that could kill your business after 3 years.