The thing I've learned from many areas of Eastern philosophy is that they don't seek to give you "the hard truth of the universe", but rather tools to understand reality and lenses under which to view it.
Of course, if we conflate it with religious beliefs then it's easy to think that they are laying out the truth under their worldview... But that's not how I've found it.
The true usefulness of the eastern conceptions of the self, the ego, the thinking mind, the emotions, it's all to help us see our faults and try to correct some of them to reduce unnecessary suffering.
But under the esoteric veil of using Sanskrit or Pali terms like antahkarana, advaita, ahamkara, Brahman and Maya, it can be confounding.
If a lens reveals a truth about reality isn't it true? Also I don't know what artificial distinction you're making between this and a religious belief. That's what all religions do.
I never said that about what the lens reveals. The thing is that it doesn't reveal truth. It's a tool that you only use when you need, not a dogma that is guaranteed to hold.
"There is a self I can pinpoint" is as valid as "There isn't a self I can pinpoint". "God(s) exist(s)" is as valid as "God(s) doesn't(don't) exist". When I have this problem, I can use a hammer. When I have this other, I need a CNC mill. That's my understanding.
Some religions are teleological (they have purpose mapped out) and you just have to have faith or commit some actions. Others give you some necessary but insufficient tools, because the truths they want to express to you are somewhat ineffable.
I've only learned of the Good Ol' Days of the 90s from second hand sources, and I was in middle school throughout the aughts, so for me these periods are just a mirage of a better time. In high school I pursued reverse engineering and other stuff, so I could blissfully ignore the newer direction the industry was taking all the way until 2019.
But now I'm close to graduating university. Is there any kind of job where this kind of software is still more common? PHP web development, sysadmin work, writing systems software or native software, etc.
My experience of programming as a Junior Software Engineer in the '90s was replacing inner loops with inline assembly, avoiding cache misses (keep your code in the L1 cache) and making sure your memory accesses stayed on one page. Nobody seems to care even in the slightest about this stuff anymore, and the abysmal performance of modern software shows it.
During the last 30 years, everyone's focus has drifted up the stack, to higher and higher levels of abstraction and higher and higher level languages, to the point where we are totally divorced from the electrons and realities of the underlying hardware.
Certain industries still care about this stuff. Some trading firms rely on performant systems which utilize strategies like what you described. Not everything is in hardware and it varies from place to place
There's a lot of places that care about performance now, but in many if them, instead of optimizing your own business logic, you would be building performant platforms so that others could build their own business logic on top of them, be it V8 or Unreal.
Honestly, I think that this separation of concerns makes much more sense.
For php you're probably best off learning a framework or two (zend, symfony, cake, laravel) which is drastically different than writing regular old php. WordPress devs are always in demand for contract type of work, but it's a grind for minimum pay unless you dominate a niche with a plugin.
Unfortunately sites like square and social media have taken over the small time web dev companies where you used to be able to get your hands dirty at all levels.
I'd probably look around at digital marketing companies. Your tech skills won't be "praised", because they favor creative over technical abilities. But they'll probably throw a wide range of technical problems at you and expect you to be "fullstack".
Heavy industry. Manufacturing, mining etc. This stuff isn't always in the flashiest locations and wfh is bad form in my experience, but it is certainly critical. There are all sorts of custom systems keeping track of (and tying together) high value physical processes.
Embedded. Things are getting fat and wide enough that you can apply all of that tech to an embedded system and, hopefully, no one will be any wiser that you've done so.
SOM-based development (system-on-module) in the embedded Linux world means that being able to productively pick and place the right software components is a highly sought after skill.
There is gold in them thar' repo's, especially if your shovel is a SOM and your mule is a functioning supply chain direct to the customer ..
By good ol' days I meant that everything I've read about them tells me that set of problems and frustrations is better than what we have today, and software was actually made better by those circumstances.
Of course, I can fire up DOS, NeXTStep, or Windows XP and get to doing it on my own, or hack on open sourced codebases from the time, but the key component is the teams of people doing it, and the common wisdom that they had.
Rather than thinking it was heaven, it's a hell I'd prefer over our current one, so to speak.
Right I'm just saying that's not correct. It's easy to view history through a very positive lens...nostalgia (even nostalgia for something you did not personally experience) is a powerful drug.
I have a lot of nostalgia for writing BASIC and the feeling that I got the first time I learned about HTML4 tables and ASP.NET. But you could not pay me to return to those technologies.
> Sometimes I wonder whether "burnout" or "occupational burnout" describes something I have experienced in college. It was not a spectacular or intense thing, just losing interest in my subject completely and avoiding getting started with exercises, even though I was decently good at my subject and loved the hours and hours I spent studying.
I think this is my experience right now. I love CS and almost all my classes were great, but now it's like I can't study, I can't will myself to work on a class' project, etc. I have an exam that I have been avoiding for months and it's blocking my other classes that require this exam to take their exams
The fact that you use the past tense means you got past it? If so, I'd appreciate any advice
I felt the same with Electronic Engineering in my final year - because I had realised that what I was learning was so academically focused that it was almost useless in the real world. I forced myself to finish that last year, but I think that effort destroyed my love for electronic design work (fortunately, I fell into a software job instead, in part because I got my degree).
Perhaps if you can get out in the real world then you will find real problems and those will likely motivate you (if you are anything like me, anyway). The most motivated students I recall were already working, and they picked and chose relevant academic focus that could help them with their design work (i.e. they could get some value from the academic system). Even though work is often depressing in itself (varies on a huge number of factors).
Edit: perhaps relevant: I was depressed due to a relationship. She ended the relationship with me, and the next day I was long-term happy. Turns out situational depression is a thing, and that it is entirely different from clinical depression (which doesn’t fix itself in a day - exception fast bipolar?). If you feel unhappy, sometimes you have the ability to fix the situation that is making you unhappy!
Beyond the OP's points, some of which can be seen across history and aren't just a "now" problem,
I feel that aesthetics have declined massively just these past 15 years. I remember the early web, and then the era of blogs and personal websites, the y2k and Frutiger Aero design styles I could see in ads on TV, on many websites, in many of the arts, etc.
Nowadays, you can't find this except in individuals' work
(e.g. those scattered across the web)
Every company's site is the same: a header image or a carousel, big sans serif text saying absolutely nothing of substance, no form nor function in their presentation. Both native software, web apps and smartphone's apps are converging to a braindead flat/material design design (and if you complain, UX people throw out arguments of accesibility (which are completely irrelevant to what UI style you choose to use), and many say that skeuomorphism is ugly (???), when in reality their UI choices are atrocious, reducing functionality by taking away options and even going as far as removing borders around most things, making it harder to know what is clickable. I've seen my parents and grandparents, neighbors and even people my age struggle with these "easy" interfaces)
I genuinely believe the effects of these design choices around everything in our lives are detrimental to our mental wellbeing, and thus I try to surround myself with 19th century furniture, and I use Windows XP for any non-internet related task. I prefer forums and personal sites in my browsing, and regularly use wiby.me and marginalia.nu's search functionality.
I only play old games and indie games too.
I know it's just a futile attempt to resist the passage of time, but I can't help it. I try to make things in this vein and I know that it's just a small drop in the ocean but I still do it.
Very similar observations about software trends and quality.
Particularly the trends to remove essential functionality like one importat example in Windows 11 that you cannot put task bar on left or right side of screen and using ungrouped and fully labeled items. It's de facto unusable for my case because I need a lot of different windows with constant context switching between and was totally lost (went back Windows 10). Left/right taskbar has all items exactly the same place where opened, enought text to instantly indentify what program and what document/IP address etc. it contains, nothing moves itself and it's almost muscle memory to glance and see what program and window I need to open the current moment.
It's not the most popular use case for sure but if even 0.1% users like developers or other multitask heavy workers need similar overview on desktop workspace then that is like ignoring 10 million users. And for what? So that company can optimize away like two workers on Windows UI team for 6 months effort. Instead released broken Windows to RTM and 2 years later still essential functionality missing.
There have been problems in this area before, like Windows ME and some but those were more like broken drivers and things that were not or at least did not seem to be intentionally broken, just bad quality. Now there are more problems that are literally in the genre of f. u. user, we do what we want and optimize everything to 51% users, if you are in 49% then good luck.
Maybe need to adapt and accept that everything needs tinkering, third party tools and constant management after updates to be barely usable, still not fond of this method but what are the options any more.
Thanks for the resources, these are great! As an avid chess fan I've always played around with the idea of trying making a basic chess engine.. This might just be the push!!
What bothers me is that I don't know how to squeeze all of the juice out of my CPU (or any programmable device for that matter). I see instances of the Jevons effect everywhere (e.g. the use of Electron), and on the other side I see DOS-era programmers whose experience transfer really well to more modern machines, so they know how to get the best throughput on their data, how to isolate slow but necessary parts of their programs (like certain OS APIs).
I feel like having started programming on a high level language affected the way I program even in lower level languages, so I don't know how to do better resource utilization, or how to do I/O efficiently.
So I don't have a problem with, say, writing a script in Python even though it's not the most efficient use of my CPU, because I'm just looking to get things done. But when I have a problem that needs horsepower (and I know my 8 core 3.6 GHz can absolutely deliver that), I don't know how to tell it to do it.
It doesn't help that many programmers' first thought would be to go for the cloud, when a single computer can be much faster than a bunch of AWS VMs
Another example is the .kkrieger demo, which seems like wizardry when you've only seen similar things done in Unity/Unreal
My issue is concurrency is so hard. One time tasks don't make sense to make concurrent, b/c migrating from sync to async takes 2-5x longer + higher bug risks and more complexity.
And a lot of concurrency resources just dump a list of tools on you. Just saying "here's a spinlock, here's a monitor, here's a condition variable, here's the definition of Dining Philosophers" is like teaching woodworking by just showing you a bunch of powertools without any explanation of how you make furniture out of them
> b/c migrating from sync to async takes 2-5x longer
I very firmly believe that the future of concurrency is with language features that let you basically “write blocking code and run it in parallel” like fibers/CSP/etc. It’s how I’ve started pushing everyone to write where I work and it’s made everyone so much more comfortable (and error free) at writing things in parallel.
It’s way easier to reason about than async+await/callbacks/etc. It fits with how people thing about sequential programs, and it’s how the operating systems most people use expose concurrency today.
I write a lot of golang now. Golang has the easiest to use concurrency model of any language I've used (js, java, c#, ruby, python), but to perform any task properly, still requires fine-tuning (e.g. how many threads/go-routines do you use per stage in the pipeline?). Implementing a pipeline still adds ~15 additional lines per stage when compared to the sync version.
I push ppl at my job to write concurrent code, but we also work on high traffic systems at slow moving company and its better to do it fast the first time.
There's another game like that that surprised me: Amazing Cultivation Simulator. I got this video ( https://youtube.com/watch?v=wJxM3POU92w ) recommended on youtube and I watched it start to end with my jaw dropping more every time a new mechanic was described. Before that I had thought that big systemic games were stuff like Zelda Breath of the Wild, Minecraft or Dward Fortress. But this simulator game is one I'd like to see the code of
I've been thinking a lot lately about those two examples related to experience in programming, domain knowledge and producing good work. Jon had written 12 compilers by the time he got to Jai, and many more games before his Sokoban, and he started making games as a contemporary to Abrash, in an era where you had to really learn what was going on to produce something good. That knowledge from constrained environments adapted really well to the increasing power of computers (both in terms of processing power and ergonomics), whereas coming at it from a modern programmer's POV you can get away with very little in terms of know-how (which is both good and bad)
I'm working on trying to reach their level (it is reachable) but I sometimes feel like I started with a handicap of comfort from modern OSs and tools
So are there any resources for simpler way of writing code but for bigger projects (specifically more complexity than toy programs or scripts) or do I only have well written codebases in a similar style as a target to study?
I'm aware that you can write good OO code, that inheritance can be useful (e.g. in shallow hierarchies), etc. but I'm interested in exploring this other side of programming to improve my code
I guess Michael Abrash's Graphics Programming Black Book fits the bill, though no amount of literature replaces getting your hands dirty in late 80s-early 90s level hardware+software. However, while you can do this, you're still missing the things you learned by being part of a team (of the kind which there are probably in the low hundreds right now). How much I'd give to be part of Nintendo or Id software or some other era-appropriate team figuring out how to make the early big 3D games like Mario 64 or its contemporaries on the PSX. Of course you can bust out an SDK and try it out but it probably won't be the same.
The true usefulness of the eastern conceptions of the self, the ego, the thinking mind, the emotions, it's all to help us see our faults and try to correct some of them to reduce unnecessary suffering. But under the esoteric veil of using Sanskrit or Pali terms like antahkarana, advaita, ahamkara, Brahman and Maya, it can be confounding.