Hacker News new | past | comments | ask | show | jobs | submit login

I find using <OLD TECHNOLOGY> in <MODERN_ERA> endlessly fascinating. I love stuff like this!



The thing I love most about older computing technology is that it wasn't ridiculously over complicated yet. In order processors with fixed instruction sets, no MMUs, no caches, no 500 layers of abstraction between you and what you're actually trying to accomplish. You know, stuff you could form a solid mental model of and reason about. Part of me really wants to go back to that world, even if it does mean a huge loss of performance.


There are still some developers who work on microcontrollers and the like. Also a lot of the embedded world still has MMUs and caches but there's not a whole lot of software between you and hardware.


I have a few problems with that, though. For one, I don't really care about the vast majority of projects that kind of stuff is used for, and for another they often have closed proprietary toolchains.


Really? Because it's used in so many fields there should be something interesting there one would think. Of the top of my head:

Defense, agriculture, home automation, industrial automation, finance, automotive, oil&gas, space resarch, robotics. The list goes on!

I think the proprietary toolchain stuff is also changing, but slowly.


If nonproprietary is #1 issue for you, you could design your own CPU or emulate an existing one using a hardware design language and FPGA.

Although there's no way past proprietary chips, at least the open-source toolchains for them are coming along.


> Although there's no way past proprietary chips

Yeah, see, that's a hold up for me. If I'm going to go through the effort of building something completely non-commercially viable than I want it to at least be completely open. And before you say anything, no, I'm not at all interested in making anything commercially viable.


As long as you get something with an ARM, you don't have to worry about a proprietary toolchain.


ARM itself is proprietary though, and also I'm not sure there are ARMs as simple as I'm describing.


All the retro platforms were proprietary, though? Can't get much more proprietary than Nintendo.

Cortex-M0 is very comparable to a 68k with 32-bit registers. http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc....


Many old Nintendo systems are now well documented and you can potentially make a fully non-proprietary hardware clone and software tools.


Retro platforms were current technology. If I'm going to use technology with several orders of magnitude less power, then I'd at least like it to be open, is all I'm saying.


I mean, everything is propeitary then. Even SiFive has issues publishing their preboot code. https://www.bunniestudios.com/blog/?p=5127

And a ARM CortexM0 is about 12k gates, it's hard to get much simpler than that.


> I mean, everything is propeitary then.

Yeah, that's precisely the problem. Though you're right, the M0 at least does fit what I'm talking about pretty well, in-order, no-MMU, etc.


So what, you just don't code for hardware at all?


If I'm going to use technology with several orders of magnitude less power, then I'd at least like it to be open, is all I'm saying.


I agree, and is much of what I try to design by computer design (although there is ways to improve the performance (in different ways than what is common now; some of it is strange and may have some unusual (but still simple) features), and there is other improvements from the old designs too, while still having a lot of the features of the older designs). It doesn't use superscalar, out of order execution, automatic caching (there is a cache but it must be programmed explicitly, and otherwise it does nothing), and all of that mess.


You write a lot of Lisp don't you?


Actually, no I don't write Lisp so much.


Just the other day I was looking for a good NES IDE for my son who's interested in learning assembly and who has maxed out his PICO-8 skills. I think this would be a good way for kids to learn some niche skills like assembly that are still going to be needed in some careers but aren't as widespread as JavaScript or Python.


I feel like there's a lot of value in the whole "knowing how the sausage is actually made" thing. You'll still take collections and the garbage collector for granted 95% of the time, like everyone else, but at least you will have some sense what's going on under the hood if you've had to implement pieces of it manually somewhere along the line— and an actual working implementation, not just a toy one for some undergrad class.


Having done no CS in school and jumping right into python and JS, learning how the sausage was made was immensely satisfying. I wrote a CHIP-8 emulator in Python and then a Game Boy emulator in Rust. None of those skills have been practically useful but were very educational.


>None of those skills have been practically useful

Honestly you never know when something you are familiar with becomes important later.

Something that was important to get it done may not be as important in later tasks. (My Operating Systems Class at university was greatly useful in my first job, not as much after) My dabbling in JS got me job programming timecard apps for blackberries and changed my work trajectory.

