Saturday, January 25, 2014

Why to Start Programming with Homebrew

When I was in High School, I decided to learn to program for the Nintendo DS.  I absolutely loved the games on the system, and thought it would be awesome to be able to create my own games on it.  A little bit of research at the time however showed that professional development on it was out of the question.  Thousands of dollars for a development kit?  I needed to buy an office building?  There was no way I could afford that, but I wanted to learn to program.

What about developing for the PC?  At the time, finding a good, cheap, and well documented PC game engine to learn was incredibly tough.  The tools tended to be very obscure, or super expensive, or limiting with what I could do.  I picked up Game Maker for a little while (which I still believe is a great starting tool), but eventually reached a point where I couldn't do much more with it.

I went back to looking at video game consoles and came across this "new" thing called homebrew.  Researching more into it, I realized that this would allow me to make games for the Nintendo DS, Gamecube, the Sony PSP, and more later on.  This seemed incredible, but there was one big thing: I had to "hack" my systems to do so.  Now as someone brand new to the homebrew scene, that worried me a bit at the time.  Hacking? Wasn't that illegal?  Couldn't I get into trouble with that?  Is this a good way to go about learning to code?

To start tackling all of this, I began looking into what exactly I could do with it and whether it was worth even starting.  The tools I was using (PAlib at the time) were fairly well documented and included tons of examples.  Within a few days I had a simple demo up and running and had begun programming a game.  This prompted me to go through and actually read about what I was using and the legalities with it.

Within a few months, I had discovered that homebrew really doesn't require anything illegal (usually, I'll explain more on that later though).  While yes, you do have to "hack" the system, there isn't actually wrong with doing so to your own hardware.  It's similar to if you got locked out of your car and had to break back in, it's your car, you own it.  If that's the case though, why do people get so up and arms about it sometimes?  It's because of what you can do with it.

To elaborate, let's image that you get locked out of your car and then break back in.  Now imagine that you drive the car through a red light and get pulled over.  Is the problem that you broke into your car?  No, it's what you did with it.  Homebrew is very similar.  If you "hack" your device to play music you own on it, then that's perfectly fine.  But if you create an application that plays music you don't own, then that's obviously not okay.  These days, homebrew seems to have a very bad rap for what it is: A way for anyone to learn to program.

The Oculus Rift is another example of something that was
started as a homebrew project and grew to something more!
If you don't trust this, just read up on the history of companies such as Electronic Arts.  EA was founded by two guys who did nothing more than tinker with homebrew tools of their own.  Homebrew has been around since computers were first invented.  It provides a cheap way to program on things you already own.  It's nothing more than making something of your own at home, rather than as a business.  If that's the case though, why does homebrew have such a bad rap?

I think a huge part of why homebrew has become viewed in this way is due to what people have begun to use it for, especially in recent years.  A big offender of this is software piracy, as most of these tools easily lead to it, mainly due to the sheer nature of these tools.  It's not the fault of the tools' developers, it's just how these things work, and there's only so much one person (or even a group) can do to prevent piracy.

Another huge issue however is only showing up more recently, and that's the creation of tools using code by the companies make these systems.  The PS3 saw this for a while, where homebrew developers would use tools owned by Sony, which was obviously not allowed.  In some cases, making the tools is difficult, which can lead to an impassible barrier for making homebrew.

With all of that being said, is homebrew something worth learning?  Absolutely!  It's a cheap entry point for coding and allows you to learn a lot more than you normally would when coding for a PC.  A good starting point for this actually is the Nintendo Wii.  The system, while old hardware wise, is easy to get started with, and is a great entry point for learning how to work with systems that have these huge limitations.  When you develop on a PC, you usually have a near-unlimited amount of resources for basic games.  But when you work with something like the Nintendo Wii, or especially the Nintendo DS, you have to be very careful about what resources you use.  A computer may have on average two gigabytes of ram, but the Nintendo DS?  You're going to be using at most four megabytes of ram, a fraction of a PC.

These limitations, while tough to overcome, will ultimately help make you a better coder.  You learn how to use faster sorting methods, so as not to slow down the CPU.  You learn about memory management, and why it's important to release resources when you no longer need them.  You also have to learn how to make most of the high-level tools you need.  On top of all that though, the hardware to get into this is very cheap usually, and you may have most of it lying around your house right now.  Just be cautious of what you make, and you'll be fine!

Tuesday, January 21, 2014

The Github Name Game

Many people ask me what I think is the most helpful thing to do for anyone pursuing a degree in computer science.  The one thing I always say is to do projects outside of class, and I think it's obvious why.  It's one thing to learn something in a class, it's another to apply it to a project.  I've been lucky and managed a few small ideas that have (mostly) come to fruition, but I know it's tough to find a project every time.

Thus, I'd like to propose a game: The Github Name Game.  The idea is simple: Create a Github account, start a repository, and based on their random project name generator, make something based around it!  One of the more recent ones I saw was duck-batman, which I thought was pretty funny, and would be trying out if I didn't have my senior project and other small projects to focus on at the moment.

So let's get a small compo going with this!  Create a project in the 2 weeks, and post it in a comment below (with a binary file too if you can please!).  I'll post a poll, and we'll pick a winner based on that!  If anyone has prizes to donate, feel free to send me an email and we'll organize prizes to those who win, but even if there's no prizes, do it for your resume!  Just because there's nothing to win doesn't mean it can't be for fun!

Sunday, January 19, 2014

How Google is Replacing Windows (For me)

A few months ago I was finally due for a phone upgrade and decided to make the big jump from an Apple iPhone to an Android Phone (the Galaxy S4).  What I thought was going to be a simple switch ended up being a full switch to Google's platforms I've realized recently.  Not only do I have a phone with Google's OS, I now have a tablet by Google, the Chromecast by Google, and of course, tons of applications that I use by Google (just look at this blog!)  In fact, it's only been today that I've realized just how many products by Google I use.  Sending an email to another student?  Just so happens my school email is supplied through Google.  I want to watch a TV show with breakfast?  Chromecast is going to be the most convenient way to do so.  My laptop even has the equivalent of a start button from Google on it now.

While I'm using Windows 8, there's still a "Start button" thanks to Google.
The funny thing is, I didn't do any of this on purpose.  I just happened to end up getting all of these products from Google because they fit my needs exactly.  Why do I use Google Drive more often than Dropbox?  Because I'm usually on my email to begin with, and it's a click away.  Why did I switch to Android from an iPhone?  Because I wanted to be able to customize my phone more so.  At first, many of these little things seemed almost pointless, but as time has gone on, I've found that Google manages to just do things right.  When I need to bring a PowerPoint to class, rather than putting it on a USB flash drive, I can just upload it to my Google Drive, and then download it in class with a shortened URL from Google.  No big hassle, no issues with the URLs' changing, it's simple and quick!

Dropbox I'm slowly beginning to use more (as evident in the picture above), but I wonder if I'll ever make the full jump.  While Google does collect a lot more data, I don't really mind if it's advertising things I enjoy.  Even so, Adblock Plus manages to hide the majority of ads, so I don't really even have to worry about that too much.

With all of that said, there's still a few things I won't switch to Google for.  A big one is still of course my operating system (though they are pushing that very quickly).  There are too many programs I prefer to use on Windows than any others (Even Linux sadly).  On top of that, I still prefer Facebook over Google+ (Though that as well is slowly changing too).  Even for document editing, I still prefer Microsoft Office over Google Docs, though I don't think those are quite the right comparison.

While Google is slowly dominating my life, they still have a ways to go before I'd be willing to jump ship for quite a few products.  Maybe over the next year it will happen, but I'm still skeptical until I see it happening.

Monday, January 13, 2014

College and Food

For those interested in what I recommend, please scroll down to the bottom.
This is a post I'm pulling from my Tumblr, now with a few updates!  It was one of my first posts, and was about something I think most people enjoy: Food.
Now that my college career is slowly coming to a close (and by slowly I of course mean there is a year left), I feel like I’m in a pretty good place to give tips about ways to prepare for college.  One big thing that I wish I had thought more about was cooking. I’m not talking about simple things (Like sandwich combinations, or how to cook a simple piece of chicken).  I’m talking more about things like how to make mint chocolate chip cookies, or tacos with various spices, or the amazing breakfast of cinnamon honey waffles.

Friday, January 10, 2014

Shape the World

I've contemplated starting a blog for quite a while now, and with 2014 starting off and my senior year getting closer to its end, I figured now is as good of a time as ever to start this.  The big question I've had is this though: What do I want to accomplish with my blog?

While I love to code and am a huge tech geek, I also have a wide variety of other areas I'm interested in.  I do ballroom dance, I like to draw, I am a huge music nerd.  I don't want just another "techy blog", I want something more!  At the same time, I want something organized, something inspirational to others, something that people can go to and get help from.  That's why I'm starting this blog as Shape the World.

Coding is a huge thing I like to do, but there are
other things on that list too!
The goal of this blog is to give me a spot to talk about the things I do, how I went about them, or why I think they're important.  While I'm sure this has been done before, I feel like I can bring new experiences to the table due to the wide variety of things I do, and the ways I go about doing them as well.  Maybe some of them are novel, maybe not, but there's only one way to find out, so I'm jumping in head first!

I of course would love to have feedback on people's thoughts with what I do as well as what more I can do.  I've got many ideas that I'd like to make a reality, and I hope this blog will give me a means to do so one day.  For now though, I'm just going to work on Shaping the World, one blog post at a time.