sk1pper
Also, for people interested in this type of thing, look up Ben Eater’s 6502 videos. Wiring up a 6502 (old microprocessor) to ROM and RAM on a breadboard; later he builds a “world’s worst video card” - more like a VGA display output card, still pretty cool.
I really, really love programming. I love learning about computers. I'm so lucky to get to do this for work and get paid pretty well to do it. It engages left and right brain. Yes, it's logic, math, all that; but writing code is creative, too. There are endless ways to solve a given problem, and you get to decide what approach is going to be cleanest, and readable, and maintainable, and just _feels_ right.
Honestly though, doing code reviews isn't my favorite part of the job. It's fine, but the fun part for me is actually _doing_ it. Understanding the problem space in front of me and the constraints and all the other factors, and then generating _my own_ ideas and putting them into the editor, and iterating.
So yeah, if the job becomes essentially reviewing AI code.. I don't know if I will still enjoy doing this. I mean, I'll do what I have to, I have a family, but it's not an exciting prospect.
I'm not anti-AI at all and I use it to speed me up in plenty of ways. I'll have it give me snippets of code here and there for stuff I need, I'm using Claude Code here when the use case is right, that's all fine. I haven't had much luck with it implementing entire features or doing anything at ~medium complexity or higher. I don't _want_ it to do that anyway. I want to do that stuff. That's the fun part.
I am concerned about its energy consumption too, and the hype is quite irritating as well. On both of those fronts, there's an opportunity for us to step back and consider what LLMs are actually good at, and use them where appropriate, instead of trying to infuse everything with AI.
I'm probably just getting old and grumpy. But yeah, it's a little depressing.
I run VS Code on it a lot, often remote over SSH to my desktop to work on a personal raytracing project - I need the nvidia GPU to do CUDA stuff, and the 16 cores in my 3700x are pretty nice for non-GPU stuff too. I also stream games from my desktop to it using Parsec and Moonlight. I just play games casually, so no need for super low latency, and over my local network the experience is great.
I’m not sure how well it’ll be holding up at the 11 year mark though (4 years from now). But I think this habit of doing most of my development over ssh will potentially extend the life of it.
For the most part I agree with Drew. Based on all of the above, it does absolutely everything I need it to do. I can’t even remotely justify the cost of a new laptop due to this. However, if I get to the point where I can’t even run KDE comfortably, or get an equivalent desktop UX, it’s time to upgrade. I don’t prefer minimalist WMs (or Linux even really, but if anyone wants to reply, I’d prefer not to fight about using Linux as a desktop - it’s just not for me) - that’s where I draw the line and decide to get some newer hardware. Hopefully when I do, that hardware will last me another 7-10 years.
What intervention(s) have you found the most helpful? Or are there any resources you can point me to? Thanks.
- me, laying on my couch and mindlessly browsing HN
There are things I want to do that I legitimately don’t have time for, even though I have time to browse HN. Or at least, I won’t make time for them, because they’re quite time consuming. I want to learn Japanese, make my own top-down RPG, get a black belt in Jiu-Jitsu. Build some cool woodworking projects. Start a blog. Photography. Get better at golf. I’m interested in everything, I could rattle off tons more things that I would love to spend time on.
But these must compete with other things I love to do, as well as things I must do.
I’ve been doing some game programming recently and have gotten really excited because I finally have grokked Godot. But, I’m not sure I have the time to actually make my own game of any quality.
Actually just giving up on that project might be freeing. Like when I gave up on Advent of Code on Day 17 due to problems taking me too long, I was more relieved than anything. I think this is what’s behind giving up on the idea of being able to do all of the stuff you want to do.
The problem is that this is fairly soul-crushing. When I have a side project going that I’m really interested in, it’s quite fun and energizing.
But I can be obsessive, so all of this extra energy goes towards the project. I think I end up netting negative, because I’m spending so much time and energy on the project. I will also start to abandon other responsibilities and fall behind in other areas of life. Exercise, chores, other but less sexy projects I care about (meditation is always the first to get discarded).
Eventually I hit a point where I realize I need to get my act together, and by then, letting go of the big project is relieving, but sad.
I guess the problem here is more with the obsessiveness than topics in the article, but they might be related. Like, I‘m constantly chasing novelty. This is probably common nowadays due to the internet. I’m a true geek who loves learning stuff, and I like doing it in a hands on fashion. Having an effectively infinite stream of novel things I can teach myself (minus BJJ and such) to do is just plain addicting.
I’m not quite sure what to do about this. This habit has made me a much better programmer. And I’m always doing something I love doing. But there’s collateral damage to other things I care about. And eventually I start feeling like I have no time to do what I need to do, and also what I want to do.
I guess you said "in the coming decades," which might be true, but for the time being it's more than just niche libraries that might push one to use C++.
Although there was a while there in like 2006 where I had a pretty solid install of Ubuntu on some HP laptop I had at the time. That’s the closest I got.
This is of course extremely anecdotal. Everyone’s on different hardware and therefore has pretty different experiences.
I hate Windows as a development OS but I’d rather deal with that than some odd update that breaks my install completely, or spending hours reading forum posts to try to make my Bluetooth driver less shitty, etc etc.
I just use macOS for dev and Windows for gaming and they stay out of my way. I’ll keep trying Linux again once a year or so, but I’m not optimistic on it. It’s a moving target too due to varying hardware support over time.
A cursory review of her website doesn't reveal any references or links to actual scientific studies of any kind. Well, except for this one, which seems to be about Homo Erectus species in the Levant region being dependent on eating elephants for a source of fat about 400,000 years ago: https://journals.plos.org/plosone/article?id=10.1371/journal...
However, I found lots of affiliate links to various products.
edit: oops, here's a link to her site for reference https://liondiet.com/
> when a nested query is refactored into a common table expression (CTE), this kind of change doesn’t have any functional impact on either a query or its outcome
This isn’t quite true, at least in Postgres. It won’t affect the outcome, but it can affect the query plan.
I’ve been trying to figure this out recently - because I love Julia’s features. Readable like Python, but with more ability to optimize performance, and also lispy with macros and generic functions. I’m personally interested in it as a general purpose language.
But when I search around about it, most folks to seem to relegate it to the data science realm only. Everyone seems to be saying: well it’s certainly general purpose capable, but its designers are focused on data science, and that will continue to be the primary goal. As such, don’t expect to see it widely adopted as outside of data science anytime soon.
I don’t want that to be the case, but it seems harder to build broader excitement about the language if it’s going to continue to be perceived as niche.
Spoiler: I did this exercise myself. I found Rust to be more convenient in some ways. The Rayon crate made adding parallelism (threads) pretty easy. Some other crates made things pretty terminal output easier.
C++ feels more familiar to me in many ways though - I also write C fairly often. Implementing parallelism was more difficult. (I tried `pragma omp` stuff which should work similarly to Rayon, but couldn’t get it to work.) But just getting something working seems a little more straightforward.
I find myself fighting Rust somewhat often. In C/++, if you know what you’re doing, and you just want something working as a fun side project, it usually takes less dev time in my experience. Maybe that’s because I’m still learning it. Some folks will argue that the Rust compiler forces you to write better code and actually makes dev faster because it catches your mistakes. I haven’t found this to be true.
For example trying to implement simple polymorphism in Rust that was analogous to the implementations in Raytracing Weekend got ugly very fast. I ended in a weird hell of having to add annotations to everything to support generics. Again maybe I don’t understand the language enough, but adding polymorphism was a 5-minute straightforward exercise in C++, even as someone who doesn’t write it often.
I like a lot of stuff about Rust but I’m doing my hobby dev stuff in C instead nowadays, mostly for dev speed like I said, and probably would opt for using a subset of C++ for higher-level projects.
[1] https://raytracing.github.io/books/RayTracingInOneWeekend.ht...
Stick to C++ or Rust, which I won’t weigh in on here. But both are much more mature.
But also autocomplete often suggests the wrong thing but I’m typing too quickly to notice, and then I hit enter and get the wrong thing filled in.
What I want is just non-automatic completion - which we already have. Ctrl+R gives me exactly what I need when trying to find some odd command I ran last week. Add in fzf integration and it’s perfect. Tab completion covers everything else. When I don’t want completion, it stays out of the way. In an IDE, you can usually bind completion suggestions to Ctrl+Space or something and then turn off automatic suggestions, or something like that.
Maybe you can set up this tool that way too - then it might be nice to try out. But as I mentioned generally I find the terminal to be pretty ergonomic already for completion stuff.
I just finished implementing a really basic network stack for my x86 kernel, including a (crappy) driver for the RTL 8139 network card. I just learned a ton about how the internet works. I learned it all in college, but there’s something different about grappling with it directly.
And I’ve gotten pretty good at C in the meantime. I’ve also learned a ton about virtual memory, page tables, system calls, various hardware, how data is stored on disk, the ELF file format, how processes are loaded and executed, the x86 calling convention, a little bit of assembly code, just to name a few.
Check out https://wiki.osdev.org for where to start. I’m hoping to start writing some blog posts about all of this soon, to provide a resource to complement the osdev wiki. A lot of info on this is surprisingly hard to dig up.
My main issue was around finding good documentation and (not-outdated) examples, which I guess just comes with using a bleeding-edge language. The biggest thing I find lacking is a "Learn Zig" book that takes you through the whole language. Sure, https://ziglearn.org/ exists, but it needs about 10 more chapters. Zig types can get somewhat complex, especially when interfacing with C, for example - I remember some difficulty deciphering those. For many things I ended up just reading Zig's source code itself, especially when looking up standard library stuff.
I mean I get it, who wants to write a book for a language whose features are unstable?
On the plus side, I agree that I fought Zig a _lot_ less than when I first started learning Rust. And I still fight Rust if anything involving generics and/or nontrivial annotations is involved.
I have to say, the quality of my first person experience is massively changed during these retreats, and you usually return to “normal life” with quite a different perspective on it. It just _feels_ different, and I realize I don’t have to be so caught up in all of it. Although if I don’t keep up the practice, that quality of experience and perspective fades very quickly, and I find myself back to being battered around by various interests, desires, impulses.
It’s kind of like crash dieting. Unless you can incorporate these changes (ie, a better digital diet) into your life sustainably, you won’t reap any real long- or maybe even medium-term benefit. Although, the upside of meditation retreats (or maybe dopamine detoxing?) is that you do at least learn that there is a “there” there.
I feel like if I wore that to a software engineering interview I’d run the risk of being judged as just not really getting the culture.
Mechanical keyboards are cool but turns out they aren’t for everybody. I spent a lot of money on them and ultimately discovered I don’t really like any of them. They’re clunky to type on for me. I tried Cherry red, blue, brown, and also Topre, and I still just like my dumb $30 keyboard more.
I've been wanting to love Linux desktop for 10+ years and I just give up. I don't have time for this stuff anymore. And I'm not using esoteric distros. Ubuntu LTS, I also tried Fedora and it was even worse.
Sorry, but none of this happens to me on macOS or Windows. They're not perfect - of course crash, have certain quirks, etc, but they waste much less of my time on basic desktop functionality being unstable or needing special treatment.
I just can’t imagine that is more profitable in the long run. The overhead of constantly training new people has to cost more than giving raises..