Stop Wasting My Time

I haven’t written in a while here, but there’s nothing like a good, old-fashioned rant to get back into the swing of things.

I recently saw this article pop up on my Facebook feed. I have to say, it was very disappointing to read.

I mean, seriously? You’re going to waste my time with this bullshit? There are legitimate things to criticize about Christianity; this is not one of those. According to the fevered logic of the article, the fact that the Bible went through the process of translation, the Bible is made up. That’s basically what it comes down to.

To explain more thoroughly, researchers recently found a draft of a translation of some of the apocryphal books in English for the King James Bible. That’s it. So apparently the fact that God didn’t come down and tell scholars how to translate it into English means that the Bible isn’t the divine word of God. I guess it was written by a committee of Jews or something?

The hivemind has taken over at this point: every half-witted Internet denizen and his dog want to take jabs at religion, because it’s the hip thing to do. But this is just sad. This smells of a writer with an IQ of 90 and a looming deadline. This is like learning that Obama isn’t legally allowed to run for a third term in the 2016 election, then turning around and questioning why he was ever allowed to run for office in the first place in that case.

It’s a non-sequitur that is both hilarious and sad, and really says something about the state of the media and information dispersal in this day and age.

From Light

I haven’t posted in a while, in part because I’ve been busy with a lot of things. Maybe I’ll make posts about some of those other things at one point, but right now I just want to talk about From Light.

Logo for the game.

From Light is a game that I have had the pleasure and honor to help develop. It was originally created as a class project by two other students, but when it showed promise they decided to develop it further. Our team has now grown to 10 people, all (save one) students at USC.

The game is a 2D puzzle platformer based on long-exposure photography (holy hell have I said that line a lot). Basically, you can etch out light trails onto film using the stars in the sky, then jump on those trails to navigate the levels.

I mention that I’ve said the above line a lot because the game got accepted into the PAX 10 for PAX 2015, and I went up to Seattle last weekend with 3 other teammates to show the game off at the four-day gaming convention. This, you may have gathered, is completely and mindbogglingly awesome. I get to work on a game that is recognized and validated by real-world people! And truly, the reception of PAX was way more than I ever would have expected. People frickin’ loved the game!

 PAX 10 Logo  Photo of us at the booth.

And at PAX one of the things I heard again and again was that taking a game to completion, to the point where it could be shipped and sold as an actual game (y’know, for money), is an invaluable experience. Not only do you get a sellable game and a fantastic line on your resume, you also get all the experience involved in taking a game from 80% to 100%, and all the non-development business stuff involved in getting your game out to consumers. Needless to say, this convinced me that we should take From Light to completion. Before, I had been hesitant because as students it was unlikely we could put in the time to finish it fully. However, I am now willing to work harder than I have ever worked before to finish this game.

I’ll continue to post either here or on Gamasutra about development (both technical and non-technical posts), so make sure to look out for that.

In the meantime, if it strikes your fancy please “like” the game on Facebook, or follow us on Twitter, or just download the game from our website.

Introduction to Programming

Taking an introductory programming course this semester has been an interesting experience. Since I grasp the course material well, I’ve spent some time helping others with their work. As anyone who has taught math can attest, teaching even basic concepts requires you to understand the material far better than the student must. When it comes to programming, helping people is even more difficult because you can’t just tell them how to do it. You need to let them to figure it out on their own, otherwise they won’t have learned anything.

But leading someone along without explicitly telling them anything is really, REALLY difficult. Our professor is a master at this, and I respect him deeply because of it. A student will ask a question, and the professor will reply with an oblique statement that doesn’t seem to address the student’s question at all. Yet soon enough the student says “Oh! I get it!” and goes on their merry way. I try as hard as possible to emulate this method when I help those who are struggling, but it is nigh impossible to strike the correct balance. Help them too much, and they don’t learn. Help them too little, and they despair or begin to resent programming. And as much as I don’t like seeing it happen, many of the people in the class have come to resent programming.

This is as sad as a student resenting literature because of a bad English class experience, or resenting math because of a bad math teacher. Yet I don’t fully understand how to prevent it. If there was a good, standardized methodology for teaching difficult concepts without causing students to resent the field, I feel a lot of the problems in society today could be solved. Maybe that is just wishful thinking, though.

The second interesting observation from taking this class has come from observing a peer. The first language she learned was Python, and learning C++ this semester has caused some distress. There were many lamentations along the lines of “why is the computer so dumb?!” Of course, I found this hilarious because it mirrors a situation in the novel A Fire Upon the Deep. As the protagonists head towards the bottom of the Beyond, much of their advanced computer technology stops working, and they are forced to adopt more primitive methods. Needless to say, the characters who grew up with the advanced technology are indignant that they are forced to use such primitive technologies as a keyboard. Meanwhile, the character who grew up using primitive technology merely smiles.

