Summer resolutions

Post date: Dec 26, 2013 9:3:33 PM

It's that time again: snow is falling, extremities are freezing, and people are creating new goals for the new year.

I've never made any new years' resolutions. I realize that, if I do make a resolution, I'm likely to break it in a few days, and then give up. However, I often make goals for summer vacation. It's from those goals that I learned the need to try and try again, and to learn from the process instead of merely working for the result.

For four summers in a row, my summer project's been "create an emulator". When I was young, I learned about virtual machines and was amazed: a whole computer inside a computer! My fascination led me to learn about emulators, and so I resolved to write - or at least, port - an emulator.

In the first summer, of course, I didn't succeed - I tried re-compiling TiLem, the TI-84 emulator, using Adobe Alchemy, but even with code that someone already wrote, and with a compiler already setup, I couldn't get it to run. However, in the process, I learned much about the Flash Player, and this helped me when I decided to try creating some applications with Adobe Flash.

In the second summer, I learned about JSSpeccy and wanted to see if I can modify it to work for other arcade machines. Again, I didn't succeed, but the experience taught me about how computer hardware worked from the processor's point of view - I at least had satisfied my goal of understanding how emulators work.

In the third summer, I re-visited both projects of my past summers. Then, I put them away, after judging that the time is not yet right - a bit more learning.

Finally, in the past summer, I tried in earnest to develop an emulator. I started with JSSpeccy, and modified it into a half-working emulator for the Bally Astrocade. My still-limited skills weren't enough for me to finish it, but I had succeeded in my goal, and in the process learned to write simple assembly code for the Z80.

As one can observe from the summer projects, my project ideas, although lofty and sometimes unachievable, leads me to research more about the subject, and so I steadily improve. And though I may give up, I would always return the next year with more experience.

And so, this winter, I'm making a goal as well. With code that @winocm already wrote, and with a compiler already setup, I'm going to try to get @winocm's XNU kernel port running. It'll just be like old times: likely I will not succeed this winter, but I'm already learning about the internals of the Mac OS X kernel and the ARM processor: knowledge that will likely help me out in future projects.

(Side note: have you noticed how many aliases Adobe Alchemy's had? It changed its name from FlaCC to Alchemy, then to FlasCC, and now to CrossBridge.)