It is currently 2018-08-28 19:19



Reply to topic  [ 9 posts ] 
Thanks for your inspiring article, Byuu 
Author Message

Joined: 2017-07-05 19:20
Posts: 6
I was actually just browsing the site to come to the forums to complain about an issue with certain roms (Battletoads on NES / Truxton on MD - nvm I'll make a different thread on this later) but after reading that article Byuu posted about experimentation, I had to share and hopefully inspire someone else.

I first became interested in making games when I was a child; awestruck with my first console, the Sega Genesis. Like you, Byuu, it wasn't enough for me to just play the game, I wanted to know how they were made and wanted to make my own. As soon as the family got our first computer I started to teach myself how to make games with GameMaker 6 in my pre-teen years. I taught myself GML and wrote a couple of 2D-platformer engines but never a complete game. I got side tracked. My brother introduced me to an online action game called Gunz, which was absolutely infested by hackers. The hackers would make the game unplayable but all I wanted to know was how they did it. I started to teach myself C and reverse engineering with tools like OllyDBG and IDA Pro. A couple of cool people in the community took me under their wing and I actually wrote my own hacks thanks to their tutoring and support. I didn't stick with the hacking scene for too long because of the elitism and toxicity in the communities of which I was part of. With the new understanding I had about computers I went back to writing games. At first the quality of my games dropped drastically from when I was using GameMaker. I went from making games with sprites and sounds in GameMaker to making terminal based ASCII games in C using PDCurses. Even after I learned how to add graphics and sounds to my projects it took a long time to be able to replace the functionality GameMaker offered. But even so, I was challenging myself and I was learning so much in doing so. Every one of my crappy games were "pure" in a weird way. I knew everything that went into them and was proud I taught myself how to make them.

Lately I've been challenging myself to complete a game for sale! I'm working on a vertical scrolling arcade style shmup, and I'm having to explore things I've never tried before. Anyone reading this thread, if you have an inspiring story to share about how you achieved and grew in CS, please share it! Also let us know how you are exploring presently!


2018-01-23 01:32
Profile
User avatar

Joined: 2014-09-25 13:57
Posts: 2061
Location: Australia
For what it's worth, I submitted the article to Lobsters, and there were a few comments there, too.

_________________
Maintainer of the unofficial git repository for higan.

The ending of the words is ALMSIVI.


2018-01-23 11:33
Profile
User avatar

Joined: 2017-11-25 16:43
Posts: 662
Crustaceans are into emulation?


2018-01-23 11:59
Profile
User avatar

Joined: 2014-09-25 13:52
Posts: 8165
Screwtape wrote:
For what it's worth, I submitted the article to Lobsters, and there were a few comments there, too.


Since I lack an account there:

Quote:
One thing I’d like to ask the author: do you need “to lead instead of follow” in order to want to learn something? Or was that just a rhetorical device?


It was contextual. Same for "to create instead of build."

Nothing against builders or followers. But I was aiming against the usual, "don't do that!" response I see to everyone trying new things. Specifically the recent article doing the rounds about running a website in C++ (spoiler alert: aside from this forum, my site runs on C++ code.)

I was saying, do you want to follow others' advice, or try something new and learn for yourself? Maybe C++ ends up going badly for you, in which case you learn why, and can apply those lessons going forward, instead of just parroting others' advice not to even try. Maybe it goes well for you, in which case you have something exciting and potentially innovative on your hands.

I was saying, do you want to just incrementally build websites based on what everyone else has done? Eg maintain yet another Wordpress blog, maybe monkey patch in a client feature request or two? To copy everyone else and try to deploy whatever JS framework is handy this week? Or would you rather work on a framework and understand your craft on a more fundamental level?

My own experiences are that the deeper I go into computer science, the more sheer fun I have. The most exciting time I can remember programming was working on a language of my own. It didn't bear fruit, but what I learned transformed my GUI toolkit (among other things) into something far more robust. And the more I work on these things, the more I recognize how unbelievably bloated every last thing in computer science has become. It's refreshing to shed away decades of cruft and just start fresh. To see how much you can do with 1/20th the code. Eg I just wrote a fancy cross-platform CRUD application with lots of input validation in 400 lines ... of C++ code! I can parse PNG images in 16KiB of code from two headers ... no need for 400KiB of zlib and 300KiB of libpng. I have a functional IPv4+6 web server in 200 lines of code. A high-quality audio IIR filter in 3.8KiB of code. A delta-patching format you can describe in full on a postcard. And every time I hear, "but you could have just used $library!" And yeah, I could have. And I would have added lots of dependencies making the code harder to build, and I will have learned nothing meaningful in the process. No thank you.

I understand there are coders that just wanna get paid. Surely, the least amount of work is the easiest way to do that. But I was appealing to people who enjoy programming as an art: don't let other people convince you to be a worker bee when you could have so much more fun experimenting. One thing is for certain: nobody's ever going to remember the 9-5 office worker who maintained blog.generic-company.com. But they sure will remember Daniel Bernstein, or John Carmack, or Bjarne Stroustrup.

I also understand it's not a good idea to deploy your own homegrown Caeser cipher out at your job at Wells Fargo. I'm talking about applications where safety and job security aren't on the line here. Someone has to learn how to write crypto libraries. If we all leave it to the OpenSSL guys then we get a software monoculture that screws us all when, surprise!, they're not perfect either and now everyone has to deal with Heartbleed.

But, look how fast my site loads. You click that article link and the page is there in 20 milliseconds. Now go try a web 3.0 darling like Slack, and you're sitting there twiddling your thumbs for 20 seconds while the chat loads. Is my C++ on the web approach really worse than that?

_________________
" I know not where I am or what will be.
 The stillness sets upon a restless wake.
 Vast clouds over the landscape reaching onward.
 I'm defeated at the thought of what you see. "


2018-01-23 12:53
Profile
User avatar

Joined: 2014-09-27 09:31
Posts: 622
byuu wrote:

My own experiences are that the deeper I go into computer science, the more sheer fun I have.... It's refreshing to shed away decades of cruft and just start fresh. To see how much you can do with 1/20th the code. Eg I just wrote a fancy cross-platform CRUD application with lots of input validation in 400 lines ... of C++ code! I can parse PNG images in 16KiB of code from two headers ... no need for 400KiB of zlib and 300KiB of libpng.


I'm having a similar experience in electrical engineering. Granted, I've only just begun to scratch the surface with where I'm at, but the power one can wield with this knowledge makes me wish I had majored in it back in college. I went from barely being able to solder a wire to a large terminal, to designing and soldering my own surface-mount PCBs. It may be nerdy, but I find it fascinating. It just figures I couldn't find something I really wanted to learn until my mid 40s. ><


2018-01-23 13:28
Profile
User avatar

Joined: 2014-10-29 20:56
Posts: 79
I also would like to thank byuu for all his work on higan and SNES preservation and for his articles and unorthodox views, but I never find the time or words to properly do so.

@byuu: this might be too personal and it's OK if you don't want to answer, but how's your job, programming-wise? Do you have the freedom to choose programming languages and software or do you just go along with what your boss chooses? Is it mildly interesting or just boring business stuff? I understand your article talks about programming as an art, but since one's gotta pay the bills, I was wondering what's your opinion on this. I don't wanna turn into a hot dog. :(

Also, would it be too rude if I pointed out you spelled "Caeser" instead of "Caesar" twice (here and on Twitter)?


2018-01-24 02:07
Profile
User avatar

Joined: 2014-09-25 13:52
Posts: 8165
> how's your job, programming-wise?

Boring business stuff. But I gross $5700 a month there, so oh well.

> Also, would it be too rude if I pointed out you spelled "Caeser" instead of "Caesar" twice

I guess not. Little late if it were though :P

_________________
" I know not where I am or what will be.
 The stillness sets upon a restless wake.
 Vast clouds over the landscape reaching onward.
 I'm defeated at the thought of what you see. "


2018-01-24 02:52
Profile
User avatar

Joined: 2014-09-27 09:47
Posts: 489
byuu wrote:
> Also, would it be too rude if I pointed out you spelled "Caeser" instead of "Caesar" twice

I guess not. Little late if it were though :P



2018-01-28 00:45
Profile
User avatar

Joined: 2014-10-29 21:14
Posts: 659
While reading this article, I was reminded that rolling your own crypto is an easy way to make mistakes and break your security. So (not really a cryptographer) I spent 30-60 minutes looking at nall's crypto/HTTP code. Apparently byuu's integer library doesn't have any *obvious* timing attacks, since all bit-shifts are constant-length, and he picked constant-time ciphers and elliptic curve multiplication algorithms. Integer * is probably constant-time too.

(I haven't checked for implementation errors.)

_________________
VIEW UNREAD THREADS: Click "View Active Topics". Unread threads are in red. The little arrow on the left goes to "first unread post".


2018-01-28 02:41
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 9 posts ] 

Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum