/home/rawley.xyz

Philosophy

The Problem with Modern Computing

As computers get faster get faster, code quality and performance get's worse. The tragectory of the software world (particularily in the web dev sector) is to produce solutions to problems, without considering performance, optimization, and availability. How many billions of CPU cycles have been lost rendering SPA's and PWA's? In reality, computers are limited tools for communication, mathematics, and entertainment, not for loading 2MB JavaScript payloads, that in turn render the page.

Solve Your Own Problems

These ideas also, drastically effect the availability of software. Most software nowadays is horrifically bloated. It's not rare to see 2GB `node_modules` folders when working on Node.js projects, and the best part is, half of the packages are just simple packages like `isOdd` and `isEven`. How lazy have developers become? We reach for pre-made solutions to well-defined problems when we could easily write our own without exposing our software to potential security vulnerabilities, and inturn reducing bloat. Some developers will argue "why do it yourself when I can get a premade solution, that I know works!" Sure, download that dependency, link that project to yours, but know this. You will never develop anything truly unique if the solutions to your problems are solved by people smarter than you. Simply put, how do you think the library creators made it to the level they're at today?

Packages also, can make us feel very productive. This is something that Jonathan Blow points out in one of his talks, Blow mentions that high-level languages, and libraries make us feel like we're doing a lot more than we really are. Ken Thompson and company wrote most of Unix in 3 weeks; an entire operating system, kernel and all. Compare this to the most "productive" day of a web developer. Blow demonstrates in his talk that as companies progress they hire more and more people, but the products and codebases of the companies rarely change drastically enough to warrant this. Meta for example, employs 71 thousand people as of 2021, how often does Facebook, Instagram, or WhatsApp change? To put it nicely, most developers don't do very much at all. (To put it in math terms where p(x) = productivity per employee, and x = number of employees, Lim x -> ∞ p(x) = 0).

It is far more interesting, educational, and engaging to solve problems, rather than use a pre-built solution. Developers will create truly unique, and engaging solutions that can be iterated and improved, when needed without having to pester library maintainers. And to top it all off, your solution will be unique to your workload and problem. You will be solving your problem better than something generic.

The Core 2 Duo Standard

Software before the 2010's had to take into account the machines that they were running on, in turn causing software to be developed in a more intimate way, focusing optimizations rather than features. Machines were fair, but not powerful. Think, Intel Core 2 Duo, 2-4gb of DDR2. This hardware is actually very good, and in my opinion as much as an average person needs (even today). If you write software (outside of graphics programming, games, etc), and it can't run on a Intel Core 2 Duo, you need to seriously re-think what you're doing, and how you're doing it.

Conclusion

Do it yourself. Only use what you need. Take ownership of your work.

It's really a beautiful and unique way to approach software, and to an extent, your life. I find much more gratification and self purpose when I solve my own problems indepdent of pre-existing solutions (obviously you can still take inspiration from others). The world would be a much better place if we focused more on what we need vs. what we want. This is especially powerful in software, but can also be applied to how your own happiness. Finally, taking ownership and responsibility of your work will make you better at the work, and also, a more pragmatic person overall.