18 ms·
I hate almost all software (2011)
- salawat 5y agoOh my God. I've become this guy. I simply do not give a shit about whatever the latest opinionated framework/tech of the week is. All I've gotten to is the point where what I really care about is "Can I fit all the necessary bits and bobs in my head?" The rest is just branding, mind share, and the cult of complexity. Example: Yarn I finally figured out why I hate it. It tries to "help" you optimize your runtime namespace via hoisting. Causing higher level builds to create a distinctly different runtime footprint via hoisting than running each of the lower level builds individually. What. The. Heck. Who wants to inflict that on a user? I don't use a computer to do things in ways where I have to go through the torment of cataloging every bad assumption at every level. I'll take more pessimum, but easier track the reality of over more optimum, yet opaque any day.
- WorldPeas 5y agosame here. if only someone would create a computer from the bottom up rather than accept our current state of immense hubris
- ironmagma 5y agoThe problem there is that reinventing decades-old technology while believing one can simply shrug off uncounted millions of hours of technical problems and troubleshooting by doing so is in fact extreme hubris. Keeping the existing stack is much more humble.
- selfhoster11 5y agoEver since I read the Joel on Software article on rewriting [0], I tend to share this opinion. However, there comes a point where it's much better to shuck some or all the layer of the tech stack. It's inarguable that our current state of hardware and software is a festering pile of legacy layer upon legacy layer. C, x86 and Unix got us far and they were the only tech in their category that could do what they did, but the world has come a long way and they come with essential downsides (in both senses of the word). There will be replacements for each, eventually. C is finally meeting its match in Rust and certain other contenders, while x86 is sort-of under siege by ARM and RISC-V. It will take a while before it happens, but we will be better off as an industry. We will build back better, simply because we have the benefit of hindsight now. [0] https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/ https://www.joelonsoftware.com/2000/04/06/things-you-should-...
- ironmagma 5y agoI agree the end result could very well be better. But, I’d also say it could very well be worse. As a result, it’s risky, and therefore ambitious rather than a humble thing to do.
- selfhoster11 5y agoPerhaps, but we still have the old thing to fall back on for a little while if the new thing is really that bad. This will give it enough time to iron out the bugs. For example, Linux is in the middle of switching out the display server for something more modern, but not everyone has moved on because the new display server is still missing features and interoperability that the old one had. Everyone will eventually move on from the old one, but it's not like it's automatically overshadowed just because there's a new thing.
- ironmagma 5y agoI would say Wayland vs X11 is a great example of how a rewrite can go wrong. In theory, Wayland should be better because it's easier to reason about and more restricted, but in practice, X11 being "dumb" (anything goes) is probably what led to its mass adoption to begin with. This mismatch in expectations has led to a falloff of support in what would otherwise be a thriving open source project. Several of our general purpose platforms that have mass appeal (TTYs, the telephone systems, the Internet, FM radio, heck, even Fax) are built on unopinionated, stupid pipes. Correct me if I'm wrong, but Wayland is very much not a dumb pipe. As a result, it's risky in my book.
- klyrs 5y agoIt's hilarious that you use "hubris" to describe the old stuff which works but is long in the tooth. Are we actually going to reinvent all the wheels, completely destroy backwards compatibility, and come up with a computing platform that is a pleasure to use and develop for? And who's going to explain to grandma that it's better even if it won't run the bridge game she bought in 1996?
- nineteen999 5y agoYou're going to teach grandma how to install and use an emulator or virtual machine of course. She'll love that.
- salawat 5y agoWhat's the immense hubris? The reinventing the wheel constantly? I mean rebuilding from the bottom up would be an example of that hubris at work... So I feel like I'm not understanding what you were trying to convey.
- clownpenis_fart 5y agowhat's stopping you?
- saurik 5y agoWhat we need to figure out how to do is to inoculate new developers against ever caring about the latest "opinionated framework/tech of the week" in the first place :(.
- beckman466 5y ago> What we need to figure out how to do is to inoculate new developers against ever caring about the latest "opinionated framework/tech of the week" Capital dictates what tech is popular, not actual popularity or effectiveness. So abolishing Silicon Valley and the global north IP regime is the only strategy that cuts at the root of this problem.
- sudosysgen 5y agoUltimately, yes, but good luck ending IP imperialism. It would force the global north to actually build what it's consuming instead of extracting rents from intellectual property. That won't happen.
- deleted 5y ago[deleted]
- danellis 5y agoNot making a thousand new "Top 10 Frameworks to Learn in 2021" videos every week would be a good start.
- saurik 5y agoFWIW, I believe those people are often the very amateurs who are drinking the koolaid themselves (and when they aren't they are parasites that are more "fans" of software that developers).
- runawaybottle 5y agoWell, let’s talk about that. These bloggers are taking part in a type of traffic generation that either generates direct revenue, or indirectly generates leads via branding (let’s say they get paid for their reputation). What actually keeps that business model going? They have to write newer and newer shit about newer and newer shit. That’s the whole game. Very few of them ever write mea culpas - ‘Hey I pimped something to you guys for awhile, and it turns out that tech really sucked’ or ‘Woah, I’m so sorry about espousing this pattern or framework, it’s not that great’. That destroys credibility. I don’t really think they are sincere, the same way the media broadcasted everything Trump did to make him popular, followed by broadcasting everything bad he did because he’s the wave they needed to ride. The insincerity is not even close to being bad in tech compared to politics, influencers, etc, but it’s there.
- ironmagma 5y agoFWIW, the new (2+) Yarn does not use hoisting, and you can disable it on Yarn v1 as well via nohoist: https://classic.yarnpkg.com/blog/2018/02/15/nohoist/ https://classic.yarnpkg.com/blog/2018/02/15/nohoist/
- chadcmulligan 5y agoThe best software was written in the 90's - Delphi - everything else is still catching up. All web frameworks are awful, because the browser is awful. There, I said it.
- diskzero 5y agoComments from a previous appearance here: https://news.ycombinator.com/item?id=3055154 https://news.ycombinator.com/item?id=3055154
- bern4444 5y agoI had a fun conversation with my brother the other day. He was working on an R script (given to him by his lab) to perform some data collection. The script was no longer usable and he had to rewrite some parts. He was annoyed. Most of the time, software is written until it works just well enough to be just reliable enough to deliver value. And then abandoned. Engineers move on to solving the next problem using that previous bit. We only go back and edit that previous bit once we get to a point that the new thing becomes limited by that previous bit. That is to say, once we encounter a fundamental issue of the old bit. We can't write 'perfect' code today to build on in the future. We have no way of knowing what will be built on top until it's built! At which point we discover the fatal flaws. And then go back and rewrite. Or design a new language/framework/tool etc that avoids those issues. So of course this is the pattern. Separately, engineer's have become end consumers for software. And that software is produced by other engineers, who, are also using software. End consumers may not care about how software is made (though some certainly do, especially once they notice bugs, degraded performance etc caused by technology decisions etc - see 1Password's plan to switch to Electron). But what's the alternative? How could we otherwise avoid this and all the other problems Ryan points out. What is the alternative? Endless rewrites of existing layers with no progress made? Editor configurations, file structure, variable names etc don't affect end users. But they help engineers who help end users. Lots of progress is made to 'simplify' processes. But of course, those simplifications create their own new things that have to be learned, along with their own issues. And those new things are usually built on those old bits. It's easy to download a docker image today and with a single command spin up a React project, running its own databases, and express server and not have to worry about configuring paths, installing dependencies (the right way), configuring ports etc. But now we have to know about Docker. And Docker itself is built on those old bits. If there's a better solution (besides the pedantic write perfect code) I don't see it. But I'm all ears.
- 6510 5y ago> We can't write 'perfect' code today to build on in the future. We have no way of knowing what will be built on top until it's built! We have a very good idea what will be built on top compared with the idea we had 20, 40, 60 years ago. At some point we will just have to start from scratch.. again... and again. The frequency will decline tho.
- deleted 5y ago[deleted]
- brazzy 5y ago> The amount of complexity I'm willing to tolerate is proportional to the size of the problem being solved. First, most of the time you don't even understand the problem well enough to know its size. And second, complexity quite naturally increases with (at least) the square of the problem size because not only are there more things, each of them can potentially interact with every single other one. With great skill and effort you can reduce that exponent below 2, but actually reaching 1 is pretty much impossible. Thus software is going to remain intolerable to Ryan for the foreseeable future.
- slmjkdbtl 5y agoThis notion confuses me, what is the "size" of a problem, is it not exactly the complexity? Or do they mean the importance of the problem in the application context.
- jpgvm 5y agoI think it's possible for a problem to a broad but not necessarily complex (which I tend to think of depth in this analogy). Same goes for solutions to said problems. A solution can be large but simple or small but complicated and/or subtle or really anywhere along both of these axis.
- djrobstep 5y agoThis argument always strikes me as a cop out. Software is bad due to historical accidents, cultural factors, and short term economic incentives, not irreducible mathematical complexity.
- PaulHoule 5y agoThere's a deep principle, I think, that required backwards compatibility eliminates the possibility of needed reform. One could imagine a "bloat free" OS that eliminates the overhead of the paging MMU and has rationalized APIs and does everything differently. But you need a userspace and you're going to want to run (say) vi as a text editor and you need a shell so you get zsh to run, and you want "grep" and "awk", etc. So you have to emulate the old API and in the process of doing that all the old bloat goes back in...
- robertlagrant 5y ago> The only thing that matters in software is the experience of the user. I'm sure the users of Horizon had a great experience with it while they figured out who to fire. Those who were unjustly let go may have also wanted to matter to the software creators!
- imhoguy 5y agoOnly "unjustly let go"? It was life tragedy for many: > imprisonment, loss of reputation and livelihood, bankruptcy, divorce, and even suicide https://en.m.wikipedia.org/wiki/British_Post_Office_scandal https://en.m.wikipedia.org/wiki/British_Post_Office_scandal
- robertlagrant 5y agoI think you're agreeing that user experience is not the only factor, but worded in a way that appears to disagree. Sort of nullifies my point.
- imhoguy 5y agoNo, your point is valid. I agree that the user experience is not the only factor. But I just wanted to highlight the real impact of the Horizon IT disaster on individuals.
- robertlagrant 5y agoI get that, but the way you worded it obscured a point that could help prevent it happening again :)
- jimbob45 5y agoI get where he’s coming from. I’m guessing everyone here has had a script they wrote for five people balloon into a multi-team project. People wonder why you, the original author, were so lazy with your architecture even though you thought it wasn’t going to survive more than a week. The problem is that people aren’t willing to start over and rewrite software so you end up trying to bolt on features to an architecture that can’t handle them and the complexity becomes necessary for the software to function. C++ is the poster child for this, where the syntax for pure virtual functions is asinine but necessary because there was no other good way to do it at the time. If they had just rewritten C++ (and called it, I dunno, D for example) then they would avoid the complexity entirely. I respect Ryan but he comes across as someone ignorant of the realities of real-world SWE.
- sseagull 5y ago> The problem is that people aren’t willing to start over and rewrite software If I had to continuously re-write projects in new languages, I would never get anything done. There are a lot of projects that we all depend on that are pretty much one-person projects, and not everyone has time to learn a new language + ecosystem, then re-write, introduce new bugs, fix those, etc. Then of course, the rewrite doesn't always have exactly the same interface (API or user interface). So now you foist your new preference on everyone else. Many of them will stay on the old version, thus fragmenting everything even further. Look how long python 2 to 3 took (and is still not 100% complete). I come from scientific computing, and I have a rant bubbling up about how modern software development is being pushed into science, and probably slowing it down as a result. I should make a blog post about it, but I guess I would need to make a blog first :)
- sitkack 5y ago> I should make a blog post about it, but I guess I would need to make a blog first :) Jonathan, you can use a google doc, or a gist, or bug in a github project to get your message out. I recommend you should. I am a failed scientist that programmer in tech. I have helped grad students train up on unit testing, version control, api design, etc. I think modern software development needs to be brought into science so that science is reproducible. Without reproduction, we have nuthing. So I disagree, but I would love to hear what you have to say. Probably that our definitions of modern don't match and that you are drowing in sprint planning and story points, 1 beaker to 3 beakers.
- slmjkdbtl 5y agoMy solution to this problem (for personal goals not collective) is spend time and build tools, abstractions and interfaces that make myself happy, to a point where when I'm building actual content I only interface with interfaces designed by myself.
- PaulHoule 5y agoIt's a mistake to have nostalgia for UNIX. There are many things it didn't do right and has never done right. For instance signals don't make sense for many of the things they're used for. I was highly satisfied with X Windows in 1993 compared to Windows 3.1 but it seems Windows has gotten better over time but the Linux desktop has gone in reverse and I can date it to the introduction of KDE and the very idea that Linux has to have a "Desktop Environment" as opposed to just "X Windows". (The very idea that you should allocate enough space for what you're going to draw in the space seems absolutely foreign to everybody involved.)
- leephillips 5y agoPeople decide to install these desktop environments. I love my Linux experience. I have X Windows and the dwm window manager, running on Debian. Everything responds instantly on a 2-core 2 Ghz processor with 4 GB RAM, machines you can get for $100¸ and I can control my windows from the keyboard.
- andrewmcwatters 5y ago> (The very idea that you should allocate enough space for what you're going to draw in the space seems absolutely foreign to everybody involved.) Modern windowing doesn't work like this. It's like saying calculators should allocate enough memory for all the possible numbers they will ever compute.
- d110af5ccf 5y ago> signals don't make sense for many of the things they're used for Wut? They're literally the only way to do non-cooperative preemption in userspace. (You can't do that on Windows without a custom kernel driver BTW.) Meanwhile, if you don't need non-cooperative preemption then don't use fucking signals. Use POSIX shared memory and a pthread mutex. Or use sockets. Whatever. It isn't the fault of POSIX when someone chooses the wrong tool for the job. That's like complaining that the local hardware store does things wrong because you went and bought a jackhammer when what you really needed was a sledgehammer.
- Jasper_ 5y ago
- causality0 5y agoRemember back when websites were organized according to a hierarchy and if you wanted to find, say, all the reviews of MP3 players you just clicked on the MP3 player section and saw them all? Now you have to punch terms into a search box and sort through a massive unorganized list of results, only some of which are relevant. If you missed something you'll never know about it.
- contingencies 5y agoIndexing against an ontology is becoming a rare skill. Popular comprehension has become so hocus-pocus that schools now teach kids that if a book has an index it's non-fiction. Meanwhile, Grammarly assists people in faking literacy. Wiktionary has become the best Scrabble dictionary. Late 19th century people of letters are no doubt turning in their graves.
- na85 5y ago>if a book has an index it's non-fiction. I've read an awful lot of novels and not a single one has had an index.
- contingencies 5y agoYes, exactly the point. It feels as if education has dropped to the point where poor heuristics are commonly deployed in lieu of comprehension.
- deertick1 5y agoMan I was just thinking about this last night. I recall an assignent in middle school where I had to write a poem with a simile in it (among ither literary devices) I lost points because there was no simile. When I went to the teacher and told her "there is a simile : 'the cat fell in much the same way as a boulder' " (or something to that effect) I was told similes have to have the word 'like' or 'as' in them. Which is just not true but has become such a common hueristic that even English teachers think its the definition of a simile. sigh I totally did that on purposes though cause I wanted to see if she would dock me a point for that. I was such a little prick.
- deleted 5y ago[deleted]
- mathgladiator 5y agoThere is one more level where you hate everything, but then embrace loving the people that make shit. I bought a new truck, and after putting 100 miles on it the transmission started acting strange. I take it in, and they don't know what is wrong with it. So, they are going to replace the entire transmission next week. Now, I could say "oh, why did I buy that brand" or be like "lolz, these people are n00bs". Instead, I realize that they are making something at a massive scale and bad things will happen, so I'll accept the inconvenience and move on with my life. Shit happens, and that's life. I've hated software for a long time because I value precision and reliability, but these are exceptionally hard to scale organizationally. Suppose you fix reliability today, well tomorrow's feature could just fuck it up. Now, I still hate software, but I come at with a mindset that software is an artifact of a culture which requires nurturing and love.
- runawaybottle 5y agoThe melancholy is like that of living in a burgeoning third world city. It’s like, if we just focus on this and that, roads and water, keep corruption down, we’d have one of the best cities in the world - as good any other. Our people are good, but sometimes they can’t make sense of traffic laws and crime. It’s the only city I know, and I often wonder if we just took care of it, where we’d be.
- jpgvm 5y agoDo you live in Bangkok? I do and this is exactly how I feel. -_-
- MajorBee 5y agoThere are thousands, if not tens of thousands, cities like this around the developing world. I'd wager the majority of the world's population lives in almost-there-but-if-only cities. Certainly all of India, and a fair chunk of China.
- userbinator 5y agoI take it in, and they don't know what is wrong with it. Modern vehicles are disturbingly complex so I'm not surprised, and a lot is being done in software. For your sake I hope the replacement solves the problem, but I would also not be surprised if it was ultimately a software problem elsewhere. (As an aside, you may enjoy the Precision Transmission channel on YouTube, although that focuses on the mechanical side of things.)
- nine_zeros 5y agoThis is me. I've gone all the way from low level C programming to frontend. There is so much arcane information to keep in mind to keep yourself productive. And today's companies require you to handle politics as well, under the guise of ownership. Amazingly, software engineers just refuse to standardize and move ahead. Instead, reinventing the wheel is far too common. Reinvention is necessary but sometimes, good enough is good enough. Most engineering disciplines work on the standardization principle, which improves productivity and predictability. That said, companies and customers don't care about the underlying software, so I'm not going to waste my time on arcane knowledge either.
- nikkinana 5y agoEspecially software written by h1b's they all write shit code ready to crap the bed any time.
- the__alchemist 5y agoEven more relevant today. It seems like most software by both large corporations, and open-source projects, is bloated and poorly-designed - from both UI and performance perspectives. Few programs respond as quickly as they should, given project requirements and hardware. I think this is one of the reasons I'm enjoying embedded programming so much - I can make things as responsive and clear as I'd like, with no OS layer to build upon. I've been doing it in Rust, and among the Rust embedded OSS community, there's already a tendency towards complexity-by-default. Examples are execution frameworks without regards to if they fit a given problem, and over-use of traits, which makes code significantly more complex, with questionable benefit. Challenge: Come up with a list of websites that scores above 95 on Google page Speed insights. HN is one. The article linked here is another. Generally, programming-language home pages do well. What about the startup sites under `Show HN`?
- Retric 5y agoWhat I can’t stand is even just operating systems alone aren’t responsive. We can render complex 3D worlds at 120FPS but somehow opening a freaking menu causes noticeable lag.
- Tcepsa 5y agoTo be fair to the operating systems out there, GUIs are part of the program, not part of the operating system. If a menu is unresponsive it is far more likely that the writers of the software messed up and put some heavy lifting on their event loop or misused the GUI framework that they choose rather than any fault of the OS. That having been said I do agree that it is disappointing how sluggish some apparently-straightforward applications have gotten despite the hardware performance increases over the years.
- toast0 5y agoMost GUI driven OSes at least endorsed a framework/toolkit even if it's not exactly part of the OS. Some of those make it very hard to do things quickly. I don't think you can make a fast Android app using the endorsed toolkit. It simply takes too long for the widget constructors to run.
- selfhoster11 5y agoComplexity of adding cutesy icons to our build outputs, configuring WMs and IntelliJ/vim is entirely external to the end product of our work. Those are purely the tools we use to view and manipulate our actual work, the source code. It's harmless to the end user. It's also optional, unlike the very real criticism about the complexity of the rest of the ecosystem. What the author wrote about things like Boost, DBus, autoconf etc are exactly the things that threw me off from the C ecosystem and into ecosystems that have their act together to some extent, like C#, Java and Rust.
- lmarcos 5y ago> We collectively decided that Unicode is a thing now (including terminal emulator support), and that emoji are a part of it. That sounds like democracy applied to the IT world, and we all know that "democracy is the least worst system". Democracy doesn't necessarily imply rational thinking; e.g., we are building websites using PHP and WordPress, not Lisp (well, except HN, perhaps). My understanding (probably erroneous) of the article is: we, as developers, are condemned to use not-so-well-designed software because other developers don't know better and keep a) building bad software, b) using bad software. As usual, the majority is the driving force; the question is: are you part of the majority or are you like Ryan? As of me: I'm like Ryan only on Mondays, mostly.
- selfhoster11 5y agoSorry, I edited my comment. I realised that wasn't what I quite wanted to say. But to respond to your comment, I treat Unicode as a special case, because it is the result of a reform of text encoding from the ground up. Before Unicode, we had proprietary character sets and codepages, mostly mutually unintelligible. Unicode brought order, interoperability, and the ability to represent in digital writing whatever might conceivably need such a representation, now or in a hundred years. It's forwards-extensible, so future cultures and alphabets will be also well-served. I think it's just complex enough for the size of the problem, so it's actually a counter-example of the contrived complexity represented by PHP and WordPress.
- 5y ago
- zmmmmm 5y agoThe older and more experience I get the more I find myself turning into a complexity zealot, to a really extremist extent. Every time I see something introduced at any level that isn't 100% strictly necessary to the problem being solved it triggers a kind of accumulated PTSD is almost physically painful. I know everyone thinks they like simplicity but my observation is that about 95% of software developers have a complexity fetish. Literally any opportunity they get to introduce something over and above what is essential to the job they are doing they will do it. For many its almost built in as a part of their value system (if all I do is solve the basic problem then I'm just a mediocre mundane developer right? I want to be a rock star who develops frameworks and invents new things that other people use). And yet the epitome of genius in my mind is finding the solution that solves the problem without introducing anything at all. Again, I know 80% of the people reading my comments right here will nod their heads and identify with it and yet still go away and see themselves as exceptions to the rule and create another abstract class or define an optional configuration file or make their code automatically parse an extra environment variable with a regular expression or .... you get it.... We had to add something to the database the other day. Big argument. Should be one to many? many to many? what if this or that happens? what if requirements change? You know what - for the requirement wa actually had it was solvable with a single integer field on an existing table. But this is a battle that has to be fought ... over and over and over ...
- jollybean 5y agoThe personal evolution is very interesting: from complexity zealots to simplicity zealots. I suggest this has to do with the fact that at very local scale, complexity is not a problem, and individuals are therefore concerned with more of an intellectually elegant solution, irrespective of complexity. In addition, a complicated but elegant solution speaks to our intellectual passions. Finally, I think that we compete on those terms far more than we like to admit. Everyone wants to be the 'genius' that others envy, with all the followers, the insightful blogs etc., at least on some level. As we grow, mature and perspectives and horizons broaden, have little to prove to others, the novelty of a solution may take second set to 'getting it done' and this is when we start to develop a real instinct for the cost of code and complexity. Then we realize that most of our abstractions are leaky, that tons of code is unnecessary and make work, the 'horror' of complexity starts to come into clarity ... and we kind of turn into zealots. I'm in the simplicity zealot phase and I wonder what's next. I suggest it's probably just the 'Sausage Phase' wherein we accept what's there, and accept the limitations of individuals and operating environments. I wonder how we can teach new devs to move through these phases quickly.
- pajtai 5y agoWhat about hating having to understand the complexity of how this post moved away from Google Plus due to various corporate and other forces? Here is the original link pointing to G+: https://news.ycombinator.com/item?id=3055154 https://news.ycombinator.com/item?id=3055154
- MarkusWandel 5y agoYears after they became popular, I found an Arduino "starter kit" at a garage sale. Didn't use it because I didn't want even more software complexity in my life. Later I needed to solve a particular problem, so I googled how to program an Arduino. Hmmm. "yum install arduino" and 10 minutes later I had a blinky light and 15 minutes later I had my first actual program running. I keep seeing diatribes about how "modern" microcontrollers like the RP2040 are so much better and how the Arduino environment is too limiting. Well the Raspi Micro or whatever it is called is dirt cheap, so I ordered a few. And cracked the manuals, and ran the enormously complicated build environment complete with the complex modern Makefiles I won't understand in my lifetime. And got a blinky light. But I'll be darned if I'll learn all that stuff. But that's OK... eventually everything gravitates to the Arduino model again. The software underneath may be a nightmare, but the user interface is simple and ... inviting. This matters. I'm no idiot technically. I work on some of the most advanced ASICs on the planet at my work (won't get into details on this). I just don't need even more gratuitous complexity in my life. My Arduino projects are not trivial, some of them in the thousands of lines of code category. I still like the simple, clean environment of it all. I had to add a feature to a homemade photo repository that required Javascript. Cracked the manual, wrote some first principles Javascript. Oh, how do I do X? By using this gigantically complex framework. Bzzzt. Wrong. I'll do without X then.
- allo37 5y agoI remember when the Arduino became popular, my first reaction was "why do I need all these extra layers, just let me program my ATMEGA328 in good ol' C and call it a day". I guess it all boils down to finding the right level of abstraction that you're comfortable with.
- guitarbill 5y agoI largely agree, but I think Arduino is (largely) good because it removed complexity, and not necessarily on the coding side. E.g. pretty sure you can still just write C for a specific chip with Arduino. I've dropped back to reading an input register directly, either because `digitalRead`/`digitalWrite` is slow, or I want to read multiple inputs in parallel. So maybe here, the layers can be a hindrance, sometimes (but it's certainly more complex). I also remember the development experience before Arduino. Proprietary compilers/toolchains, awkward programmers and ISPs, and expensive eval boards or the xtal being weird on breadboard. To think AVR chips were some of the easiest to get into. I'll take a Mini/Micro/Teensy + Arduino any day for casual projects, despite some of the extra layers.
- userbinator 5y agoif you add unnecessary hierarchies in your code directories That's one of the things I've noticed a lot especially with open-source projects on GitHub, and it absolutely does irritate me when what should really be a single-file or maybe at most 2-3 file project turns into a dozen files of little content spread out across a maze of deeply-nested directories. I wonder what compels people to do that --- is it a fetish for organisation, attempting to emulate other projects, or trying to make something look more complex and "impressive" than it really is? I've heard it said that expert code looks like beginner code, except simpler and more correct.
- runawaybottle 5y agoIt’a funny that’s the first (and often simplest and most gratuitous) form of abstraction. What does compel people to start here? It’s like when you read about serial killers, the first thing you find out is that they started with torturing animals. I almost want to make a simple programming interview test (perhaps a Rorschach test) where the task is to take something simple and create a directory architecture - the more files the better. I’d only hire the person that doesn’t do the task. If you see dozens of files when the picture is presented to you, then I’m worried.
- d110af5ccf 5y agoRelated: FizzBuzz Enterprise Edition (https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpris...)
- runawaybottle 5y agoLol, the GitHub issues page is amazing for this: https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition/issues https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpris... https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition/issues/509 https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpris... Also the latest PR: https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition/pull/515 https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpris...
- dang 5y agoPast threads on this: I hate almost all software (2011) - https://news.ycombinator.com/item?id=15142316 https://news.ycombinator.com/item?id=15142316 - Aug 2017 (8 comments) I hate almost all software (2011) - https://news.ycombinator.com/item?id=13586596 https://news.ycombinator.com/item?id=13586596 - Feb 2017 (144 comments) I hate almost all software. (2011) - https://news.ycombinator.com/item?id=10553408 https://news.ycombinator.com/item?id=10553408 - Nov 2015 (2 comments) “I hate almost all software” — Ryan Dahl - https://news.ycombinator.com/item?id=3055154 https://news.ycombinator.com/item?id=3055154 - Sept 2011 (292 comments)
- InternetPerson 5y agoSoftware is incredible. Here we are, thousands of people across the globe, having thoughtful and interesting conversations, often on up-to-the minute information. The sum-total of human knowledge is available at our finger tips. We can fly safely around the planet. OMG, this list would go on forever if we sung the praises of software. It's complex because it's doing complex things, that no civilization has done before -- That no civilization has ever even contemplated before. But, yeah, OK, the glib object model is complicated. I'm sure you would have designed it better, and simpler. But you know what? You didn't.
- jrm4 5y agoThe base problem here is the myth that the developer and the user must be fundamentally different people. None of this gets better until "developers" get over their fear of writing themselves out of a job.
- thallukrish 5y agoYou can't express this feeling better than this. Oh! what a relief that someone could state the problem.
- daxfohl 5y ago"I hate almost all software... That I didn't write... For my particular needs... Without deadlines or managers or diverse opinions... Or any attempt to imagine how to make it more useful to others."
- greggman3 5y agoIt goes both ways. I certainly hate un-needed complexity but somethings are just complex. Good examples are font rendering https://gankra.github.io/blah/text-hates-you/ https://gankra.github.io/blah/text-hates-you/ and text input https://lord.io/text-editing-hates-you-too/ https://lord.io/text-editing-hates-you-too/ You think it's going to be easy. It's not. It just isn't. Often software is too simple. I just recently got my first "Smart Lights" (my mistake). I'm using Apple Home to control them. I put 3 bulbs in a 3 bulb standing lamp. Home has no way to for me to designate those as a single lamp. To Home they are 3 lamps. The solution is supposed to be use normal bulbs and a smart switch. But that precludes being able to set the colors of the bulbs. In other words, they thought it was simple but it's not. It gets worse. At first I thought this would be cool, but now I realize if I have a house guest, they won't be able to turn on the lights if I left them off. Arguably, if the power is cut and comes back on, maybe the lights should default to full white? At least then, in an emergency they just work. But again, designing lights that do that would be more complexity, not less. I can even add another wrinkle. My Siri is set to Japanese. So, my English speaking house guests will not be able to ask for the lights to be turned on if I had a HomePod, which I don't. More complexity because the world is complex
- dullgiulio 5y agoNo, a normal light switch on the wall is all you need.
- runawaybottle 5y ago^ The summarization of this entire discussion in one line is poetic.
- Spivak 5y agoBut it doesn’t replicate the actual features people want from smart lights which is 1. Turn them off and on from my phone, or voice assistant thing. 2. Changing the color and brightness of the lights. 3. Doing 1 and 2 automatically. Having lights change from white to yellow automatically based on the time is something I don’t want to give up now. It’s the switch that’s the real issue. If your switch was a panel with an on and off button that controlled the smart lights and your lights were plugged into a normal outlet there would be no problem. Consumer tech is trying to retrofit in an environment that hasn’t caught up to commercial lighting systems.
- dorianmariefr 5y agoWe live in a complex world, we just have to accept it
- amelius 5y agoIf this problem was universally solvable, someone would have done it and made millions. If you want a flawless experience, you will have to pay for it. Big time. Oh, and the title should read "I have a love-hate relationship with software", since apparently they still use different types of complicated software.
- quickthrower2 5y agoIronically iOS safari doing unwanted forward and back navigation as I try to read the comments, and when I return to the page scroll position is lost. Ironic!
- michelb 5y agoAnd that's from a developer point of view. As a user, most software is slow given that it's running on a blindingly fast supercomputer, less intuitive than it should be and just gets in the way a lot of times.
- fennecfoxy 5y agoLol this guy wants us all to write everything in C.