In my mind, this helps clear up the argument of whether new students to the art of programming should be started on a high-level language, or a low-level language. Until such time as low-level programming is never needed except in rare circumstances, students should be started at a medium-to-low level. For example, it is easier to step up to Python from Java than it is to step down. I was originally of the mind that new students should start at a high-level as to learn common computing concepts without getting bogged down in obtuse technicalities and syntax, but getting a first-hand view of the results of such an approach has changed my mind.

Advanced Game Projects

In the USC Games program (which spans a number of majors and schools), we have annual process that falls under the moniker of Advanced Game Projects, or AGPs. This process involves a student-assembled and student-lead team building a game in a roughly 10 month development cycle. I’m excited that this process exists.

Bloom, an AGP from a previous year.

It starts with a pitch process in the Spring semester, currently consisting of three phases: a paper proposal, submission of a prototype, and finally a live pitch sessions with a board of judges. Games that pass successfully through the pitch process get slated for development the following year. A student lead (who presumably came up with the idea, assembled a small team for the pitch, and is generally the main driver behind the project) begins to recruit a large team and pound out pre-production design over the Summer.

In the Fall, most people on an AGP team register for the associated class, which gives time to meet and talk with mentors from the industry about the management problems that have cropped up. Because working on an AGP is a requirement of my major, there is always a pool of student talent for teams to pick up. This results in AGP teams that can range anywhere from 20 to 40 people. Needless to say, this is a huge undertaking and an incredible responsibility for the team lead.

However, by Demo Day in the Spring, the team will have (hopefully) created a relatively well-polished game, albeit generally small in scope. The games are displayed at Demo Day, and not only do students attend and sample the various AGPs, but industry professionals are present as well. So AGPs are a great opportunity for networking with professionals and finding mentors, as well as landing a big, fat, good-looking game in your portfolio.

I have an ambition to lead an AGP in my sophomore or junior year, but in the mean time I’ve hopped on board with an AGP that plans to pitch later this Spring. Being present from the start of the process and being able to talk with the team lead gives great insight. Even if the AGP doesn’t make it past the pitching process, I’ve learned a lot about do’s and dont’s of assembling and running a team, as well as formulating and developing an idea into a pitchable game.

The idea we are pitching is for a humorous single-player side-scrolling multi-character action-adventure role-playing hack-and-slash, or more basically, Castle Crashers meets Dawn of War 2. Or something.

A screenshot from our latest prototype.

The eternal struggle is a combination of scope and pushing the game in a direction that is likely to pass the pitch process. You see, certain types of games tend to be favored; the faculty making the decision explicitly point this out. Games that focus on pushing the boundaries of technology, implement rare or radical gameplay concepts, are socially progressive, or take risks and target uncommon platforms are generally selected over games that try to put a small spin on a well-worn concept, or aim to execute a tried-and-true concept especially well.

This difficulty is compounded by an ultimate lack of direction with our current concept (at least in my mind). The takeaway is that a game concept should be centralized around a single, appealing idea. Hearing that concept should instantly spark at vivid image in your mind, and should either inspire you to work on the project or play the game. This is why iterating on an existing idea is less appealing. In addition, if you find yourself searching for material to fill out your game with, the core concept probably isn’t strong enough. The feel or driving mechanic (whatever makes your game sound good in the first place) should spawn a myriad of possible directions. Thinking hard about what to cut out of your idea is a good position to be in; thinking hard about what would be a good thing to put in is not.

Maybe this seems counter-intuitive, or vague and unhelpful. Let me give you an example by explaining one of the concepts that I might potentially develop into a pitchable AGP.

I actually described this in a previous post. Basically, the player struggles to keep their third world country afloat, and build up. I like to describe it as Banished crossed with Civilization. The player experience goal is something along the lines of “after struggling to balance a myriad of factors based on real-life, players gain a new appreciation for the difficulties faced by distant and otherwise foreign places.”

As you can see, I would be approaching the game from a social-awareness / global education standpoint. Like KSP teaches players physics, this game would teach players the difficulties of third-world politics. Of course, the game is also a technical and design challenge. Technically, building a simulation with enough fidelity that also performs well would be hard. Creating challenging AI opponents would also be interesting. Design-wise, the game needs a fun yet realistic interplay of economics, politics, and sociology, which is a design direction I doubt many AGPs have pursued. This sort of novelty would be appealing to the pitch process, I imagine.

However, my plans continue to evolve as I watch the process unfold. If all goes according to plan, I’ll pitch next year.

Why The Next 5 Years Are Going To Be Awesome (In Space)

To close out 2014, I’d like to talk about why I’m very excited for the next 5 years in space travel.

Dawn renderingDawn being built