This field changes so fast and you can't learn everything, so learning things you enjoy and help you get what you are working on now.

That and data-structures and databases, you can never know enough about both.


Confidence is immensely useful


Unrelated question: what resources did you use to write your CHIP-8 emulator? I've also been wanting to write one in Python for educational purposes, but haven't found any great resources yet in Python. Granted there are a few in C that I could try to translate over, but I'm curious to know what you used.


I looked at the Wikipedia page and a couple PDFs from Google front page.

I stole a collection of games from someone else's project to use for testing.

My goal was to get in the door so I picked a language I knew well and set some constraints:

1. Doesn't have to be fast. Just has to run.

2. Write opcodes as pure functions, passing in an array of memory and returning a new array of memory. This made it easy to test and debug. But also made it super slow.

3. DO NOT look at someone else's code. This forced me down a way slower path where I learned a whole lot more than I would have if I just reimplemented others' work.


Fully agreed. Currently doing web dev as a daily job, and even most of my personal projects are all fairly high-level. However, I cannot under-appreciate how useful and eye-opening building my own CPU pipeline and learning assembly was back in college. Just the fact of understanding how it ALL works under the hood (even if it is just a simplified version of it) made me feel amazing and gave me a lot of insights I wouldn't have gotten otherwise.


It's a platform a good bit older than the NES, but you might have some fun with http://octo-ide.com


I found https://8bitworkshop.com which seems to be just what we're looking for, but since it's a web app and we don't have internet at home, it's going to take some effort to get it working for him.


Curiosity got me - why don't you have internet at home?


It's a huge time sink. We've gotten more done at home in the past 6 months since getting rid of TV and internet than we have in the past 6 years. And our family life is significantly more connected and alive than when we had TV and internet.

I heartily recommend everyone try it for a couple months. No TV, no mobile data plan, no home internet, no radio. It's amazingly refreshing.

Edit: another reason is that almost all social media is geared towards making you addicted to it and encourages hopelessness, and when you get rid of social media, not just deleting accounts but even to stop consuming it regularly, your attitude will just change for the better on a daily basis. Waking up will feel refreshing, not burdensome, like today is a new opportunity, not a new day of drudgery. Well, at least it will play a big part in this shift.


so how are you, uh, posting on the internet right now?


I'm a software consultant, but I can do most of my work offline. When I need internet for my work, I go to the local library during ordinary work hours (9-5pm) and use their free wifi. Most documentation that I need is available offline in Dash (or Zeal for Windows) and I can download that and whatever else I need while at the library. It's a lot easier than I thought it would be.


Consider getting into their Friends of the Library program, or whatever they call it. That helps fund them beyond what they get from taxes.

https://en.wikipedia.org/wiki/Friends_of_Libraries


I think they're surviving well enough.

What I am interested in, though, are the public library board meetings that they hold monthly, open to the public. I can't imagine what kind of things they discuss, and I'm thinking of attending one just to find out.


This seems like a good question to ask one of the librarians.


What kind of consulting do you do, if I may ask? I assume something unrelated to web applications? Working on a web app with a thousand dependencies, even if working on the backend, would be terribly frustrating and almost impossible, I believe.


Mostly React.js and Node.js, and I use NPM to install dependencies while I'm at the internet, and they still work when I go offline since they're downloaded.

The hard part is dealing with live APIs, but fortunately these can be recorded while online and replayed when offline, which seems like a good practice anyway during development.


> The hard part is dealing with live APIs, but fortunately these can be recorded while online and replayed when offline, which seems like a good practice anyway during development.

Cool. How do you do this?


Just record the important parts of an HTTP request using your server software, such as Node.js, save them to disk, and replay them on matching subsequent requests when offline mode is enabled. Or use a high level library that already does this; I'm looking into yakbak[0x00].

[0x00] https://github.com/flickr/yakbak


This reminds me of the days when I downloaded webpages to a palmpilot...for “offline” use


This guy has been streaming development of a NES game: https://www.twitch.tv/zorchenhimer




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: