Hacker News new | ask | show | jobs
by jaredklewis 2522 days ago
But software has changed drastically in 25 years.

Rise of the internet, totally new app platforms (browsers), x64, ARM, smartphones, open gl, neural networks, development of increasingly sophisticated timing and side channel attacks, and on and on. I feel like you could pick any sub field of programming and find any number of revolutions in the last 25 years.

You say it’s all just new abstractions, but don’t you feel they bring some benefits and allow for new challenges?

Take computer graphics for example. There is so much more abstraction than there was 25 years ago, but go pick up any modern AAA video game and you can tell there is also so much more depth than we used to have. No?

But I haven’t been programming 25 years, so maybe my opinions will change.

3 comments

> smartphones

I will take this as an example. I was developing in 80386 machines. When smartphones appeared and people said that "this is different because you have limited resources compared with a desktop machine", I just thought "it is new for you, not for me". I said nothing because they are right. It was new to them. I was happy to share an environment with people excited with "a new challenge".

> there is also so much more depth than we used to have. No?

Most intelligent behaviour in games is based on agents and finite state machines. With more states than ever, with higher polygon count, but it is the same that you had 20 years ago. The results are way more impressive because the hardware is faster and there is way more memory. But, the algorithms are the same.

Look for A* search algorithm or Dijkstra's algorithm. Been there for a while. Graph theory is still a building block for most things that look intelligent.

Dude, you can strap your smartphone to a quadcopter and you have a flying 20-megapixel 60 fps camera with a multi-megabit internet connection. You can do real-time control of the flight. That's something you couldn't do with a 386, not unless you had a Predator to put it in.

And there's a whole category of new challenges not because of limited resources but because of abundant resources. Your photogrammetry drone can generate 72 gigapixels per minute of photogrammetry data. You have 200 teraflops on your desktop. How good of a 3-D model can you make? With how little human effort?

How about making things simpler and more flexible? Old GUI toolkits were designed around the need for 2-D raster operations to be hardware-accelerated. Are there simpler designs possible now that that's no longer a constraint? I'm exploring this in BubbleOS.

Sure, lots of game AIs are finite state machines. So in lots of games there's no challenge unless the NPCs gang up on you. But AlphaGo is also a game AI. It's a bit more sophisticated than an A* search! What would a game look like where you worked on a team with such AIs?

Smartphones also have multitouch. Yet >90% of people's interaction on them is using an on-screen keyboard, one-finger scrolling of lists, and tapping on prepackaged options. Can we do better? Are there UI paradigms that multitouch enables that would allow more creativity, despite the horrifying levels of lag in existing systems?

Security is a big problem, and most of the world is wasting their time on approaches like virus-scanners that can't work even in theory. But then there's seL4. What would a personal computer based on seL4 look like? How could we translate the guarantees it provides into practically useful power in the hands of everyday people?

Can you do voice recognition on every FM and AM radio channel in your area at once? What's the minimum hardware you'd need to do it?

There's lots of interesting challenges out there.

> I will take this as an example. I was developing in 80386 machines. When smartphones appeared and people said that "this is different because you have limited resources compared with a desktop machine", I just thought "it is new for you, not for me". I said nothing because they are right. It was new to them. I was happy to share an environment with people excited with "a new challenge".

Is performance the only or even primary challenge from smartphones though? It brings the internet, multiple cameras, GPS, an accelerometer, a touchscreen, and a compass all into one pocket sized device. We've had so many cool things come out of smartphones people didn't expect. I mean in 1994, was there anything like the iPhone Secure enclave, or the applications we have for photogrammetry today?

The fundamental concepts haven't changed but the applications certainly have. The amount of things you can "do" with technology these days is far more vast than it was 25 years ago.

It seems to me like you expect that coding itself should provide you with interest and excitement. Maybe you should try focusing less on the skill itself but what the skill can be used to build? Do you think that an engineer would look at a drone for the first time and think "boring - its just a bunch of propellers provide lift for the device, I've seen this all before.."? Similarly, do you think that a programmer would learn about RSA crypography and think "boring - its just modular arithmetic and prime factorisation, I've seen all this before"?

All knowledge is built upon that which came before it, so in that sense I dont see how anything could be considered "a new challenge" by your standards?

Software deployment has definitely changed dramatically. Instead of including the software along with the hardware, or shipping cartridges/tapes/disks/CDs/flash drives, we can have software as a service. Infrastructure is now written as declarative code and tracked in distributed version control. You can spin up thousands of instances of some software in seconds.
OpenGL is more than 25 years old (https://en.m.wikipedia.org/wiki/OpenGL) IrisGL predates it and is from the early 80s. Neural networks are from the early 40s and back probation is from the 70s. Graphics programming has changed radically in the last 20 years, increased compute and data has actually made neural networks effective for industry usage, etc so I get what you're saying, but in some ways it supports OPs original comment. A lot of stuff is advancing incrementally but there aren't as many radical new ideas in software, and in some ways many things are worse.
Well I agree about the dates, but that's not really what I was getting at.

The number of working programmers using neural nets or OpenGL twenty-five years ago would have been vanishingly small. Today either one is completely common place.

Perhaps "revolutions" was laying it on a bit thick, but it does seem to me that software now faces different challenges than in 1994. Volume of data is different (even a moderately successful modern web app could easily receive more traffic than the entirety of the 1994 Internet). Hardware is more complex (accelerometers, multiple cameras, microphones, touch screens, compasses, widespread GPS). Security attack vectors are very different.

Again, maybe my opinion changes in 15 years, but it's hard for me to look at something like the 2019 linux kernel, and think "this is basically just more of the same."

Maybe we are all just making slightly different points about this topic...

> but go pick up any modern AAA video game and you can tell there is also so much more depth than we used to have. No?

No. There is a lot more texture memory and some good shader programming, but we knew how to render as good or better graphics 25 years ago - we didn't know how to do it anywhere fast enough. For your example most of that gain is in hardware and art budgets.

Not exactly. The methods to achieve these things in real time are new and evolving. It's not just a matter of hardware. Sure, you knew how to get the same end effect with raytracing ages ago, but the path from A to B is extremely different.
That's true but 2nd order effect. The global illumination folks 20 years ago were still ahead of todays AAA titles in terms of "depths" in the above context. And the big bang-for-buck on the modern visuals is more modeling and model complexity, art budget. Sure there are a bunch of engineers working around hardware limitations etc, and there are some clever things being developed, but that's not where the the big shift lies, imo.