Early next year we’ll get to see two extremely cool missions returning pictures: the Dawn spacecraft, and New Horizons. In April 2015, Dawn will be the first spacecraft to enter orbit around body that isn’t the Earth or the Sun, then exit orbit and enter orbit around another body. We’ll get to see high-res photos of Ceres; expect a lot of articles about old theories being overturned by the data Dawn returns.

New Horizons renderingNew Horizons being built

Second, New Horizons will be performing a fly-by of Pluto in July 2015. This will be our first good look at a trans-Neptunian dwarf planet. Observations could provide a lot of insight of the Kuiper belt, as well as other structures like the (potential) inner Oort cloud. Between Dawn and New Horizons, we’ll be getting our first close-up look at dwarf planets.

Trans-Neptunian dwarf planets

There are other fascinating missions that are either already launched, or on schedule to be launched. ExoMars is a joint mission between the ESA and Roscosmos with the single purpose of searching for bio-signatures (past or present) on Mars. This is exciting because all current NASA missions very pointedly don’t have this scientific objective. The last NASA mission to search for bio-signatures was the Viking landers in the late 1970’s. I’m a little concerned that Russia will have trouble with their end of the mission; after all, the Russians don’t have the best track record when it comes to Mars.

Hayabusa 2 launchHayabusa 2 rendering

Also exciting and potentially more fruitful is Hayabusa 2, launched earlier this fall. Hayabusa 2 is interesting because they plan to shoot an asteroid with a space gun. Leave it to the Japanese to put cannons on their spaceships (technically the Russians did it first, but they didn’t actually shoot at something). After blowing a crater in asteroid 1999 JU3, Hayabusa 2 will float down and take samples from the newly exposed subsurface. The mission will finally return the samples to Earth in December 2020.

A bit closer to home is another interesting mission: the Chinese plan to launch a Moon sample return mission in 2017. The mission architecture is interesting; unlike early sample return missions, the lander will rendezvous in lunar orbit with a return craft. I might be wrong about this, but I think this will be the first automated rendezvous and docking around a body that isn’t Earth. I think it’s great that China is making leaps and bounds in its space program; earlier this year, they launched a test mission for the upcoming sample return mission and took a German payload along for a ride. The more the merrier, I say!

Speaking of which, the competition for the Google lunar X-prize is going to draw to a close in a few years. The deadline was recently extended to the end of 2016, and at least one team already has a flight reserved in 2015. There are only a few teams still seriously in the running, but if even two of them actually get off the ground, the Moon could become a very crowded place indeed.

One of teams at the forefront, Astrobotic, has booked a launch with SpaceX on a Falcon 9. And SpaceX really has come to prominence lately. Expect a lot more out of them in the next few years. For example, in 6 days they are going to attempt to land the first stage of a Falcon 9 on a barge for the first time. Although this has a pretty low chance of working (Musk estimates 50%, so who knows how low it actually is), it is a huge step towards their long-term goal of rapidly reusable rockets. In fact, if they do get a barge landing to succeed, we might even get to see a used stage re-fly as early as 2015!

Rendering of the Dragon V2

And on that front, SpaceX will be finishing up the Dragon V2 by 2016 or 2017. Besides launch abort tests and propulsive landing tests, we will also no doubt be seeing manned commercial launches in a few years. Remember the excitement when SpaceX became the first company to dock a spacecraft with the ISS? The celebration will be ten-fold when SpaceX becomes the first company to put a human in orbit.

But Spacex will also perform the maiden launch of the Falcon Heavy, and facilitate ground-breaking tests for both VASIMIR engines (if funding for that doesn’t run out) and an inflatable habitat on the ISS.

We might even see more action from Bigelow Aerospace. They’ve manifested a number of flights from SpaceX, presumably to start launching components for a commercial space station. Now that cheaper orbital crew transportation is just a few years away, Bigelow is ramping up production again; hundreds of new positions have opened open at Bigelow.

Finally, the wildcard. Will the SLS actually launch, or will it get cancelled before its first flight due to a change of presidency or loss of support in Congress? If it does launch, it will be spectacular. Unfortunately, I pretty much doubt any of the potential missions for the SLS (Europa Clipper, ATLAST, or Uranus orbiter) will get funded, so it is almost guaranteed that the SLS gets shelved even if does fly in 2018. So there’s that to look forward to.

The Falcon Heavy and SLS preparing for launch

Learning a Foreign Language

I have had the benefit of taking Japanese 1 this semester, and it is quite a humbling experience. Learning a language which has no romantic roots — a truly foreign language — lends a certain perspective that learning French or Latin does not.

However, it also seems to me that the teaching method is geared towards a very specific type of learning style. The class starts out by teaching a number of phrases which the students are to memorize, and meanwhile students also begin to learn one of the writing systems. It is not until a few weeks in that students finally learn some grammar (i.e. the thing that actually determines whether or not a communication system is a language), and even then it takes time to learn the exact mechanics behind the memorized phrases.

For instance, we learned how to ask how to say something in Japanese: (english word)wa nihongo de nanto iimasuka. Yet we are not told that nihongo means Japanese language (although it can be inferred), and we certainly aren’t told that ~go is a suffix, applied to the word nihon (Japan), which means the language of. In addition, we aren’t told that nan means what, ~wa is a topic particle (and we certainly aren’t told it’s spelled using は instead of わ, because hell, we don’t even know how to write at that point), or that to is a sort of quotation mark (if we are, it is only in passing and without context).

Insights can only be gleamed by comparing the response: (Japanese word)to iimasu. Now it becomes clear that ~ka is a question particle. So yes, nanto became (word)to, so ~to must be some sort of literal marker suffix. iimasu must be “say”, or thereabouts.

My point is that it is very hard for me to memorize phrases or words with no context. The teaching style is designed to help a certain type of learner. My learning style would benefit greatly from learning a variety of grammar and vocabulary separately, and letting my brain concoct the phrases from their base elements; when I speak, it flows logically, and my mind pronounces one morpheme at a time. Learning whole phrases with no context means I can’t break it down into morphemes, and so production of the sounds comes much harder.

Perhaps this will change after we get past the first few weeks, but I can’t help worrying that this sort of learn-specifics-then-learn-rules teaching style will continue.

Surface Pro 3: First Impressions

I received the brand-spanking-new Surface Pro 3 yesterday, and I have to say, I like the direction technology is headed. The Surface is this strange hybrid between netbook and tablet which, while hard to pin down with contemporary vocabulary, fits a certain device niche perfectly.

Surface vs iPad Surface vs Macbook Air
Dimensions compared to an iPad. Dimensions compared to the Macbook Air.

See, I needed a small netbook-style device to unobtrusively take notes on, etc. A tablet wouldn’t cut it because, even with a third-party physical keyboard peripheral, tablet OS’s lack the word processing and file management ease you get with desktop applications. However, netbooks lack the easy deployment and quick search capabilities of phones and tablets. Netbooks have a large vertical form factor, while phones and tablets are almost always laid flat or nearly-flat.

The Surface covers all of these capabilities: it can be a high power tablet or a small laptop. It can be either a largish tablet (although it is similar to an iPad, so not that large) in your lap or flat on the table, or a thin screen with a thinner keyboard, propped at any angle on a desk. With Windows 8 you can alternate between the tablet feel and the PC feel easily. However, it is almost impossible to effectively use any of PC functionality with only the touchscreen; you do need the keyboard and its trackpad. This may stem from the fact that the screen is a high enough resolution that fingers lack the requisite precision to really do anything.

On that note, I don’t know how I feel about Windows 8. This isn’t a specific complaint against the Surface, except to say that the execution of the OS is the worst part about the device. While the hardware pulls from the best qualities of tablets and laptops, Windows 8 pulls from the worst. It just seems confused as to whether its a finger-friendly, simple interface, or a mouse-based system with dumbed-down menus. It relies on a number of contextual gestures to access menus while in finger mode, and it seems to use a combination of hovering and right clicking to reach “advanced” menus with a mouse. This may partially just be a poor UI design paradigm the specific app developers are stuck on and not a fault of the OS, but even in the native Windows menus, I’ve noticed no clear conversion between left and right click, mouse hovering, and mouse dragging versus finger swiping, finger holding, and finger tapping. It makes some parts of the OS more “hand friendly” and others “mouse friendly”.

This only becomes more confused when you take into account the stylus that comes included. It has two buttons on the body and a button on the end, but again, none of the actions map cleanly to any of the other input methods. Nonetheless, the stylus means that the Surface could easily be used as a graphic design tablet, which is a use I hadn’t considered but am now eager to try out.

Lastly, some minutiae. The stand is a little difficult to open, and the fan can get somewhat loud (or at least audible). The speakers are mediocre, and the voice recognition is awful. The case gets hot occasionally, and the trackpad on the keyboard peripheral is annoying to use (the mouse buttons are not well delineated, and it is not possible to disable the overly sensitive tap-to-click feature).

On the other hand, I haven’t noticed battery life issues, and the screen is very high resolution. My version is the 8GB RAM/i5 processor and I have noticed no performance issues (obviously). The App store is a little sparse on touch-friendly programs, but fortunately the whole point is that the Surface functions as a fully capable laptop, so its going to run video editing software and even intensive high-def video games way better than your standard netbook.

At the end of the day, I give the Surface Pro 3 two thumbs up. Good job, Microsoft.

%d bloggers like this: